summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2025-07-21 20:08:20 +0200
committerÉtienne Loks <etienne.loks@iggdrasil.net>2025-07-22 10:22:35 +0200
commit53b1329634970640c3959a797ed21108466fc8e7 (patch)
tree2f22b5fce12f60a056fe9a918ba1387b3ffc0e52
parentd1435a3d73765fa5e6822fc86bd4d77780641974 (diff)
downloadIshtar-53b1329634970640c3959a797ed21108466fc8e7.tar.bz2
Ishtar-53b1329634970640c3959a797ed21108466fc8e7.zip
✨ GIS API: import chunk model
-rw-r--r--ishtar_common/migrations/0266_gis_importchunk.py31
-rw-r--r--ishtar_common/models_imports.py30
2 files changed, 61 insertions, 0 deletions
diff --git a/ishtar_common/migrations/0266_gis_importchunk.py b/ishtar_common/migrations/0266_gis_importchunk.py
new file mode 100644
index 000000000..8aef21697
--- /dev/null
+++ b/ishtar_common/migrations/0266_gis_importchunk.py
@@ -0,0 +1,31 @@
+# Generated by Django 4.2.19 on 2025-07-22 08:21
+
+from django.db import migrations, models
+import django.db.models.deletion
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('ishtar_common', '0265_userrequesttoken_usertoken'),
+ ]
+
+ operations = [
+ migrations.CreateModel(
+ name='ImportChunk',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('send_datetime', models.DateTimeField(verbose_name='Send date')),
+ ('chunk', models.TextField(verbose_name='Chunk')),
+ ('number', models.IntegerField(verbose_name='Number')),
+ ('total', models.IntegerField(verbose_name='Total')),
+ ('import_immediatly', models.BooleanField(default=False, verbose_name='Import Immediatly')),
+ ('importer', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='ishtar_common.importertype', verbose_name='Importer')),
+ ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='ishtar_common.ishtaruser', verbose_name='User')),
+ ],
+ options={
+ 'verbose_name': 'Import - Chunk',
+ 'verbose_name_plural': 'Import - Chunks',
+ },
+ ),
+ ]
diff --git a/ishtar_common/models_imports.py b/ishtar_common/models_imports.py
index b8626358c..3d47ba263 100644
--- a/ishtar_common/models_imports.py
+++ b/ishtar_common/models_imports.py
@@ -1438,6 +1438,36 @@ def convert_geom(feature, srid):
return feature
+class ImportChunk(models.Model):
+ """
+ Import chunk from QGIS plugin.
+ When all chunk have been collected Import is created.
+ """
+ importer = models.ForeignKey("ImporterType", verbose_name=_("Importer"),
+ on_delete=models.CASCADE)
+ user = models.ForeignKey("IshtarUser", verbose_name=_("User"),
+ on_delete=models.CASCADE)
+ send_datetime = models.DateTimeField(_("Send date"))
+ chunk = models.TextField(_("Chunk"))
+ number = models.IntegerField(_("Number"))
+ total = models.IntegerField(_("Total"))
+ import_immediatly = models.BooleanField("Import Immediatly", default=False)
+
+ class Meta:
+ verbose_name = _("Import - Chunk")
+ verbose_name_plural = _("Import - Chunks")
+
+ @classmethod
+ def clean_old(cls):
+ """
+ Remove all chunk older than 3 hours
+ """
+ date = datetime.datetime.now() - datetime.timedelta(hours=3)
+ q = cls.objects.filter(send_datetime__lte=date)
+ for chunk in list(q.all()):
+ q.delete()
+
+
IMPORT_GEOMETRY = {
"Point": "point_2d",
"3D Point": "point_3d",