diff options
| author | Étienne Loks <etienne.loks@iggdrasil.net> | 2026-02-25 11:05:41 +0100 |
|---|---|---|
| committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2026-02-25 12:31:27 +0100 |
| commit | 15619786d41df09e9701d23842724ac0a30fd85d (patch) | |
| tree | 9c139d65a2fc0b750542f23642d214f83a4bf310 /ishtar_common/migrations | |
| parent | 53b408380649f39880763b35a2a9d24eb7cc014a (diff) | |
| download | Ishtar-15619786d41df09e9701d23842724ac0a30fd85d.tar.bz2 Ishtar-15619786d41df09e9701d23842724ac0a30fd85d.zip | |
🗃️ refactoring migrations
Diffstat (limited to 'ishtar_common/migrations')
| -rw-r--r-- | ishtar_common/migrations/0268_add_timezone_django_v4.py (renamed from ishtar_common/migrations/0267_add_timezone_django_v4.py) | 2 | ||||
| -rw-r--r-- | ishtar_common/migrations/0268_userrequesttoken_usertoken.py | 64 | ||||
| -rw-r--r-- | ishtar_common/migrations/0269_gis_importchunk.py | 31 | ||||
| -rw-r--r-- | ishtar_common/migrations/0269_gis_plugin.py | 137 | ||||
| -rw-r--r-- | ishtar_common/migrations/0270_gis_import_key_init.py | 25 | ||||
| -rw-r--r-- | ishtar_common/migrations/0270_ishtarsiteprofile_dating_external_id.py (renamed from ishtar_common/migrations/0272_ishtarsiteprofile_dating_external_id.py) | 2 | ||||
| -rw-r--r-- | ishtar_common/migrations/0271_import_import_immediatly.py | 18 | ||||
| -rw-r--r-- | ishtar_common/migrations/0271_importerduplicatefield_concat_str.py (renamed from ishtar_common/migrations/0275_importerduplicatefield_concat_str.py) | 2 | ||||
| -rw-r--r-- | ishtar_common/migrations/0273_importertype_gis_type.py | 19 | ||||
| -rw-r--r-- | ishtar_common/migrations/0274_import_gis_options.py | 46 |
10 files changed, 140 insertions, 206 deletions
diff --git a/ishtar_common/migrations/0267_add_timezone_django_v4.py b/ishtar_common/migrations/0268_add_timezone_django_v4.py index 0eb973d87..f12359691 100644 --- a/ishtar_common/migrations/0267_add_timezone_django_v4.py +++ b/ishtar_common/migrations/0268_add_timezone_django_v4.py @@ -10,7 +10,7 @@ import re class Migration(migrations.Migration): dependencies = [ - ('ishtar_common', '0266_migrate_cached_town'), + ('ishtar_common', '0267_reinitialize_item_keys'), ] operations = [ diff --git a/ishtar_common/migrations/0268_userrequesttoken_usertoken.py b/ishtar_common/migrations/0268_userrequesttoken_usertoken.py deleted file mode 100644 index 9c13acc64..000000000 --- a/ishtar_common/migrations/0268_userrequesttoken_usertoken.py +++ /dev/null @@ -1,64 +0,0 @@ -# Generated by Django 4.2.19 on 2025-05-09 08:25 - -from django.conf import settings -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('auth', '0012_alter_user_first_name_max_length'), - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ('ishtar_common', '0267_add_timezone_django_v4'), - ] - - 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'), - }, - ), - ] diff --git a/ishtar_common/migrations/0269_gis_importchunk.py b/ishtar_common/migrations/0269_gis_importchunk.py deleted file mode 100644 index 995a8642d..000000000 --- a/ishtar_common/migrations/0269_gis_importchunk.py +++ /dev/null @@ -1,31 +0,0 @@ -# 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', '0268_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/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) + ] diff --git a/ishtar_common/migrations/0270_gis_import_key_init.py b/ishtar_common/migrations/0270_gis_import_key_init.py deleted file mode 100644 index 030db3a25..000000000 --- a/ishtar_common/migrations/0270_gis_import_key_init.py +++ /dev/null @@ -1,25 +0,0 @@ -import sys -from django.db import migrations - -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 - - -class Migration(migrations.Migration): - - dependencies = [ - ('ishtar_common', '0269_gis_importchunk'), - ] - - operations = [ - migrations.RunPython(update_importkey) - ] diff --git a/ishtar_common/migrations/0272_ishtarsiteprofile_dating_external_id.py b/ishtar_common/migrations/0270_ishtarsiteprofile_dating_external_id.py index a3c8f278a..fb6ac3944 100644 --- a/ishtar_common/migrations/0272_ishtarsiteprofile_dating_external_id.py +++ b/ishtar_common/migrations/0270_ishtarsiteprofile_dating_external_id.py @@ -6,7 +6,7 @@ from django.db import migrations, models class Migration(migrations.Migration): dependencies = [ - ('ishtar_common', '0271_import_import_immediatly'), + ('ishtar_common', '0269_gis_plugin'), ] operations = [ diff --git a/ishtar_common/migrations/0271_import_import_immediatly.py b/ishtar_common/migrations/0271_import_import_immediatly.py deleted file mode 100644 index ff94a566b..000000000 --- a/ishtar_common/migrations/0271_import_import_immediatly.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 4.2.19 on 2025-08-05 09:33 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('ishtar_common', '0270_gis_import_key_init'), - ] - - operations = [ - migrations.AddField( - model_name='import', - name='import_immediatly', - field=models.BooleanField(default=False, verbose_name='Import Immediatly'), - ), - ] diff --git a/ishtar_common/migrations/0275_importerduplicatefield_concat_str.py b/ishtar_common/migrations/0271_importerduplicatefield_concat_str.py index be535d629..3d4a3badf 100644 --- a/ishtar_common/migrations/0275_importerduplicatefield_concat_str.py +++ b/ishtar_common/migrations/0271_importerduplicatefield_concat_str.py @@ -6,7 +6,7 @@ from django.db import migrations, models class Migration(migrations.Migration): dependencies = [ - ('ishtar_common', '0274_import_gis_options'), + ('ishtar_common', '0270_ishtarsiteprofile_dating_external_id'), ] operations = [ diff --git a/ishtar_common/migrations/0273_importertype_gis_type.py b/ishtar_common/migrations/0273_importertype_gis_type.py deleted file mode 100644 index 3438b76b9..000000000 --- a/ishtar_common/migrations/0273_importertype_gis_type.py +++ /dev/null @@ -1,19 +0,0 @@ -# Generated by Django 4.2.19 on 2025-12-15 10:25 - -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('ishtar_common', '0272_ishtarsiteprofile_dating_external_id'), - ] - - operations = [ - 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'), - ), - ] diff --git a/ishtar_common/migrations/0274_import_gis_options.py b/ishtar_common/migrations/0274_import_gis_options.py deleted file mode 100644 index 553f2fb83..000000000 --- a/ishtar_common/migrations/0274_import_gis_options.py +++ /dev/null @@ -1,46 +0,0 @@ -# Generated by Django 4.2.19 on 2026-01-21 14:08 - -from django.db import migrations -from django.utils.translation import gettext_lazy as _ - - -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 = [ - ('ishtar_common', '0273_importertype_gis_type'), - ] - - operations = [ - 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) - ] |
