From 9f8e22e404f30b0c26933ebc85efdb416cc7bca4 Mon Sep 17 00:00:00 2001 From: Étienne Loks Date: Tue, 6 Oct 2020 19:44:11 +0200 Subject: Complete identifier field: database - profile settings - save --- .../migrations/0104_auto_20201007_1215.py | 39 ++++++++++++++++++++++ archaeological_operations/models.py | 10 +++--- archaeological_operations/tests.py | 26 ++++++++++++++- 3 files changed, 69 insertions(+), 6 deletions(-) create mode 100644 archaeological_operations/migrations/0104_auto_20201007_1215.py (limited to 'archaeological_operations') diff --git a/archaeological_operations/migrations/0104_auto_20201007_1215.py b/archaeological_operations/migrations/0104_auto_20201007_1215.py new file mode 100644 index 000000000..fa61cf836 --- /dev/null +++ b/archaeological_operations/migrations/0104_auto_20201007_1215.py @@ -0,0 +1,39 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.27 on 2020-10-07 12:15 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('archaeological_operations', '0103_auto_20200129_1941'), + ] + + operations = [ + migrations.AlterModelOptions( + name='recordrelations', + options={'ordering': ('left_record__cached_label', 'relation_type', 'right_record__cached_label'), 'permissions': [('view_operationrelation', 'Can view all Operation relations')], 'verbose_name': 'Operation record relation', 'verbose_name_plural': 'Operation record relations'}, + ), + migrations.AddField( + model_name='archaeologicalsite', + name='complete_identifier', + field=models.TextField(blank=True, verbose_name='Complete identifier'), + ), + migrations.AddField( + model_name='historicalarchaeologicalsite', + name='complete_identifier', + field=models.TextField(blank=True, verbose_name='Complete identifier'), + ), + migrations.AddField( + model_name='historicaloperation', + name='complete_identifier', + field=models.TextField(blank=True, verbose_name='Complete identifier'), + ), + migrations.AddField( + model_name='operation', + name='complete_identifier', + field=models.TextField(blank=True, verbose_name='Complete identifier'), + ), + ] diff --git a/archaeological_operations/models.py b/archaeological_operations/models.py index e7561d32c..c690e5b3a 100644 --- a/archaeological_operations/models.py +++ b/archaeological_operations/models.py @@ -42,7 +42,7 @@ from ishtar_common.models import BaseHistorizedItem, Dashboard, \ post_delete_record_relation, post_save_cache, RelationItem, \ ShortMenuItem, SourceType, Town, ValueGetter, get_current_profile, \ document_attached_changed, HistoryModel, SearchAltName, \ - GeoItem, QRCodeItem, SearchVectorConfig, DocumentItem, QuickAction, \ + GeoItem, CompleteIdentifierItem, SearchVectorConfig, DocumentItem, QuickAction, \ MainItem, HierarchicalType from ishtar_common.models_common import Department, HistoricalRecords from ishtar_common.model_managers import UUIDModelManager @@ -122,7 +122,7 @@ post_save.connect(post_save_cache, sender=RecordQualityType) post_delete.connect(post_save_cache, sender=RecordQualityType) -class ArchaeologicalSite(DocumentItem, BaseHistorizedItem, QRCodeItem, +class ArchaeologicalSite(DocumentItem, BaseHistorizedItem, CompleteIdentifierItem, GeoItem, OwnPerms, ValueGetter, MainItem): SLUG = 'site' APP = "archaeological-operations" @@ -697,9 +697,9 @@ class ParcelItem: parcels.append(key) -class Operation(ClosedItem, DocumentItem, BaseHistorizedItem, QRCodeItem, - GeoItem, OwnPerms, ValueGetter, MainItem, - DashboardFormItem, RelationItem, ParcelItem): +class Operation(ClosedItem, DocumentItem, BaseHistorizedItem, + CompleteIdentifierItem, GeoItem, OwnPerms, ValueGetter, + MainItem, DashboardFormItem, RelationItem, ParcelItem): SLUG = 'operation' APP = "archaeological-operations" MODEL = "operation" diff --git a/archaeological_operations/tests.py b/archaeological_operations/tests.py index 7b93c7d5e..d2cbb707e 100644 --- a/archaeological_operations/tests.py +++ b/archaeological_operations/tests.py @@ -1205,7 +1205,9 @@ class OperationInitTest(object): self.create_orgas(user) return self.orgas[0] - def create_towns(self, datas={}): + def create_towns(self, datas=None): + if not datas: + datas = {} default = {'numero_insee': '12345', 'name': 'default_town'} default.update(datas) town = models.Town.objects.create(**default) @@ -1323,6 +1325,28 @@ class OperationTest(TestCase, OperationInitTest): parcel.save() self.assertEqual(parcel.external_id, 'blabla') + def test_complete_identifier(self): + profile = get_current_profile() + profile.operation_complete_identifier = \ + "{code_patriarche}-{town__numero_insee}" + profile.save() + self.item.code_patriarche = '123456789' + self.item.year = 2020 + self.item.save() + self.item = models.Operation.objects.get(pk=self.item.pk) + self.assertEqual(self.item.complete_identifier, + '{}-{}'.format(self.item.code_patriarche, + self.item.town.numero_insee)) + + profile.operation_complete_identifier = \ + "{year}-{town__numero_insee}" + profile.save() + self.item.save() + self.item = models.Operation.objects.get(pk=self.item.pk) + self.assertEqual(self.item.complete_identifier, + '{}-{}'.format(self.item.year, + self.item.town.numero_insee)) + def test_associated(self): scientist = Person.objects.create(name="C-3PO") self.item.scientist = scientist -- cgit v1.2.3