@@ -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 \n Please 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 \n Please 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 """
0 commit comments