summaryrefslogtreecommitdiff
path: root/ishtar_common/migrations/0269_gis_plugin.py
diff options
context:
space:
mode:
Diffstat (limited to 'ishtar_common/migrations/0269_gis_plugin.py')
-rw-r--r--ishtar_common/migrations/0269_gis_plugin.py137
1 files changed, 137 insertions, 0 deletions
diff --git a/ishtar_common/migrations/0269_gis_plugin.py b/ishtar_common/migrations/0269_gis_plugin.py
new file mode 100644
index 000000000..864183027
--- /dev/null
+++ b/ishtar_common/migrations/0269_gis_plugin.py
@@ -0,0 +1,137 @@
+# Generated by Django 4.2.19 on 2026-02-25 09:44
+
+import sys
+from django.conf import settings
+from django.db import migrations, models
+import django.db.models.deletion
+from django.utils.translation import gettext_lazy as _
+
+from ishtar_common.utils_migrations import update_import_key, print_progress
+
+
+def update_importkey(apps, __):
+ updated = 0
+ GeoVectorData = apps.get_model("ishtar_common", "geovectordata")
+ total = GeoVectorData.objects.count()
+ sys.stdout.write("\n")
+ for idx, data in enumerate(GeoVectorData.objects.all()):
+ print_progress(idx, total)
+ updated += 1 if update_import_key(data) else 0
+
+
+def update_groups(apps, __):
+ Permission = apps.get_model("auth", "Permission")
+ Group = apps.get_model("auth", "Group")
+ ContentType = apps.get_model("contenttypes", "ContentType")
+ ct = ContentType.objects.get(app_label='ishtar_common', model='import')
+ update = (
+ ("Imports : lecture", "view_gis_import", _("Can export to QGIS")),
+ ("Imports rattachés : lecture", "view_own_gis_import", _("Can export own to QGIS")),
+ ("Imports : ajout", "change_gis_import", _("Can create import from QGIS")),
+ )
+ for gp_name, codename, p_name in update:
+ gp = Group.objects.filter(name=gp_name)
+ if gp.exists():
+ perm = Permission.objects.filter(codename=codename)
+ if perm.exists():
+ perm = perm.all()[0]
+ else:
+ perm = Permission.objects.create(
+ codename=codename,
+ name=p_name,
+ content_type=ct
+ )
+
+ gp = gp.all()[0]
+ gp.permissions.add(perm)
+
+
+class Migration(migrations.Migration):
+ dependencies = [
+ ('auth', '0012_alter_user_first_name_max_length'),
+ ('ishtar_common', '0268_add_timezone_django_v4'),
+ migrations.swappable_dependency(settings.AUTH_USER_MODEL),
+ ]
+
+ operations = [
+ migrations.CreateModel(
+ name='UserRequestToken',
+ fields=[
+ ('created', models.DateTimeField(auto_now_add=True, verbose_name='Created')),
+ ('key', models.CharField(max_length=6, unique=True, verbose_name='Key')),
+ ('user', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, primary_key=True, related_name='user_request_token', serialize=False, to=settings.AUTH_USER_MODEL, verbose_name='User')),
+ ('access_type', models.CharField(choices=[('R', 'GIS - read'), ('W', 'GIS - read/write')], default='R', max_length=1, verbose_name='Access type')),
+ ('name', models.TextField(verbose_name='Name')),
+ ('limit_date', models.DateField(blank=True, null=True, verbose_name='Limit date')),
+ ],
+ options={
+ 'verbose_name': 'API - GIS - Request token',
+ 'verbose_name_plural': 'API - GIS - Request tokens',
+ },
+ ),
+ migrations.AlterModelOptions(
+ name='importertype',
+ options={'ordering': ('name',), 'permissions': (('view_gis_importer', 'Can export to QGIS'), ('view_own_gis_importer', 'Can export own to QGIS'), ('change_gis_importer', 'Can import from QGIS'), ('change_own_gis_importer', 'Can import own to QGIS')), 'verbose_name': 'Importer - Type', 'verbose_name_plural': 'Importer - Types'},
+ ),
+ migrations.AddField(
+ model_name='ishtarsiteprofile',
+ name='gis_connector',
+ field=models.BooleanField(default=False, verbose_name='GIS connector'),
+ ),
+ migrations.AlterField(
+ model_name='importertype',
+ name='type',
+ field=models.CharField(choices=[('tab', 'Table'), ('gis', 'GIS'), ('qgs', 'QGIS')], default='tab', max_length=3, verbose_name='Type'),
+ ),
+ migrations.CreateModel(
+ name='UserToken',
+ fields=[
+ ('key', models.CharField(max_length=40, primary_key=True, serialize=False, verbose_name='Key')),
+ ('name', models.TextField(verbose_name='Name')),
+ ('created', models.DateTimeField(auto_now_add=True, verbose_name='Created')),
+ ('access_type', models.CharField(choices=[('R', 'GIS - read'), ('W', 'GIS - read/write')], default='R', max_length=1, verbose_name='Access type')),
+ ('limit_date', models.DateField(blank=True, null=True, verbose_name='Limit date')),
+ ('last_ip', models.GenericIPAddressField(blank=True, null=True, verbose_name='Last IP')),
+ ('last_access', models.DateField(auto_now_add=True, verbose_name='Last access date')),
+ ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='user_token', to=settings.AUTH_USER_MODEL, verbose_name='User')),
+ ],
+ options={
+ 'verbose_name': 'API - GIS - Token',
+ 'verbose_name_plural': 'API - GIS - Tokens',
+ 'ordering': ('user', 'name', 'limit_date'),
+ },
+ ),
+ 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',
+ },
+ ),
+ migrations.RunPython(update_importkey),
+ migrations.AddField(
+ model_name='import',
+ name='import_immediatly',
+ field=models.BooleanField(default=False, verbose_name='Import Immediatly'),
+ ),
+ migrations.AddField(
+ model_name='importertype',
+ name='gis_type',
+ field=models.ForeignKey(blank=True, help_text='For QGIS importer type. Geographic data type used for import and export.', null=True, on_delete=django.db.models.deletion.CASCADE, to='ishtar_common.geodatatype'),
+ ),
+ migrations.AlterModelOptions(
+ name='import',
+ options={'permissions': (('view_own_import', 'Can view own Import'), ('add_own_import', 'Can add own Import'), ('change_own_import', 'Can change own Import'), ('delete_own_import', 'Can delete own Import'), ('view_gis_import', 'Can export to QGIS'), ('view_own_gis_import', 'Can export own to QGIS'), ('change_gis_import', 'Can import from QGIS'), ('change_own_gis_import', 'Can import own to QGIS')), 'verbose_name': 'Import - Import', 'verbose_name_plural': 'Import - Imports'},
+ ),
+ migrations.RunPython(update_groups)
+ ]