diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2016-08-29 17:45:25 +0200 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2016-08-29 17:45:25 +0200 |
commit | 1d2864b2e9494ca1ee0b10424a72a5c1e49eb54a (patch) | |
tree | 2e7f6419ee92d28398b824c18d94aae959e96372 /ishtar_common/models.py | |
parent | 8afe0cd9b3e515b121cdf0e1f95850d28b9e84a7 (diff) | |
parent | a408afc5c3c964581ba99eb3d65a821e9f4561ac (diff) | |
download | Ishtar-1d2864b2e9494ca1ee0b10424a72a5c1e49eb54a.tar.bz2 Ishtar-1d2864b2e9494ca1ee0b10424a72a5c1e49eb54a.zip |
Merge branch 'master' into v0.9
Diffstat (limited to 'ishtar_common/models.py')
-rw-r--r-- | ishtar_common/models.py | 32 |
1 files changed, 30 insertions, 2 deletions
diff --git a/ishtar_common/models.py b/ishtar_common/models.py index 51cb16157..6228ea1d0 100644 --- a/ishtar_common/models.py +++ b/ishtar_common/models.py @@ -850,6 +850,13 @@ class LightHistorizedItem(BaseHistorizedItem): PARSE_FORMULA = re.compile("{([^}]*)}") +FORMULA_FILTERS = { + 'upper': lambda x: x.upper(), + 'lower': lambda x: x.lower(), + 'capitalize': lambda x: x.capitalize(), + 'slug': lambda x: slugify(x) +} + def get_external_id(key, item): profile = get_current_profile() @@ -858,6 +865,13 @@ def get_external_id(key, item): formula = getattr(profile, key) dct = {} for fkey in PARSE_FORMULA.findall(formula): + filtered = fkey.split(u'|') + initial_key = fkey[:] + fkey = filtered[0] + filters = [] + for filtr in filtered[1:]: + if filtr in FORMULA_FILTERS: + filters.append(FORMULA_FILTERS[filtr]) if fkey.startswith('settings__'): dct[fkey] = getattr(settings, fkey[len('settings__'):]) or '' continue @@ -872,9 +886,11 @@ def get_external_id(key, item): if obj is None: break if obj is None: - dct[fkey] = '' + dct[initial_key] = '' else: - dct[fkey] = obj + dct[initial_key] = unicode(obj) + for filtr in filters: + dct[initial_key] = filtr(dct[initial_key]) return formula.format(**dct) CURRENCY = ((u"€", _(u"Euro")), @@ -934,6 +950,13 @@ class IshtarSiteProfile(models.Model, Cached): u"Change this with care. With incorrect formula, the " u"application might be unusable and import of external " u"data can be destructive.")) + person_raw_name = models.TextField( + _(u"Raw name for person"), + default="{name|upper} {surname}", + help_text=_(u"Formula to manage person raw_name. " + 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) currency = models.CharField(_(u"Currency"), default=u"€", choices=CURRENCY, max_length='5') @@ -2364,6 +2387,11 @@ class Person(Address, Merge, OwnPerms, ValueGetter): def save(self, *args, **kwargs): super(Person, self).save(*args, **kwargs) + if not self.raw_name: + self.raw_name = get_external_id( + 'person_raw_name', self) + if self.raw_name: + self.save() if hasattr(self, 'responsible_town_planning_service'): for fle in self.responsible_town_planning_service.all(): fle.save() # force update of raw_town_planning_service |