Skip to content

Commit 3d34d3f

Browse files
committed
[IMP] area import messages
1 parent ab7985e commit 3d34d3f

2 files changed

Lines changed: 48 additions & 19 deletions

File tree

‎spp_area_base/models/area_import.py‎

Lines changed: 32 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@ class OpenSPPAreaImport(models.Model):
7979

8080
locked = fields.Boolean(default=False)
8181
locked_reason = fields.Text(readonly=True)
82+
missing_languages = fields.Text(readonly=True)
8283

8384
@api.onchange("excel_file")
8485
def excel_file_change(self):
@@ -207,11 +208,27 @@ def after_parse(self):
207208
self.ensure_one()
208209
with_missing_languages = self._validate_languages_activated()
209210
if with_missing_languages:
210-
self.locked = True
211-
self.locked_reason = with_missing_languages
211+
self.update({
212+
"locked": True,
213+
"locked_reason": None,
214+
"missing_languages": with_missing_languages,
215+
})
212216
return
213217
self.import_data()
214218

219+
def activate_languages(self):
220+
"""
221+
Activate the languages found in the import file.
222+
"""
223+
self.ensure_one()
224+
languages = self.env[_res_lang_model].search([("iso_code", "in", self.missing_languages)])
225+
if languages:
226+
languages.write({"active": True})
227+
self.update({
228+
"missing_languages": None,
229+
"locked_reason": None,
230+
"locked": False,
231+
})
215232

216233
def _scan_and_create_parse_jobs(self):
217234
"""
@@ -383,10 +400,21 @@ def import_data(self):
383400
# Validate languages before importing
384401
missing_languages = self._validate_languages_activated()
385402
if missing_languages:
386-
raise ValidationError(missing_languages)
403+
error_message = _(
404+
"The following languages are found in the import file " "but not activated in the system:\n\n"
405+
)
406+
error_message += "\n".join([f" • {lang}" for lang in missing_languages])
407+
error_message += _("\n\nPlease activate these languages in the system before importing.\n")
408+
self.update({
409+
"locked": True,
410+
"locked_reason": None,
411+
"missing_languages": missing_languages,
412+
})
413+
raise ValidationError(error_message)
387414

388415
self.locked = True
389416
self.locked_reason = _("Importing data from JSON files.")
417+
self.missing_languages = None
390418
jobs = []
391419

392420
# Create a job for each JSON file batch
@@ -440,20 +468,7 @@ def _validate_languages_activated(self):
440468

441469
# Check for missing languages
442470
missing_languages = found_languages - active_iso_codes
443-
444-
if missing_languages:
445-
missing_list = sorted(missing_languages)
446-
error_message = _(
447-
"The following languages are found in the import file " "but not activated in the system:\n\n"
448-
)
449-
error_message += "\n".join([f" • {lang}" for lang in missing_list])
450-
error_message += _("\n\nPlease activate these languages in the system before importing.\n")
451-
error_message += _("Go to: Settings > Translations > Languages")
452-
453-
_logger.error("Area Import: Missing languages: %s", ", ".join(missing_languages))
454-
return error_message
455-
456-
return None
471+
return sorted(missing_languages)
457472

458473
def _import_data_from_json(self, json_file_id):
459474
"""

‎spp_area_base/views/area_import_views.xml‎

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
type="object"
2222
string="Import"
2323
class="btn-primary"
24-
invisible="state != 'Parsed'"
24+
invisible="state != 'Parsed' and missing_languages"
2525
/>
2626
<button
2727
name="save_to_area"
@@ -53,7 +53,7 @@
5353
<div
5454
class="alert alert-warning text-center o_form_header"
5555
role="status"
56-
invisible="not locked"
56+
invisible="not locked_reason"
5757
>
5858
<span>Warning: Operation in progress: </span>
5959
<field name="locked_reason" class="o_stat_value" />
@@ -66,6 +66,20 @@
6666
string="Refresh"
6767
/>
6868
</div>
69+
<div
70+
class="alert alert-warning text-center o_form_header"
71+
role="status"
72+
invisible="not missing_languages"
73+
>
74+
<span>Warning: Missing languages: </span>
75+
<field name="missing_languages" class="o_stat_value" />
76+
<button
77+
name="activate_languages"
78+
type="object"
79+
string="Activate Languages"
80+
class="btn-primary"
81+
/>
82+
</div>
6983
<sheet>
7084
<div class="oe_button_box" name="button_box">
7185
</div>

0 commit comments

Comments
 (0)