# 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) ]