From 43c017bc8dd00372f26728130b00b1cd9196fb10 Mon Sep 17 00:00:00 2001 From: Étienne Loks Date: Wed, 9 May 2018 17:49:16 +0200 Subject: Standardize related field item for imagee collections (refs #4076) --- .../migrations/0027_auto_20180423_1838.py | 53 ------------------- .../migrations/0027_auto_20180509_1723.py | 61 ++++++++++++++++++++++ archaeological_operations/models.py | 26 ++++----- 3 files changed, 71 insertions(+), 69 deletions(-) delete mode 100644 archaeological_operations/migrations/0027_auto_20180423_1838.py create mode 100644 archaeological_operations/migrations/0027_auto_20180509_1723.py (limited to 'archaeological_operations') diff --git a/archaeological_operations/migrations/0027_auto_20180423_1838.py b/archaeological_operations/migrations/0027_auto_20180423_1838.py deleted file mode 100644 index c9af8c928..000000000 --- a/archaeological_operations/migrations/0027_auto_20180423_1838.py +++ /dev/null @@ -1,53 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11.10 on 2018-04-23 18:38 -from __future__ import unicode_literals - -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('ishtar_common', '0048_auto_20180423_1838'), - ('archaeological_operations', '0026_auto_20180430_1318'), - ] - - operations = [ - migrations.CreateModel( - name='OperationImage', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('is_main', models.BooleanField(default=False, verbose_name='Main image')), - ('image', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='ishtar_common.IshtarImage')), - ], - ), - migrations.CreateModel( - name='SiteImage', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('is_main', models.BooleanField(default=False, verbose_name='Main image')), - ('image', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='ishtar_common.IshtarImage')), - ('site', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='archaeological_operations.ArchaeologicalSite')), - ], - ), - migrations.RemoveField( - model_name='operation', - name='images', - ), - migrations.AddField( - model_name='operation', - name='images', - field=models.ManyToManyField(blank=True, through='archaeological_operations.OperationImage', to='ishtar_common.IshtarImage', verbose_name='Images'), - ), - migrations.AddField( - model_name='operationimage', - name='operation', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='archaeological_operations.Operation'), - ), - migrations.AddField( - model_name='archaeologicalsite', - name='images', - field=models.ManyToManyField(blank=True, through='archaeological_operations.SiteImage', to='ishtar_common.IshtarImage', verbose_name='Images'), - ), - ] diff --git a/archaeological_operations/migrations/0027_auto_20180509_1723.py b/archaeological_operations/migrations/0027_auto_20180509_1723.py new file mode 100644 index 000000000..181b6aa55 --- /dev/null +++ b/archaeological_operations/migrations/0027_auto_20180509_1723.py @@ -0,0 +1,61 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.10 on 2018-05-09 17:23 +from __future__ import unicode_literals + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('ishtar_common', '0050_licensetype_url'), + ('archaeological_operations', '0026_auto_20180430_1318'), + ] + + operations = [ + migrations.CreateModel( + name='OperationImage', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('is_main', models.BooleanField(default=False, verbose_name='Main image')), + ('image', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='ishtar_common.IshtarImage')), + ], + options={ + 'ordering': ('-is_main', 'image__name'), + 'abstract': False, + }, + ), + migrations.CreateModel( + name='SiteImage', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('is_main', models.BooleanField(default=False, verbose_name='Main image')), + ('image', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='ishtar_common.IshtarImage')), + ('item', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='associated_images', to='archaeological_operations.ArchaeologicalSite')), + ], + options={ + 'ordering': ('-is_main', 'image__name'), + 'abstract': False, + }, + ), + migrations.RemoveField( + model_name='operation', + name='images', + ), + migrations.AddField( + model_name='operation', + name='images', + field=models.ManyToManyField(blank=True, through='archaeological_operations.OperationImage', to='ishtar_common.IshtarImage', verbose_name='Images'), + ), + migrations.AddField( + model_name='operationimage', + name='item', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='associated_images', to='archaeological_operations.Operation'), + ), + migrations.AddField( + model_name='archaeologicalsite', + name='images', + field=models.ManyToManyField(blank=True, through='archaeological_operations.SiteImage', to='ishtar_common.IshtarImage', verbose_name='Images'), + ), + ] diff --git a/archaeological_operations/models.py b/archaeological_operations/models.py index aa9103f61..5ff3ddc2f 100644 --- a/archaeological_operations/models.py +++ b/archaeological_operations/models.py @@ -38,8 +38,8 @@ from ishtar_common.models import GeneralType, BaseHistorizedItem, \ SourceType, Person, Organization, Town, Dashboard, IshtarUser, ValueGetter,\ DocumentTemplate, ShortMenuItem, DashboardFormItem, GeneralRelationType,\ GeneralRecordRelations, post_delete_record_relation, OperationType, \ - ImageModel, post_save_cache, PersonType, IshtarImage, get_image_path, \ - RelationItem + ImageModel, post_save_cache, PersonType, IshtarImage, \ + RelationItem, ThroughImage class RemainType(GeneralType): @@ -220,10 +220,9 @@ class ArchaeologicalSite(BaseHistorizedItem): ) -class SiteImage(models.Model): - image = models.ForeignKey(IshtarImage, on_delete=models.CASCADE) - site = models.ForeignKey(ArchaeologicalSite, on_delete=models.CASCADE) - is_main = models.BooleanField(_(u"Main image"), default=False) +class SiteImage(ThroughImage): + item = models.ForeignKey(ArchaeologicalSite, on_delete=models.CASCADE, + related_name='associated_images') def get_values_town_related(item, prefix, values): @@ -246,6 +245,7 @@ def get_values_town_related(item, prefix, values): number=dpt).count()]) return values + QUALITY = (('ND', _(u"Not documented")), ('A', _(u"Arbitrary")), ('R', _(u"Reliable")),) @@ -613,8 +613,7 @@ class Operation(ClosedItem, BaseHistorizedItem, ImageModel, OwnPerms, return True def _get_base_image_path(self): - return u"operation/{}/{}".format( - self.year, self.reference) + return u"{}/{}/{}".format(self.SLUG, self.year, self.reference) def get_town_label(self): lbl = unicode(_('Intercommunal')) @@ -979,14 +978,9 @@ def operation_post_save(sender, **kwargs): post_save.connect(operation_post_save, sender=Operation) -class OperationImage(models.Model): - image = models.ForeignKey(IshtarImage, on_delete=models.CASCADE) - operation = models.ForeignKey(Operation, on_delete=models.CASCADE, - related_name='associated_images') - is_main = models.BooleanField(_(u"Main image"), default=False) - - class Meta: - ordering = ('operation', '-is_main', 'image__name') +class OperationImage(ThroughImage): + item = models.ForeignKey(Operation, on_delete=models.CASCADE, + related_name='associated_images') class RelationType(GeneralRelationType): -- cgit v1.2.3