summaryrefslogtreecommitdiff
path: root/ishtar_common
diff options
context:
space:
mode:
Diffstat (limited to 'ishtar_common')
-rw-r--r--ishtar_common/admin.py3
-rw-r--r--ishtar_common/forms_common.py21
-rw-r--r--ishtar_common/migrations/0221_auto_20220823_1935.py93
-rw-r--r--ishtar_common/models.py2
-rw-r--r--ishtar_common/models_common.py19
5 files changed, 135 insertions, 3 deletions
diff --git a/ishtar_common/admin.py b/ishtar_common/admin.py
index 602cf23a7..76b585d69 100644
--- a/ishtar_common/admin.py
+++ b/ishtar_common/admin.py
@@ -1160,6 +1160,7 @@ general_models = [
models_common.GeoProviderType,
models_common.GeoDataType,
models_common.GeoOriginType,
+ models_common.GeoBufferType,
]
for model in general_models:
admin_site.register(model, GeneralTypeAdmin)
@@ -2483,4 +2484,4 @@ class GeoVectorDataAdmin(admin.ModelAdmin):
list_filter = ["origin", "data_type", "provider"]
-admin_site.register(models_common.GeoVectorData, GeoVectorDataAdmin) \ No newline at end of file
+admin_site.register(models_common.GeoVectorData, GeoVectorDataAdmin)
diff --git a/ishtar_common/forms_common.py b/ishtar_common/forms_common.py
index 822efadda..a24d2396e 100644
--- a/ishtar_common/forms_common.py
+++ b/ishtar_common/forms_common.py
@@ -2603,6 +2603,7 @@ class GISForm(forms.ModelForm, CustomForm, ManageOldType):
"data_type": models.GeoDataType,
"origin": models.GeoOriginType,
"provider": models.GeoProviderType,
+ "buffer_type": models.GeoBufferType,
}
pk = forms.IntegerField(label="", required=False, widget=forms.HiddenInput)
@@ -2631,12 +2632,16 @@ class GISForm(forms.ModelForm, CustomForm, ManageOldType):
provider = widgets.ModelChoiceField(
model=models.GeoProviderType, label=_("Provider"), choices=[], required=False
)
+ buffer_type = widgets.ModelChoiceField(
+ model=models.GeoBufferType, label=_("Buffer type"), choices=[], required=False
+ )
comment = forms.CharField(label=_("Comment"), widget=forms.Textarea, required=False)
TYPES = [
FieldType("origin", models.GeoOriginType),
FieldType("data_type", models.GeoDataType),
FieldType("provider", models.GeoProviderType),
+ FieldType("buffer_type", models.GeoBufferType),
]
class Meta:
@@ -2649,6 +2654,7 @@ class GISForm(forms.ModelForm, CustomForm, ManageOldType):
_("Related items"), collapse=True),
"name": FormHeader(_("Meta-data")),
"geo_field": FormHeader(_("Geography")),
+ "buffer": FormHeader(_("Buffer"), collapse=True),
}
OPTIONS_PERMISSIONS = [
# field name, permission, options
@@ -2735,6 +2741,7 @@ class GISForm(forms.ModelForm, CustomForm, ManageOldType):
def _get_base_geo_keys(self):
geo_keys = []
+ extra_geo = ["buffer", "buffer_type"]
if self.geom_type == "coordinates":
geo_keys = [
"x", "estimated_error_x",
@@ -2767,7 +2774,7 @@ class GISForm(forms.ModelForm, CustomForm, ManageOldType):
self.fields.pop(geo_field)
if self.geom_type == "point_3d":
geo_keys = list(geo_keys) + ["z"]
- return geo_keys
+ return geo_keys + extra_geo
def _get_instance_geo_keys(self, instance):
# geo keys for an instanced item
@@ -2814,6 +2821,18 @@ class GISForm(forms.ModelForm, CustomForm, ManageOldType):
def clean(self):
cleaned_data = self.cleaned_data
+ if cleaned_data.get("buffer", None) \
+ and not cleaned_data.get("buffer_type", None):
+ raise forms.ValidationError(
+ _("If you set a buffer set a buffer type.")
+ )
+ if cleaned_data.get("buffer_type", None) \
+ and not cleaned_data.get("buffer", None):
+ raise forms.ValidationError(
+ _("If you set a buffer type set a buffer.")
+ )
+
+
if "x" not in self.geo_keys:
# reverse...
geo_value = cleaned_data[self.geo_keys[0]]
diff --git a/ishtar_common/migrations/0221_auto_20220823_1935.py b/ishtar_common/migrations/0221_auto_20220823_1935.py
new file mode 100644
index 000000000..f86961f05
--- /dev/null
+++ b/ishtar_common/migrations/0221_auto_20220823_1935.py
@@ -0,0 +1,93 @@
+# Generated by Django 2.2.24 on 2022-08-23 19:35
+
+import django.contrib.gis.db.models.fields
+import django.core.validators
+from django.db import migrations, models
+import django.db.models.deletion
+import ishtar_common.models_common
+import re
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('ishtar_common', '0220_auto_20220707_1633'),
+ ]
+
+ operations = [
+ migrations.CreateModel(
+ name='GeoBufferType',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('label', models.TextField(verbose_name='Label')),
+ ('txt_idx', models.TextField(help_text='The slug is the standardized version of the name. It contains only lowercase letters, numbers and hyphens. Each slug must be unique.', unique=True, validators=[django.core.validators.RegexValidator(re.compile('^[-a-zA-Z0-9_]+\\Z'), "Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens.", 'invalid')], verbose_name='Textual ID')),
+ ('comment', models.TextField(blank=True, default='', verbose_name='Comment')),
+ ('available', models.BooleanField(default=True, verbose_name='Available')),
+ ('order', models.IntegerField(default=10, verbose_name='Order')),
+ ],
+ options={
+ 'verbose_name': 'Geographic - Buffer type',
+ 'verbose_name_plural': 'Geographic - Buffer types',
+ 'ordering': ('order', 'label'),
+ },
+ bases=(ishtar_common.models_common.Cached, models.Model),
+ ),
+ migrations.AlterModelOptions(
+ name='jsondatafield',
+ options={'ordering': ['order', 'name'], 'verbose_name': 'Custom data - Field', 'verbose_name_plural': 'Custom data - Fields'},
+ ),
+ migrations.AlterModelOptions(
+ name='jsondatasection',
+ options={'ordering': ['order', 'name'], 'verbose_name': 'Custom data - Menu', 'verbose_name_plural': 'Custom data - Menus'},
+ ),
+ migrations.AddField(
+ model_name='geovectordata',
+ name='buffer',
+ field=models.FloatField(blank=True, null=True, verbose_name='Buffer'),
+ ),
+ migrations.AlterField(
+ model_name='apisearchmodel',
+ name='limit_query',
+ field=models.TextField(blank=True, help_text='Search query add to each request', null=True, verbose_name='Filter query'),
+ ),
+ migrations.AlterField(
+ model_name='geovectordata',
+ name='multi_line',
+ field=django.contrib.gis.db.models.fields.MultiLineStringField(blank=True, null=True, srid=4326, verbose_name='Multi lines'),
+ ),
+ migrations.AlterField(
+ model_name='geovectordata',
+ name='multi_polygon',
+ field=django.contrib.gis.db.models.fields.MultiPolygonField(blank=True, null=True, srid=4326, verbose_name='Multi polygons'),
+ ),
+ migrations.AlterField(
+ model_name='geovectordata',
+ name='origin',
+ field=models.ForeignKey(blank=True, help_text='For instance: topographical survey, georeferencing, ...', null=True, on_delete=django.db.models.deletion.PROTECT, to='ishtar_common.GeoOriginType', verbose_name='Origin'),
+ ),
+ migrations.AlterField(
+ model_name='import',
+ name='encoding',
+ field=models.CharField(choices=[('windows-1252', 'windows-1252'), ('ISO-8859-15', 'ISO-8859-15'), ('utf-8', 'utf-8')], default='utf-8', help_text='Only required for CSV file', max_length=15, verbose_name='Encoding'),
+ ),
+ migrations.AlterField(
+ model_name='import',
+ name='importer_type',
+ field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='ishtar_common.ImporterType', verbose_name='Importer type'),
+ ),
+ migrations.AlterField(
+ model_name='importertype',
+ name='is_main_geometry',
+ field=models.BooleanField(default=True, help_text='Only relevant for GIS files', verbose_name='Set as main geometry'),
+ ),
+ migrations.AlterField(
+ model_name='jsondatafield',
+ name='section',
+ field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='json_data_field', to='ishtar_common.JsonDataSection'),
+ ),
+ migrations.AddField(
+ model_name='geovectordata',
+ name='buffer_type',
+ field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='ishtar_common.GeoBufferType'),
+ ),
+ ]
diff --git a/ishtar_common/models.py b/ishtar_common/models.py
index e7520ee95..4ccc1cc0f 100644
--- a/ishtar_common/models.py
+++ b/ishtar_common/models.py
@@ -149,6 +149,7 @@ from ishtar_common.models_common import (
GeoOriginType,
GeoProviderType,
GeoVectorData,
+ GeoBufferType,
CompleteIdentifierItem,
SearchVectorConfig,
DocumentItem,
@@ -210,6 +211,7 @@ __all__ = [
"GeoDataType",
"GeoOriginType",
"GeoProviderType",
+ "GeoBufferType",
]
logger = logging.getLogger(__name__)
diff --git a/ishtar_common/models_common.py b/ishtar_common/models_common.py
index b2cb095e6..238bbeeac 100644
--- a/ishtar_common/models_common.py
+++ b/ishtar_common/models_common.py
@@ -2079,6 +2079,18 @@ class GeoProviderType(HierarchicalType):
)
+class GeoBufferType(GeneralType):
+ order = models.IntegerField(_("Order"), default=10)
+
+ class Meta:
+ verbose_name = _("Geographic - Buffer type")
+ verbose_name_plural = _("Geographic - Buffer types")
+ ordering = (
+ "order",
+ "label",
+ )
+
+
GEOJSON_POINT_TPL = {
"type": "FeatureCollection",
"features": [
@@ -2115,6 +2127,12 @@ class GeoVectorData(Imported, OwnPerms):
"related_items_archaeological_warehouse_container",
]
+ buffer = models.FloatField(
+ _("Buffer"), blank=True, null=True
+ )
+ buffer_type = models.ForeignKey(GeoBufferType, blank=True, null=True,
+ on_delete=models.CASCADE)
+ need_update = models.BooleanField(_("Need update"), default=False)
name = models.TextField(_("Name"), default="-")
source_content_type = models.ForeignKey(
ContentType, related_name="content_type_geovectordata", on_delete=models.CASCADE
@@ -2177,7 +2195,6 @@ class GeoVectorData(Imported, OwnPerms):
multi_points = models.MultiPointField(_("Multi points"), blank=True, null=True)
multi_line = models.MultiLineStringField(_("Multi lines"), blank=True, null=True)
multi_polygon = models.MultiPolygonField(_("Multi polygons"), blank=True, null=True)
- need_update = models.BooleanField(_("Need update"), default=False)
class Meta:
verbose_name = _("Geographic - Vector data")