summaryrefslogtreecommitdiff
path: root/ishtar_common/models.py
diff options
context:
space:
mode:
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
commitef7bc287bd743b01b534cff5b28bbe39268063a5 (patch)
treed5fc7bd1cb9d8dab4c967fcad6dccba5e6b3517a /ishtar_common/models.py
parent8d72941c7ba307d8f4541e34f24a957784e9660d (diff)
downloadIshtar-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.py95
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)]