diff options
10 files changed, 168 insertions, 8 deletions
diff --git a/archaeological_context_records/admin.py b/archaeological_context_records/admin.py index 1f08bc505..493302363 100644 --- a/archaeological_context_records/admin.py +++ b/archaeological_context_records/admin.py @@ -22,7 +22,7 @@ from ajax_select.fields import AutoCompleteSelectField from django import forms from django.contrib import admin -from django.contrib.gis.forms import PointField, PolygonField, OSMWidget +from django.contrib.gis.forms import PointField, MultiPolygonField, OSMWidget from django.utils.translation import ugettext_lazy as _ from ishtar_common.apps import admin_site @@ -48,8 +48,8 @@ class AdminContextRecordForm(forms.ModelForm): exclude = [] point_2d = PointField(label=_(u"Point"), required=False, widget=OSMWidget) - polygon = PolygonField(label=_(u"Polygon"), required=False, - widget=OSMWidget) + multi_polygon = MultiPolygonField(label=_(u"Multi polygon"), required=False, + widget=OSMWidget) operation = AutoCompleteSelectField('operation') parcel = AutoCompleteSelectField('parcel') diff --git a/archaeological_context_records/migrations/0028_auto_20180619_0853.py b/archaeological_context_records/migrations/0028_auto_20180619_0853.py new file mode 100644 index 000000000..61d7698a5 --- /dev/null +++ b/archaeological_context_records/migrations/0028_auto_20180619_0853.py @@ -0,0 +1,26 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.10 on 2018-06-19 08:53 +from __future__ import unicode_literals + +import django.contrib.gis.db.models.fields +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('archaeological_context_records', '0027_auto_20180601_1555'), + ] + + operations = [ + migrations.AddField( + model_name='contextrecord', + name='multi_polygon', + field=django.contrib.gis.db.models.fields.MultiPolygonField(blank=True, null=True, srid=4326, verbose_name='Multi polygon'), + ), + migrations.AddField( + model_name='historicalcontextrecord', + name='multi_polygon', + field=django.contrib.gis.db.models.fields.MultiPolygonField(blank=True, null=True, srid=4326, verbose_name='Multi polygon'), + ), + ] diff --git a/archaeological_context_records/migrations/0029_polygon_to_multi_polygon.py b/archaeological_context_records/migrations/0029_polygon_to_multi_polygon.py new file mode 100644 index 000000000..0a7c92df6 --- /dev/null +++ b/archaeological_context_records/migrations/0029_polygon_to_multi_polygon.py @@ -0,0 +1,31 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.10 on 2018-06-19 08:55 +from __future__ import unicode_literals + +from django.db import migrations +from django.contrib.gis.geos import MultiPolygon, fromstr + + +def polygon_to_multipolygon(apps, schema): + ContextRecord = apps.get_model('archaeological_context_records', + 'contextrecord') + HistoricalContextRecord = apps.get_model('archaeological_context_records', + 'historicalcontextrecord') + for cr in ContextRecord.objects.filter(polygon__isnull=False).all(): + cr.multi_polygon = MultiPolygon(fromstr(cr.polygon),) + cr.save() + for cr in HistoricalContextRecord.objects.filter( + polygon__isnull=False).all(): + cr.multi_polygon = MultiPolygon(fromstr(cr.polygon),) + cr.save() + + +class Migration(migrations.Migration): + + dependencies = [ + ('archaeological_context_records', '0028_auto_20180619_0853'), + ] + + operations = [ + migrations.RunPython(polygon_to_multipolygon) + ] diff --git a/archaeological_context_records/migrations/0030_auto_20180619_0911.py b/archaeological_context_records/migrations/0030_auto_20180619_0911.py new file mode 100644 index 000000000..aa1880243 --- /dev/null +++ b/archaeological_context_records/migrations/0030_auto_20180619_0911.py @@ -0,0 +1,23 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.10 on 2018-06-19 09:11 +from __future__ import unicode_literals + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('archaeological_context_records', '0029_polygon_to_multi_polygon'), + ] + + operations = [ + migrations.RemoveField( + model_name='contextrecord', + name='polygon', + ), + migrations.RemoveField( + model_name='historicalcontextrecord', + name='polygon', + ), + ] diff --git a/archaeological_context_records/models.py b/archaeological_context_records/models.py index 8395fb8fe..211be9ade 100644 --- a/archaeological_context_records/models.py +++ b/archaeological_context_records/models.py @@ -325,7 +325,8 @@ class ContextRecord(BulkUpdatedItem, BaseHistorizedItem, 'ContextRecord', through='RecordRelations', blank=True) point_2d = models.PointField(_(u"Point (2D)"), blank=True, null=True) point = models.PointField(_(u"Point (3D)"), blank=True, null=True, dim=3) - polygon = models.PolygonField(_(u"Polygon"), blank=True, null=True) + multi_polygon = models.MultiPolygonField(_(u"Multi polygon"), blank=True, + null=True) documents = models.ManyToManyField( Document, related_name='context_records', verbose_name=_(u"Documents"), blank=True) diff --git a/archaeological_finds/admin.py b/archaeological_finds/admin.py index 0e2b31b20..c85ac2425 100644 --- a/archaeological_finds/admin.py +++ b/archaeological_finds/admin.py @@ -22,7 +22,7 @@ from ajax_select.fields import AutoCompleteSelectField from django import forms from django.contrib import admin -from django.contrib.gis.forms import PointField, PolygonField, \ +from django.contrib.gis.forms import PointField, MultiPolygonField, \ LineStringField, OSMWidget from django.utils.translation import ugettext_lazy as _ @@ -40,8 +40,8 @@ class AdminBaseFindForm(forms.ModelForm): widget=OSMWidget) line = LineStringField(label=_(u"Line"), required=False, widget=OSMWidget) - polygon = PolygonField(label=_(u"Polygon"), required=False, - widget=OSMWidget) + multi_polygon = MultiPolygonField(label=_(u"Multi polygon"), required=False, + widget=OSMWidget) context_record = AutoCompleteSelectField('context_record') diff --git a/archaeological_finds/migrations/0030_auto_20180619_0853.py b/archaeological_finds/migrations/0030_auto_20180619_0853.py new file mode 100644 index 000000000..3e198a313 --- /dev/null +++ b/archaeological_finds/migrations/0030_auto_20180619_0853.py @@ -0,0 +1,26 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.10 on 2018-06-19 08:53 +from __future__ import unicode_literals + +import django.contrib.gis.db.models.fields +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('archaeological_finds', '0029_auto_20180601_1555'), + ] + + operations = [ + migrations.AddField( + model_name='basefind', + name='multi_polygon', + field=django.contrib.gis.db.models.fields.MultiPolygonField(blank=True, null=True, srid=4326, verbose_name='Multi polygon'), + ), + migrations.AddField( + model_name='historicalbasefind', + name='multi_polygon', + field=django.contrib.gis.db.models.fields.MultiPolygonField(blank=True, null=True, srid=4326, verbose_name='Multi polygon'), + ), + ] diff --git a/archaeological_finds/migrations/0031_polygon_to_multi_polygon.py b/archaeological_finds/migrations/0031_polygon_to_multi_polygon.py new file mode 100644 index 000000000..85252e9a5 --- /dev/null +++ b/archaeological_finds/migrations/0031_polygon_to_multi_polygon.py @@ -0,0 +1,29 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.10 on 2018-06-19 08:55 +from __future__ import unicode_literals + +from django.db import migrations +from django.contrib.gis.geos import MultiPolygon, fromstr + + +def polygon_to_multipolygon(apps, schema): + BaseFind = apps.get_model('archaeological_finds', 'basefind') + HistoricalBaseFind = apps.get_model( + 'archaeological_finds', 'historicalbasefind') + for bf in BaseFind.objects.filter(polygon__isnull=False).all(): + bf.multi_polygon = MultiPolygon(fromstr(bf.polygon),) + bf.save() + for bf in HistoricalBaseFind.objects.filter(polygon__isnull=False).all(): + bf.multi_polygon = MultiPolygon(fromstr(bf.polygon),) + bf.save() + + +class Migration(migrations.Migration): + + dependencies = [ + ('archaeological_finds', '0030_auto_20180619_0853'), + ] + + operations = [ + migrations.RunPython(polygon_to_multipolygon) + ] diff --git a/archaeological_finds/migrations/0032_auto_20180619_0911.py b/archaeological_finds/migrations/0032_auto_20180619_0911.py new file mode 100644 index 000000000..65b104079 --- /dev/null +++ b/archaeological_finds/migrations/0032_auto_20180619_0911.py @@ -0,0 +1,23 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.10 on 2018-06-19 09:11 +from __future__ import unicode_literals + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('archaeological_finds', '0031_polygon_to_multi_polygon'), + ] + + operations = [ + migrations.RemoveField( + model_name='basefind', + name='polygon', + ), + migrations.RemoveField( + model_name='historicalbasefind', + name='polygon', + ), + ] diff --git a/archaeological_finds/models_finds.py b/archaeological_finds/models_finds.py index 90df95530..1ebfb6a15 100644 --- a/archaeological_finds/models_finds.py +++ b/archaeological_finds/models_finds.py @@ -272,7 +272,8 @@ class BaseFind(BulkUpdatedItem, BaseHistorizedItem, OwnPerms): point_2d = models.PointField(_(u"Point (2D)"), blank=True, null=True) point = models.PointField(_(u"Point (3D)"), blank=True, null=True, dim=3) line = models.LineStringField(_(u"Line"), blank=True, null=True) - polygon = models.PolygonField(_(u"Polygon"), blank=True, null=True) + multi_polygon = models.MultiPolygonField(_(u"Multi polygon"), blank=True, + null=True) cache_short_id = models.TextField( _(u"Short ID"), blank=True, null=True, db_index=True, help_text=_(u"Cached value - do not edit")) |