diff options
Diffstat (limited to 'archaeological_operations/models.py')
| -rw-r--r-- | archaeological_operations/models.py | 36 | 
1 files changed, 36 insertions, 0 deletions
| diff --git a/archaeological_operations/models.py b/archaeological_operations/models.py index 637bbb7be..c4d7e489c 100644 --- a/archaeological_operations/models.py +++ b/archaeological_operations/models.py @@ -84,6 +84,9 @@ class ReportState(GeneralType):  post_save.connect(post_save_cache, sender=ReportState)  post_delete.connect(post_save_cache, sender=ReportState) +class SiteManager(models.Manager): +    def get_by_natural_key(self, txt_idx): +        return self.get(reference=txt_idx)  class RecordQualityType(GeneralType):      order = models.IntegerField(_(u"Order")) @@ -185,6 +188,7 @@ class ArchaeologicalSite(BaseHistorizedItem, OwnPerms, ValueGetter,              activate(language_code)              EXTRA_REQUEST_KEYS[unicode(v[0])] = v[1]              deactivate() +    objects = SiteManager()      reference = models.CharField(_(u"Reference"), max_length=200, unique=True)      name = models.CharField(_(u"Name"), max_length=200, @@ -265,6 +269,9 @@ class ArchaeologicalSite(BaseHistorizedItem, OwnPerms, ValueGetter,                  ]))          return name +    def natural_key(self): +        return (self.reference, ) +      @property      def external_id(self):          return self.reference @@ -379,6 +386,10 @@ class ClosedItem(object):                  user = q.all()[0]          return {'date': date, 'user': user} +class OperationManager(models.Manager): +    def get_by_natural_key(self, txt_idx): +        return self.get(code_patriarche=txt_idx) +  class Operation(ClosedItem, BaseHistorizedItem, OwnPerms, ValueGetter,                  ShortMenuItem, DashboardFormItem, RelationItem): @@ -481,6 +492,7 @@ class Operation(ClosedItem, BaseHistorizedItem, OwnPerms, ValueGetter,              )          },      } +    objects = OperationManager()      # alternative names of fields for searches      ALT_NAMES = { @@ -783,6 +795,9 @@ class Operation(ClosedItem, BaseHistorizedItem, OwnPerms, ValueGetter,          )          ordering = ('cached_label',) +    def natural_key(self): +        return (self.code_patriarche, ) +      @classmethod      def get_owns(cls, user, menu_filtr=None, limit=None, values=None,                   get_short_menu_class=None): @@ -1811,10 +1826,24 @@ def strip_zero(value):      return value +class ParcelManager(models.Manager): +    def get_by_natural_key(self, associated_file, operation, year, town_insee, +                           town_year, section, parcel_number): +        q = {"year": year, "town__numero_insee": town_insee, +             "town__year": town_year, +             "section": section, "parcel_number": parcel_number} +        if associated_file: +            q['associated_file__external_id'] = associated_file +        if operation: +            q['operation__code_patriarche'] = operation +        return self.get(**q) + +  class Parcel(LightHistorizedItem):      EXTERNAL_ID_KEY = 'parcel_external_id'      BASE_SEARCH_VECTORS = ['section', 'parcel_number']      PARENT_SEARCH_VECTORS = ['operation'] +    objects = ParcelManager()      associated_file = models.ForeignKey(          'archaeological_files.File', @@ -1855,6 +1884,13 @@ class Parcel(LightHistorizedItem):      def __unicode__(self):          return self.short_label +    def natural_key(self): +        return ( +            self.associated_file.external_id if self.associated_file else '', +            self.operation.code_patriarche if self.operation else '', +            self.year, self.town.numero_insee, self.town.year, self.section, +            self.parcel_number) +      """      def merge(self, parcel):          # cannot automatically merge | 
