diff options
| author | Étienne Loks <etienne.loks@iggdrasil.net> | 2016-10-22 13:41:02 +0200 | 
|---|---|---|
| committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2016-10-22 13:41:02 +0200 | 
| commit | dafc5d16f3095bad00356b6198afcd5bbeab61d6 (patch) | |
| tree | 7040d1fd325ba67b890122059a8f50a3857e332a /archaeological_finds/models.py | |
| parent | 64bb69c03ce1688c72b3f7ebd0e1550cd941aa69 (diff) | |
| parent | 0ecd905165193897129a71a1e8203232f0b2b68c (diff) | |
| download | Ishtar-dafc5d16f3095bad00356b6198afcd5bbeab61d6.tar.bz2 Ishtar-dafc5d16f3095bad00356b6198afcd5bbeab61d6.zip | |
Merge branch 'master' into v0.9
Diffstat (limited to 'archaeological_finds/models.py')
| -rw-r--r-- | archaeological_finds/models.py | 97 | 
1 files changed, 84 insertions, 13 deletions
| diff --git a/archaeological_finds/models.py b/archaeological_finds/models.py index 5581df084..5799d0e9a 100644 --- a/archaeological_finds/models.py +++ b/archaeological_finds/models.py @@ -327,6 +327,46 @@ class Find(BaseHistorizedItem, ImageModel, OwnPerms, ShortMenuItem):          'base_finds.discovery_date': _(u"Base find - Discovery date"),      }      ATTRS_EQUIV = {'get_first_base_find': 'base_finds'} + +    # search parameters +    REVERSED_BOOL_FIELDS = ['image__isnull'] +    RELATION_TYPES_PREFIX = { +        'ope_relation_types': +        'base_finds__context_record__operation__'} +    RELATIVE_SESSION_NAMES = [ +        ('contextrecord', 'base_finds__context_record__pk'), +        ('operation', 'base_finds__context_record__operation__pk'), +        ('file', 'base_finds__context_record__operation__associated_file__pk') +    ] +    BASE_REQUEST = {'downstream_treatment__isnull': True} +    EXTRA_REQUEST_KEYS = { +        'base_finds__cache_short_id': +            'base_finds__cache_short_id__icontains', +        'base_finds__cache_complete_id': +            'base_finds__cache_complete_id__icontains', +        'label': +            'label__icontains', +        'base_finds__context_record': +            'base_finds__context_record__pk', +        'base_finds__context_record__parcel__town': +            'base_finds__context_record__parcel__town', +        'base_finds__context_record__operation__year': +            'base_finds__context_record__operation__year__contains', +        'base_finds__context_record__operation': +            'base_finds__context_record__operation__pk', +        'archaeological_sites': +            'base_finds__context_record__operation__archaeological_sites__pk', +        'base_finds__context_record__operation__code_patriarche': +            'base_finds__context_record__operation__code_patriarche', +        'datings__period': 'datings__period__pk', +        'base_finds__find__description': +            'base_finds__find__description__icontains', +        'base_finds__batch': 'base_finds__batch', +        'basket': 'basket', +        'cached_label': 'cached_label__icontains', +        'image': 'image__isnull'} + +    # fields      base_finds = models.ManyToManyField(BaseFind, verbose_name=_(u"Base find"),                                          related_name='find')      external_id = models.TextField(_(u"External ID"), blank=True, null=True) @@ -594,7 +634,9 @@ class Find(BaseHistorizedItem, ImageModel, OwnPerms, ShortMenuItem):          owns = super(Find, cls).get_owns(              user, replace_query=replace_query,              limit=limit) -        return sorted(owns, key=lambda x: x.cached_label) +        return sorted( +            owns, key=lambda x: x.cached_label +            if hasattr(x, 'cached_label') else unicode(x))      def _generate_cached_label(self):          return unicode(self) @@ -603,6 +645,7 @@ class Find(BaseHistorizedItem, ImageModel, OwnPerms, ShortMenuItem):          super(Find, self).save(*args, **kwargs)          updated = False +        self.skip_history_when_saving = True          if not self.external_id or self.auto_external_id:              external_id = get_external_id('find_external_id', self)              if external_id != self.external_id: @@ -636,19 +679,16 @@ class Find(BaseHistorizedItem, ImageModel, OwnPerms, ShortMenuItem):                  modified = True                  base_find.index = BaseFind.get_max_index(                      base_find.context_record.operation) + 1 -            if not base_find.cache_short_id or \ -                    not base_find.cache_short_id.endswith( -                        unicode(base_find.index)): -                base_find.cache_short_id = base_find.short_id() -                if base_find.cache_short_id: -                    modified = True -            if not base_find.cache_complete_id or \ -                    not base_find.cache_complete_id.endswith( -                        unicode(base_find.index)): -                base_find.cache_complete_id = base_find.complete_id() -                if base_find.cache_complete_id: -                    modified = True +            short_id = base_find.short_id() +            if base_find.cache_short_id != short_id: +                base_find.cache_short_id = short_id +                modified = True +            complete_id = base_find.complete_id() +            if base_find.cache_complete_id != complete_id: +                base_find.cache_complete_id = complete_id +                modified = True              if modified: +                base_find.skip_history_when_saving = True                  base_find.save()              # if not base_find.material_index:              #    idx = BaseFind.objects\ @@ -679,6 +719,31 @@ class FindSource(Source):                    'find__base_finds__context_record', 'find'] + \          Source.TABLE_COLS +    # search parameters +    BOOL_FIELDS = ['duplicate'] +    RELATIVE_SESSION_NAMES = [ +        ('find', 'find__pk'), +        ('contextrecord', 'find__base_finds__context_record__pk'), +        ('operation', 'find__base_finds__context_record__operation__pk'), +        ('file', +         'find__base_finds__context_record__operation__associated_file__pk') +    ] +    EXTRA_REQUEST_KEYS = { +        'title': 'title__icontains', +        'description': 'description__icontains', +        'comment': 'comment__icontains', +        'additional_information': 'additional_information__icontains', +        'person': 'authors__person__pk', +        'find__base_finds__context_record__operation__year': +        'find__base_finds__context_record__operation__year', +        'find__base_finds__context_record__operation__operation_code': +        'find__base_finds__context_record__operation__operation_code', +        'find__base_finds__context_record__operation__code_patriarche': +        'find__base_finds__context_record__operation__code_patriarche', +        'find__datings__period': 'find__datings__period__pk', +        'find__description': 'find__description__icontains', +    } +      class Meta:          verbose_name = _(u"Find documentation")          verbose_name_plural = _(u"Find documentations") @@ -846,6 +911,9 @@ class FindUpstreamTreatments(AbsFindTreatments):                    'treatment__location', 'treatment__container',                    'treatment__person', 'treatment_nb'] +    # search parameters +    EXTRA_REQUEST_KEYS = {'find_id': 'find_id'} +      class Meta:          managed = False          db_table = 'find_uptreatments' @@ -887,6 +955,9 @@ class FindDownstreamTreatments(AbsFindTreatments):                    'treatment__location', 'treatment__container',                    'treatment__person', 'treatment_nb'] +    # search parameters +    EXTRA_REQUEST_KEYS = {'find_id': 'find_id'} +      class Meta:          managed = False          db_table = 'find_downtreatments' | 
