diff options
Diffstat (limited to 'ishtar_common/models.py')
-rw-r--r-- | ishtar_common/models.py | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/ishtar_common/models.py b/ishtar_common/models.py index 5b5bd8f4e..3c46573dd 100644 --- a/ishtar_common/models.py +++ b/ishtar_common/models.py @@ -832,6 +832,35 @@ class LightHistorizedItem(BaseHistorizedItem): super(LightHistorizedItem, self).save(*args, **kwargs) return True +PARSE_FORMULA = re.compile("{([^}]*)}") + + +def get_external_id(key, item): + profile = get_current_profile() + if not hasattr(profile, key): + return + formula = getattr(profile, key) + dct = {} + for fkey in PARSE_FORMULA.findall(formula): + if fkey.startswith('settings__'): + dct[fkey] = getattr(settings, fkey[len('settings__'):]) or '' + continue + obj = item + for k in fkey.split('__'): + try: + obj = getattr(obj, k) + except ObjectDoesNotExist: + obj = None + if callable(obj): + obj = obj() + if obj is None: + break + if obj is None: + dct[fkey] = '' + else: + dct[fkey] = obj + return formula.format(**dct) + class IshtarSiteProfile(models.Model, Cached): slug_field = 'slug' @@ -850,6 +879,42 @@ class IshtarSiteProfile(models.Model, Cached): _(u"Home page"), null=True, blank=True, help_text=_(u"Homepage of Ishtar - if not defined a default homepage " u"will appear. Use the markdown syntax.")) + file_external_id = models.TextField( + _(u"File external id"), + default="{settings__ISHTAR_LOCAL_PREFIX}{year}-{numeric_reference}", + help_text=_(u"Formula to manage file external ID. " + u"Change this with care. With incorrect formula, the " + u"application might be unusable and import of external " + u"data can be destructive.")) + parcel_external_id = models.TextField( + _(u"Parcel external id"), + default="{associated_file__external_id}{operation__code_patriarche}-" + "{town__numero_insee}-{section}{parcel_number}", + help_text=_(u"Formula to manage parcel external ID. " + u"Change this with care. With incorrect formula, the " + u"application might be unusable and import of external " + u"data can be destructive.")) + context_record_external_id = models.TextField( + _(u"Context record external id"), + default="{parcel__external_id}-{label}", + help_text=_(u"Formula to manage context record external ID. " + u"Change this with care. With incorrect formula, the " + u"application might be unusable and import of external " + u"data can be destructive.")) + base_find_external_id = models.TextField( + _(u"Base find external id"), + default="{context_record__external_id}-{label}", + help_text=_(u"Formula to manage base find external ID. " + u"Change this with care. With incorrect formula, the " + u"application might be unusable and import of external " + u"data can be destructive.")) + find_external_id = models.TextField( + _(u"Find external id"), + default="{get_first_base_find__context_record__external_id}-{label}", + help_text=_(u"Formula to manage find external ID. " + u"Change this with care. With incorrect formula, the " + u"application might be unusable and import of external " + u"data can be destructive.")) active = models.BooleanField(_(u"Current active"), default=False) class Meta: |