diff options
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)]  | 
