Fixed conflict for the Schemas.name getter

This commit is contained in:
Elijah 2024-01-22 15:08:01 +01:00
parent f39c915c9c
commit 0c45d05fdd

View file

@ -483,13 +483,12 @@ class Schemas(models.Model):
return {} return {}
return json.loads(self.data) return json.loads(self.data)
#<<<<<<< HEAD def _update_and_get_field(self, field_attr, schema_key, is_json=False):
def _update_and_get_field(self, field_attr, schema_key):
field_value = getattr(self, field_attr) field_value = getattr(self, field_attr)
if not field_value: if not field_value:
field_value = self.get_schema.get(schema_key, '') field_value = self.get_schema.get(schema_key, [] if is_json else '')
self._update_model_field(field_attr, field_value) self._update_model_field(field_attr, field_value)
return field_value return json.loads(field_value) if is_json else field_value
def _update_model_field(self, field_attr, field_value): def _update_model_field(self, field_attr, field_value):
if field_value: if field_value:
@ -497,29 +496,38 @@ class Schemas(models.Model):
self.save(update_fields=[field_attr]) self.save(update_fields=[field_attr])
@property @property
def name(self): def name(self, request=None):
return self._update_and_get_field('_name', 'name') names = self._update_and_get_field('_name', 'name',
is_json=True)
language_code = self._get_language_code(request)
name = self._get_name_by_language(names, language_code)
return name
def _get_language_code(self, request=None):
language_code = settings.LANGUAGE_CODE
if request:
language_code = request.LANGUAGE_CODE
if self._is_catalan_code(language_code):
language_code = 'ca'
return language_code
def _get_name_by_language(self, names, lang_code):
for name in names:
if name.get('lang') == lang_code:
return name.get('value')
return None
def _is_catalan_code(self, language_code):
return language_code == 'ca_ES'
@name.setter @name.setter
def name(self, value): def name(self, value):
self._name = value self._name = json.dumps(value)
@property @property
#=======
def name(self, request=None):
names = {}
for name in self.get_schema.get('name', []):
lang = name.get('lang')
if 'ca' in lang:
lang = 'ca'
names[lang]= name.get('value')
if request and request.LANGUAGE_CODE in names.keys():
return names[request.LANGUAGE_CODE]
return names[settings.LANGUAGE_CODE]
#>>>>>>> main
def description(self): def description(self):
return self._update_and_get_field('_description', 'description') return self._update_and_get_field('_description', 'description')