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/0021_auto_20180423_1838.py | 43 ---------------------- .../migrations/0021_auto_20180509_1736.py | 43 ++++++++++++++++++++++ archaeological_context_records/models.py | 16 +++----- 3 files changed, 49 insertions(+), 53 deletions(-) delete mode 100644 archaeological_context_records/migrations/0021_auto_20180423_1838.py create mode 100644 archaeological_context_records/migrations/0021_auto_20180509_1736.py (limited to 'archaeological_context_records') diff --git a/archaeological_context_records/migrations/0021_auto_20180423_1838.py b/archaeological_context_records/migrations/0021_auto_20180423_1838.py deleted file mode 100644 index c26e46c07..000000000 --- a/archaeological_context_records/migrations/0021_auto_20180423_1838.py +++ /dev/null @@ -1,43 +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_context_records', '0020_auto_20180430_1318'), - ] - - operations = [ - migrations.CreateModel( - name='ContextRecordImage', - 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')), - ], - ), - migrations.RemoveField( - model_name='contextrecord', - name='images', - ), - migrations.AddField( - model_name='contextrecord', - name='images', - field=models.ManyToManyField(blank=True, through='archaeological_context_records.ContextRecordImage', to='ishtar_common.IshtarImage', verbose_name='Images'), - ), - migrations.AddField( - model_name='contextrecordimage', - name='context_record', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='archaeological_context_records.ContextRecord'), - ), - migrations.AddField( - model_name='contextrecordimage', - name='image', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='ishtar_common.IshtarImage'), - ), - ] diff --git a/archaeological_context_records/migrations/0021_auto_20180509_1736.py b/archaeological_context_records/migrations/0021_auto_20180509_1736.py new file mode 100644 index 000000000..d1267c67a --- /dev/null +++ b/archaeological_context_records/migrations/0021_auto_20180509_1736.py @@ -0,0 +1,43 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.10 on 2018-05-09 17:36 +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_context_records', '0020_auto_20180430_1318'), + ] + + operations = [ + migrations.CreateModel( + name='ContextRecordImage', + 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.RemoveField( + model_name='contextrecord', + name='images', + ), + migrations.AddField( + model_name='contextrecord', + name='images', + field=models.ManyToManyField(blank=True, through='archaeological_context_records.ContextRecordImage', to='ishtar_common.IshtarImage', verbose_name='Images'), + ), + migrations.AddField( + model_name='contextrecordimage', + name='item', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='associated_images', to='archaeological_context_records.ContextRecord'), + ), + ] diff --git a/archaeological_context_records/models.py b/archaeological_context_records/models.py index bdb21ea39..396b91f67 100644 --- a/archaeological_context_records/models.py +++ b/archaeological_context_records/models.py @@ -34,7 +34,7 @@ from ishtar_common.models import GeneralType, BaseHistorizedItem, \ HistoricalRecords, OwnPerms, ShortMenuItem, Source, GeneralRelationType,\ GeneralRecordRelations, post_delete_record_relation, get_image_path, \ ImageModel, post_save_cache, ValueGetter, BulkUpdatedItem, IshtarImage, \ - RelationItem + RelationItem, ThroughImage from archaeological_operations.models import Operation, Period, Parcel, \ ArchaeologicalSite @@ -485,11 +485,8 @@ class ContextRecord(BulkUpdatedItem, BaseHistorizedItem, return True def _get_base_image_path(self): - ope = self.operation - return u"operation/{}/{}/{}/{}".format( - ope.year, ope.reference, self.SLUG, - slugify(self.label or u"00") - ) + return self.operation._get_base_image_path() + \ + u"/{}/{}".format(self.SLUG, slugify(self.label or u"00")) @property def reference(self): @@ -565,10 +562,9 @@ class ContextRecord(BulkUpdatedItem, BaseHistorizedItem, post_save.connect(cached_label_changed, sender=ContextRecord) -class ContextRecordImage(models.Model): - image = models.ForeignKey(IshtarImage, on_delete=models.CASCADE) - context_record = models.ForeignKey(ContextRecord, on_delete=models.CASCADE) - is_main = models.BooleanField(_(u"Main image"), default=False) +class ContextRecordImage(ThroughImage): + item = models.ForeignKey(ContextRecord, on_delete=models.CASCADE, + related_name='associated_images') class RelationType(GeneralRelationType): -- cgit v1.2.3