diff options
| author | Étienne Loks <etienne.loks@iggdrasil.net> | 2017-03-21 23:53:23 +0100 | 
|---|---|---|
| committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2017-03-21 23:53:23 +0100 | 
| commit | 9eacb3f2b2f5819ef3eea1a54bb2c4bfb13efda6 (patch) | |
| tree | 2a2b687acef6f878c05f7148a150c10c3a7fb71a /archaeological_operations/models.py | |
| parent | 8eb09a666e7048ce8e531649566418670d94036d (diff) | |
| parent | c00bb6298a602f74c55cfd60b8601295470a8e3b (diff) | |
| download | Ishtar-9eacb3f2b2f5819ef3eea1a54bb2c4bfb13efda6.tar.bz2 Ishtar-9eacb3f2b2f5819ef3eea1a54bb2c4bfb13efda6.zip | |
Merge branch 'master' into v0.9
Conflicts:
	Makefile.example
	archaeological_operations/migrations/0061_regenerate_cached_label.py
	archaeological_warehouse/migrations/0024_generate_cache_lbl_for_containers.py
Diffstat (limited to 'archaeological_operations/models.py')
| -rw-r--r-- | archaeological_operations/models.py | 54 | 
1 files changed, 44 insertions, 10 deletions
| diff --git a/archaeological_operations/models.py b/archaeological_operations/models.py index bc2169009..e741f5644 100644 --- a/archaeological_operations/models.py +++ b/archaeological_operations/models.py @@ -227,7 +227,7 @@ class Operation(ClosedItem, BaseHistorizedItem, ImageModel, OwnPerms,          'context_record__base_finds__find__upstream_treatment__id'      } -    EXTRA_FULL_FIELDS_LABELS = { +    COL_LABELS = {          'full_code_patriarche': u"Code patriarche",          'associated_file_short_label': _(u"Associated file (label)"),          'operator__name': _(u"Operator name"), @@ -331,6 +331,7 @@ class Operation(ClosedItem, BaseHistorizedItem, ImageModel, OwnPerms,      operator_reference = models.CharField(          _(u"Operator reference"), max_length=20, null=True, blank=True)      common_name = models.TextField(_(u"Generic name"), null=True, blank=True) +    address = models.TextField(_(u"Address / Locality"), null=True, blank=True)      comment = models.TextField(_(u"General comment"), null=True, blank=True)      scientific_documentation_comment = models.TextField(          _(u"Comment about scientific documentation"), null=True, blank=True) @@ -404,6 +405,10 @@ class Operation(ClosedItem, BaseHistorizedItem, ImageModel, OwnPerms,          return _(u"OPE")      @property +    def external_id(self): +        return self.code_patriarche + +    @property      def short_label(self):          if settings.COUNTRY == 'fr':              return self.reference @@ -417,6 +422,10 @@ class Operation(ClosedItem, BaseHistorizedItem, ImageModel, OwnPerms,      def show_url(self):          return reverse('show-operation', args=[self.pk, '']) +    def towns_codes(self): +        return [u"{} ({})".format(town.name, town.numero_insee) for town in +                self.towns.all()] +      def has_finds(self):          from archaeological_finds.models import BaseFind          return BaseFind.objects.filter(context_record__operation=self).count() @@ -498,6 +507,12 @@ class Operation(ClosedItem, BaseHistorizedItem, ImageModel, OwnPerms,          return FindSource.objects.filter(              find__base_finds__context_record__operation=self) +    def containers_q(self): +        from archaeological_warehouse.models import Container +        return Container.objects.filter( +            finds__base_finds__context_record__operation=self +        ) +      associated_file_short_label_lbl = _(u"Archaeological file")      full_code_patriarche_lbl = _(u"Code patriarche") @@ -843,8 +858,8 @@ class OperationByDepartment(models.Model):  class OperationSource(Source):      SHOW_URL = 'show-operationsource'      MODIFY_URL = 'operation_source_modify' -    TABLE_COLS = ['operation.year', 'operation.operation_code', 'index'] + \ -        Source.TABLE_COLS +    TABLE_COLS = ['operation__code_patriarche', 'operation__year', +                  'operation__operation_code', 'code'] + Source.TABLE_COLS      # search parameters      BOOL_FIELDS = ['duplicate'] @@ -859,6 +874,11 @@ class OperationSource(Source):          'operation__code_patriarche': 'operation__code_patriarche',          'operation__operation_type': 'operation__operation_type__pk',          'operation__year': 'operation__year'} +    COL_LABELS = { +        'operation__year': _(u"Operation year"), +        'operation__operation_code': _(u"Operation code"), +        'code': _(u"Document code") +    }      # fields      operation = models.ForeignKey(Operation, verbose_name=_(u"Operation"), @@ -886,6 +906,11 @@ class OperationSource(Source):      def owner(self):          return self.operation +    @property +    def code(self): +        return u"{}-{:04d}".format(self.operation.code_patriarche or '', +                                   self.index) +  class ActType(GeneralType):      TYPE = (('F', _(u'Archaeological file')), @@ -969,6 +994,7 @@ class AdministrativeAct(BaseHistorizedItem, OwnPerms, ValueGetter):      REVERSED_BOOL_FIELDS = ['index__isnull']      RELATIVE_SESSION_NAMES = [('operation', 'operation__pk'),                                ('file', 'associated_file__pk')] +    COL_LABELS = {'full_ref': _(u"Ref.")}      # fields      act_type = models.ForeignKey(ActType, verbose_name=_(u"Act type")) @@ -1647,7 +1673,7 @@ class OperationDashboard:                          .annotate(number=Sum('surface')).all()                      val = 0                      if area_res: -                        val = area_res[0].number +                        val = (area_res[0].number or 0) / 10000.0                      dct_res[res_key].append(val)              # TODO...              res_keys = [('manday_realised', current_realisation_year_ope)] @@ -1682,7 +1708,11 @@ class OperationDashboard:                      .annotate(area=Sum('surface'))\                      .order_by('scientist__attached_to__name').all()                  # TODO: man-days, man-days/hectare -                dct_res[res_key] = org_res + +                dct_res[res_key] = [] +                for vals in org_res: +                    vals['area'] = (vals['area'] or 0) / 10000.0 +                    dct_res[res_key].append(vals)              year_ope = Operation.objects.filter(**operation_type)              res_keys = ['org_by_year'] @@ -1717,7 +1747,7 @@ class OperationDashboard:                                                 cost=Sum('cost'))                      years_dct = {}                      for yr in org_res.all(): -                        area = yr['area'] if yr['area'] else 0 +                        area = (yr['area'] if yr['area'] else 0) / 10000.0                          cost = yr['cost'] if yr['cost'] else 0                          years_dct[yr[key_date]] = (area, cost)                      r_years = [] @@ -1748,7 +1778,8 @@ class OperationDashboard:                  self.survey['effective'] = []                  for yr in self.years:                      year_res = Operation.objects\ -                        .filter(scientist__isnull=False, year=yr)\ +                        .filter(scientist__isnull=False, year=yr, +                                operation_type__txt_idx__in=ope_types)\                          .annotate(number=Sum('surface'), mean=Avg('surface'))                      nb = year_res[0].number if year_res.count() else 0                      nb = nb if nb else 0 @@ -1820,9 +1851,12 @@ class OperationDashboard:                  dct_years = {}                  for v in vals:                      values = [] -                    for value in (v['number'], v['area'], v['cost'], -                                  v['fnap']): -                        values.append(value if value else 0) +                    for k in ('number', 'area', 'cost', 'fnap'): +                        value = v[k] or 0 +                        if k == 'area': +                            value /= 10000.0 +                        values.append(value) +                      dct_years[v['operation__year']] = values                  years = []                  for y in self.years: | 
