diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2020-03-20 19:40:24 +0100 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2020-03-20 19:40:24 +0100 |
commit | ef7bc287bd743b01b534cff5b28bbe39268063a5 (patch) | |
tree | d5fc7bd1cb9d8dab4c967fcad6dccba5e6b3517a /ishtar_common/models.py | |
parent | 8d72941c7ba307d8f4541e34f24a957784e9660d (diff) | |
download | Ishtar-ef7bc287bd743b01b534cff5b28bbe39268063a5.tar.bz2 Ishtar-ef7bc287bd743b01b534cff5b28bbe39268063a5.zip |
Refactoring and many fixes on file module
Diffstat (limited to 'ishtar_common/models.py')
-rw-r--r-- | ishtar_common/models.py | 95 |
1 files changed, 95 insertions, 0 deletions
diff --git a/ishtar_common/models.py b/ishtar_common/models.py index 5fa668faf..9b446ff9e 100644 --- a/ishtar_common/models.py +++ b/ishtar_common/models.py @@ -1046,6 +1046,13 @@ class GeneralType(Cached, models.Model): item.generate_key() +def get_general_type_label(model, slug): + obj = model.get_cache(slug) + if not obj: + return "" + return str(obj) + + class HierarchicalType(GeneralType): parent = models.ForeignKey('self', blank=True, null=True, on_delete=models.SET_NULL, @@ -3971,6 +3978,46 @@ class Address(BaseHistorizedItem): class Meta: abstract = True + def get_short_html_items(self): + items = [] + if self.address: + items.append( + """<span class="subadress">{}</span>""".format(self.address)) + if self.address_complement: + items.append( + """<span class="subadress-complement">{}</span>""".format( + self.address_complement)) + if self.postal_code: + items.append( + """<span class="postal-code">{}</span>""".format( + self.postal_code)) + if self.precise_town: + items.append( + """<span class="town">{}</span>""".format( + self.precise_town.name)) + elif self.town: + items.append( + """<span class="town">{}</span>""".format( + self.town)) + if self.country: + items.append( + """<span class="country">{}</span>""".format( + self.country)) + return items + + def get_short_html_detail(self): + html = """<div class="address">""" + items = self.get_short_html_items() + if not items: + items = [ + "<span class='no-address'>{}</span>".format( + _("No associated address") + ) + ] + html += "".join(items) + html += """</div>""" + return html + def get_town_centroid(self): if self.precise_town: return self.precise_town.center, self._meta.verbose_name @@ -4138,6 +4185,20 @@ class OrganizationType(GeneralType): ordering = ('label',) +def get_orga_planning_service_label(): + lbl = get_general_type_label(OrganizationType, "planning_service") + if lbl: + return lbl + return _("Error: planning_service type is missing") + + +def get_orga_general_contractor_label(): + lbl = get_general_type_label(OrganizationType, "general_contractor") + if lbl: + return lbl + return _("Error: general_contractor type is missing") + + post_save.connect(post_save_cache, sender=OrganizationType) post_delete.connect(post_save_cache, sender=OrganizationType) @@ -4259,6 +4320,27 @@ person_type_pk_lazy = lazy(PersonType.get_or_create_pk, str) person_type_pks_lazy = lazy(PersonType.get_or_create_pks, str) +def get_sra_agent_label(): + lbl = get_general_type_label(PersonType, "sra_agent") + if lbl: + return lbl + return _("Error: sra_agent type is missing") + + +def get_general_contractor_label(): + lbl = get_general_type_label(PersonType, "general_contractor") + if lbl: + return lbl + return _("Error: general_contractor type is missing") + + +def get_responsible_planning_service_label(): + lbl = get_general_type_label(PersonType, "responsible_planning_service") + if lbl: + return lbl + return _("Error: responsible_planning_service type is missing") + + class TitleType(GeneralType): class Meta: verbose_name = _("Title type") @@ -4407,6 +4489,19 @@ class Person(Address, Merge, OwnPerms, ValueGetter, MainItem): profile.save() return profile + def get_short_html_items(self): + items = super(Person, self).get_short_html_items() + if items or not self.attached_to: + return items + orga_address = self.attached_to.get_short_html_items() + if not orga_address: + return [] + items.append( + """<span class="organization">{}</span>""".format( + self.attached_to.name)) + items += orga_address + return items + def simple_lbl(self): values = [str(getattr(self, attr)) for attr in ('surname', 'name') if getattr(self, attr)] |