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 | 54970e5dd633e6c9971ea1a2bc594950a851bd90 (patch) | |
tree | 5da5ddd928f4bdf9eff103e13f6c72d08747899f | |
parent | c48273fbf6e11e4e373a6f218496dc4764625b3e (diff) | |
parent | cdfcbddf13e02ceec6946da01b08cccb40d8cb9e (diff) | |
download | Ishtar-54970e5dd633e6c9971ea1a2bc594950a851bd90.tar.bz2 Ishtar-54970e5dd633e6c9971ea1a2bc594950a851bd90.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: |