diff options
Diffstat (limited to 'archaeological_finds/models_finds.py')
| -rw-r--r-- | archaeological_finds/models_finds.py | 25 | 
1 files changed, 25 insertions, 0 deletions
diff --git a/archaeological_finds/models_finds.py b/archaeological_finds/models_finds.py index 3924ee106..cf58952c9 100644 --- a/archaeological_finds/models_finds.py +++ b/archaeological_finds/models_finds.py @@ -1845,12 +1845,37 @@ class Find(BulkUpdatedItem, ValueGetter, DocumentItem, BaseHistorizedItem,          ("base_finds.", _("List of associated base finds")),      ] +    def get_material_types_code(self) -> str: +        """ +        Return pipe separated material type code inside a container +        """ +        materials = set() +        for material in self.material_types.exclude( +                code__isnull=True).values_list("code", flat=True): +            materials.add(material) +        return "|".join(sorted(materials)) + +    def get_material_types(self) -> str: +        """ +        Return comma separated string of material types inside a container +        """ +        materials = set() +        for material in self.material_types.exclude( +                label__isnull=True).values_list("label", flat=True): +            materials.add(material) +        return ", ".join(sorted(materials)) +      def get_values(self, prefix='', no_values=False, filtr=None, **kwargs):          no_base_finds = False          if "no_base_finds" in kwargs:              no_base_finds = kwargs["no_base_finds"]          values = super(Find, self).get_values(              prefix=prefix, no_values=no_values, filtr=filtr, **kwargs) +        if not filtr or prefix + 'material_types' in filtr: +            values[prefix + 'material_types'] = self.get_material_types() +        if not filtr or prefix + 'material_types_code' in filtr: +            values[prefix + 'material_types_code'] = \ +                self.get_material_types_code()          if no_base_finds:              return values          # by default attach first basefind data  | 
