diff options
| author | Étienne Loks <etienne.loks@iggdrasil.net> | 2017-10-31 18:16:11 +0100 | 
|---|---|---|
| committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2017-10-31 18:16:11 +0100 | 
| commit | b98bfcfe20c9af59f69b7606c0351b4bbf344d00 (patch) | |
| tree | 5da5ddd928f4bdf9eff103e13f6c72d08747899f | |
| parent | 289e153c64ba5c8a87ed60fa1f8f2e7ef9634c78 (diff) | |
| parent | 1c17748090f59acb36883ac114fb9cefdab47963 (diff) | |
| download | Ishtar-b98bfcfe20c9af59f69b7606c0351b4bbf344d00.tar.bz2 Ishtar-b98bfcfe20c9af59f69b7606c0351b4bbf344d00.zip | |
Merge branch 'develop' into develop-bootstrap
| -rw-r--r-- | archaeological_finds/models_finds.py | 8 | ||||
| -rw-r--r-- | archaeological_operations/admin.py | 11 | ||||
| -rw-r--r-- | ishtar_common/admin.py | 1 | ||||
| -rw-r--r-- | ishtar_common/migrations/0020_auto_20171030_1708.py | 26 | ||||
| -rw-r--r-- | ishtar_common/models.py | 30 | ||||
| -rw-r--r-- | ishtar_common/tests.py | 6 | ||||
| -rw-r--r-- | ishtar_common/views.py | 2 | ||||
| -rw-r--r-- | ishtar_common/widgets.py | 6 | 
8 files changed, 79 insertions, 11 deletions
| diff --git a/archaeological_finds/models_finds.py b/archaeological_finds/models_finds.py index 8052601bf..65850d4dc 100644 --- a/archaeological_finds/models_finds.py +++ b/archaeological_finds/models_finds.py @@ -543,7 +543,7 @@ class Find(BulkUpdatedItem, ValueGetter, BaseHistorizedItem, ImageModel,      CHECK_DICT = dict(CHECK_CHOICES)      SHOW_URL = 'show-find'      SLUG = 'find' -    TABLE_COLS = ['label', 'base_finds__context_record__parcel__town', +    TABLE_COLS = ['label', 'base_finds__context_record__parcel__town__name',                    'base_finds__context_record__operation__common_name',                    'base_finds__context_record__parcel',                    'base_finds__context_record__label', @@ -562,7 +562,7 @@ class Find(BulkUpdatedItem, ValueGetter, BaseHistorizedItem, ImageModel,          'container__cached_label',          'container__cahed_location',          'description', -        'base_finds__context_record__parcel__town', +        'base_finds__context_record__parcel__town__name',          'base_finds__context_record__parcel', ]      COL_LABELS = {          'base_finds__context_record__label': _(u"Context record"), @@ -571,7 +571,7 @@ class Find(BulkUpdatedItem, ValueGetter, BaseHistorizedItem, ImageModel,          'base_finds__context_record__operation__code_patriarche': _(              u"Operation (code)"          ), -        'base_finds__context_record__parcel__town': _(u"Town"), +        'base_finds__context_record__parcel__town__name': _(u"Town"),          'base_finds__context_record__operation__common_name': _(              u"Operation (name)"          ), @@ -622,7 +622,7 @@ class Find(BulkUpdatedItem, ValueGetter, BaseHistorizedItem, ImageModel,          '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__parcel__town__pk',          'base_finds__context_record__operation__year':              'base_finds__context_record__operation__year__contains',          'base_finds__context_record__operation': diff --git a/archaeological_operations/admin.py b/archaeological_operations/admin.py index bf1415989..53c931971 100644 --- a/archaeological_operations/admin.py +++ b/archaeological_operations/admin.py @@ -46,6 +46,7 @@ class AdministrativeActAdmin(HistorizedObjectAdmin):          models.AdministrativeAct, {'operation': 'operation'}      ) +  admin_site.register(models.AdministrativeAct, AdministrativeActAdmin) @@ -55,6 +56,7 @@ class PeriodAdmin(admin.ModelAdmin):      list_filter = ('parent',)      model = models.Period +  admin_site.register(models.Period, PeriodAdmin) @@ -71,6 +73,7 @@ class ArchaeologicalSiteAdmin(HistorizedObjectAdmin):      model = models.ArchaeologicalSite      inlines = [OperationInline] +  admin_site.register(models.ArchaeologicalSite, ArchaeologicalSiteAdmin) @@ -115,6 +118,7 @@ class OperationAdmin(HistorizedObjectAdmin):      form = AdminOperationForm      inlines = [ArchaeologicalSiteInline] +  admin_site.register(models.Operation, OperationAdmin) @@ -128,6 +132,7 @@ class OperationSourceAdmin(admin.ModelAdmin):                  'authors': 'author'}      ) +  admin_site.register(models.OperationSource, OperationSourceAdmin) @@ -146,6 +151,7 @@ class ParcelAdmin(HistorizedObjectAdmin):          'history_date'      ] +  admin_site.register(models.Parcel, ParcelAdmin) @@ -159,6 +165,7 @@ class RecordRelationsAdmin(admin.ModelAdmin):          model, {'left_record': 'operation',                  'right_record': 'operation'}) +  admin_site.register(models.RecordRelations, RecordRelationsAdmin) @@ -166,6 +173,7 @@ class RelationTypeAdmin(admin.ModelAdmin):      list_display = ('label', 'txt_idx', 'tiny_label', 'available',                      'symmetrical', 'inverse_relation', 'comment') +  admin_site.register(models.RelationType, RelationTypeAdmin) @@ -173,12 +181,14 @@ class ActTypeAdmin(GeneralTypeAdmin):      list_filter = ('intented_to',)      list_display = ['label', 'txt_idx', 'available', 'intented_to'] +  admin_site.register(models.ActType, ActTypeAdmin)  class ReportStateAdmin(GeneralTypeAdmin):      list_display = ['label', 'txt_idx', 'available', 'order', 'comment'] +  admin_site.register(models.ReportState, ReportStateAdmin) @@ -198,6 +208,7 @@ class ParcelOwnerAdmin(HistorizedObjectAdmin):          'history_date'      ] +  admin_site.register(models.ParcelOwner, ParcelOwnerAdmin) diff --git a/ishtar_common/admin.py b/ishtar_common/admin.py index 45e4f7038..227f7ba25 100644 --- a/ishtar_common/admin.py +++ b/ishtar_common/admin.py @@ -222,6 +222,7 @@ class TownAdmin(admin.ModelAdmin):          list_filter = ("departement",)      form = AdminTownForm      inlines = [TownParentInline] +    actions = [export_as_csv_action(exclude=['center', 'limit'])]  admin_site.register(models.Town, TownAdmin) diff --git a/ishtar_common/migrations/0020_auto_20171030_1708.py b/ishtar_common/migrations/0020_auto_20171030_1708.py new file mode 100644 index 000000000..d83a90295 --- /dev/null +++ b/ishtar_common/migrations/0020_auto_20171030_1708.py @@ -0,0 +1,26 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11 on 2017-10-30 17:08 +from __future__ import unicode_literals + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + +    dependencies = [ +        ('ishtar_common', '0019_auto_20171026_1827'), +    ] + +    operations = [ +        migrations.AlterField( +            model_name='town', +            name='departement', +            field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='ishtar_common.Department', verbose_name='Department'), +        ), +        migrations.AlterField( +            model_name='town', +            name='numero_insee', +            field=models.CharField(max_length=120, verbose_name='Code commune (num\xe9ro INSEE)'), +        ), +    ] diff --git a/ishtar_common/models.py b/ishtar_common/models.py index 14869e2a5..678564dda 100644 --- a/ishtar_common/models.py +++ b/ishtar_common/models.py @@ -44,7 +44,7 @@ from django.core.validators import validate_slug  from django.core.urlresolvers import reverse, NoReverseMatch  from django.db.utils import DatabaseError  from django.db.models import Q, Max, Count -from django.db.models.signals import post_save, post_delete +from django.db.models.signals import post_save, post_delete, m2m_changed  from django.utils.functional import lazy  from django.utils.translation import ugettext_lazy as _ @@ -2668,10 +2668,10 @@ class Town(Imported, models.Model):      center = models.PointField(_(u"Localisation"), srid=settings.SRID,                                 blank=True, null=True)      limit = models.MultiPolygonField(_(u"Limit"), blank=True, null=True) -    if settings.COUNTRY == 'fr': -        numero_insee = models.CharField(u"Numéro INSEE", max_length=6) -        departement = models.ForeignKey( -            Department, verbose_name=u"Département", null=True, blank=True) +    numero_insee = models.CharField(u"Code commune (numéro INSEE)", +                                    max_length=120) +    departement = models.ForeignKey( +        Department, verbose_name=_(u"Department"), null=True, blank=True)      year = models.IntegerField(          _("Year of creation"), null=True, blank=True,          help_text=_(u"Filling this field is relevant to distinguish old towns " @@ -2745,6 +2745,15 @@ class Town(Imported, models.Model):          self.save()          return True +    def update_town_code(self): +        if not self.numero_insee or not self.children.count() or not self.year: +            return +        old_num = self.numero_insee[:] +        numero = old_num.split('-')[0] +        self.numero_insee = u"{}-{}".format(numero, self.year) +        if self.numero_insee != old_num: +            return True +      def _generate_cached_label(self):          cached_label = self.name          if settings.COUNTRY == "fr": @@ -2758,11 +2767,22 @@ def post_save_town(sender, **kwargs):      cached_label_changed(sender, **kwargs)      town = kwargs['instance']      town.generate_geo() +    if town.update_town_code(): +        town.save()  post_save.connect(post_save_town, sender=Town) +def town_child_changed(sender, **kwargs): +    town = kwargs['instance'] +    if town.update_town_code(): +        town.save() + + +m2m_changed.connect(town_child_changed, sender=Town.children.through) + +  class OperationType(GeneralType):      order = models.IntegerField(_(u"Order"), default=1)      preventive = models.BooleanField(_(u"Is preventive"), default=True) diff --git a/ishtar_common/tests.py b/ishtar_common/tests.py index e107bd6fb..63d80d5ab 100644 --- a/ishtar_common/tests.py +++ b/ishtar_common/tests.py @@ -126,6 +126,7 @@ class CommandsTestCase(TestCase):          q = models.Town.objects          town_nb = q.count()          first, union_start, union_end = '', '', [] +        new_nums = []          for idx, town in enumerate(q.all()):              x1 = float(idx) / 10              if not x1: @@ -140,6 +141,8 @@ class CommandsTestCase(TestCase):              union_start += '{x2} 0.1'.format(x1=x1, x2=x2)              union_end.append('{x2} 0'.format(x1=x1, x2=x2))              town.limit = l +            town.year = 1792 +            new_nums.append("{}-{}".format(town.numero_insee, town.year))              town.save()          union = 'MULTIPOLYGON (((' + first + ", " + union_start + \              ", " + ", ".join(reversed(union_end)) + ", 0 0, " + first + ")))" @@ -157,6 +160,9 @@ class CommandsTestCase(TestCase):          # no new town          self.assertEqual(town_nb + 1, models.Town.objects.count()) +        for parent_town in new.parents.all(): +            self.assertIn(parent_town.numero_insee, new_nums) +  class WizardTestFormData(object):      """ diff --git a/ishtar_common/views.py b/ishtar_common/views.py index 8d475aff5..d8c5b1997 100644 --- a/ishtar_common/views.py +++ b/ishtar_common/views.py @@ -581,6 +581,8 @@ def format_val(val):              return unicode(_(u"True"))          else:              return unicode(_(u"False")) +    if type(val) == str: +        val = val.decode('utf-8')      return unicode(val)  HIERARCHIC_LEVELS = 5 diff --git a/ishtar_common/widgets.py b/ishtar_common/widgets.py index 4efb4c3fb..1ddabe7c7 100644 --- a/ishtar_common/widgets.py +++ b/ishtar_common/widgets.py @@ -776,8 +776,10 @@ class JQueryJqGrid(forms.RadioSelect):          except NoReverseMatch:              logger.warning('Cannot resolve source for {} widget'.format(                  self.form)) -        if unicode(self.source_full) and unicode(self.source_full) != 'None': -            dct['source_full'] = unicode(self.source_full) + +        # full CSV export currently disabled +        #if unicode(self.source_full) and unicode(self.source_full) != 'None': +        #    dct['source_full'] = unicode(self.source_full)          dct['extra_sources'] = []          if self.associated_model: | 
