diff options
| author | Étienne Loks <etienne.loks@iggdrasil.net> | 2018-06-19 09:25:26 +0200 | 
|---|---|---|
| committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2018-06-19 09:25:26 +0200 | 
| commit | 5d3fd33d2362c1c7e04f58cb69a975d23f956d60 (patch) | |
| tree | c9054bb8a6df75d8073fa979002eae834159a64d | |
| parent | 1964c8cdb844014dd1a96d51188bf30947dabd6a (diff) | |
| download | Ishtar-5d3fd33d2362c1c7e04f58cb69a975d23f956d60.tar.bz2 Ishtar-5d3fd33d2362c1c7e04f58cb69a975d23f956d60.zip | |
Polygon to multi polygon
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")) | 
