diff options
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 |
commit | 53b1329634970640c3959a797ed21108466fc8e7 (patch) | |
tree | 2f22b5fce12f60a056fe9a918ba1387b3ffc0e52 | |
parent | d1435a3d73765fa5e6822fc86bd4d77780641974 (diff) | |
download | Ishtar-53b1329634970640c3959a797ed21108466fc8e7.tar.bz2 Ishtar-53b1329634970640c3959a797ed21108466fc8e7.zip |
✨ GIS API: import chunk model
-rw-r--r-- | ishtar_common/migrations/0266_gis_importchunk.py | 31 | ||||
-rw-r--r-- | ishtar_common/models_imports.py | 30 |
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", |