From 07edef1edb1395c3035bcd178f7bb6bb71ae8cf0 Mon Sep 17 00:00:00 2001 From: Étienne Loks Date: Wed, 15 Nov 2023 16:38:21 +0100 Subject: 🗃️ imports: merge migrations MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../migrations/0230_auto_20231024_1045.py | 198 --------------------- .../migrations/0231_auto_20231115_1616.py | 193 ++++++++++++++++++++ ...31_default_mandatory_keys_import_permissions.py | 116 ------------ ...32_default_mandatory_keys_import_permissions.py | 116 ++++++++++++ 4 files changed, 309 insertions(+), 314 deletions(-) delete mode 100644 ishtar_common/migrations/0230_auto_20231024_1045.py create mode 100644 ishtar_common/migrations/0231_auto_20231115_1616.py delete mode 100644 ishtar_common/migrations/0231_default_mandatory_keys_import_permissions.py create mode 100644 ishtar_common/migrations/0232_default_mandatory_keys_import_permissions.py (limited to 'ishtar_common/migrations') diff --git a/ishtar_common/migrations/0230_auto_20231024_1045.py b/ishtar_common/migrations/0230_auto_20231024_1045.py deleted file mode 100644 index f9715bd65..000000000 --- a/ishtar_common/migrations/0230_auto_20231024_1045.py +++ /dev/null @@ -1,198 +0,0 @@ -# Generated by Django 2.2.24 on 2023-10-24 10:45 - -import django.core.validators -from django.db import migrations, models -import django.db.models.deletion -import ishtar_common.utils - - -class Migration(migrations.Migration): - - dependencies = [ - ('ishtar_common', '0229_auto_20230608_1303'), - ] - - operations = [ - migrations.CreateModel( - name='ImporterGroup', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', models.CharField(max_length=200, verbose_name='Name')), - ('slug', models.SlugField(max_length=100, unique=True, verbose_name='Slug')), - ('description', models.TextField(blank=True, default='', verbose_name='Description')), - ('available', models.BooleanField(default=True, verbose_name='Available')), - ('users', models.ManyToManyField(blank=True, to='ishtar_common.IshtarUser', verbose_name='Users')), - ], - options={ - 'verbose_name': 'Importer - Group', - 'verbose_name_plural': 'Importer - Groups', - 'ordering': ('name',), - }, - ), - 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')), 'verbose_name': 'Import - Import', 'verbose_name_plural': 'Import - Imports'}, - ), - migrations.AlterModelOptions( - name='itemkey', - options={'verbose_name': 'Import - Item key', 'verbose_name_plural': 'Import - Item keys'}, - ), - migrations.AddField( - model_name='document', - name='imports_updated', - field=models.ManyToManyField(blank=True, related_name='import_updated_ishtar_common_document', to='ishtar_common.Import'), - ), - migrations.AddField( - model_name='geovectordata', - name='imports_updated', - field=models.ManyToManyField(blank=True, related_name='import_updated_ishtar_common_geovectordata', to='ishtar_common.Import'), - ), - migrations.AddField( - model_name='import', - name='imported_values', - field=models.FileField(blank=True, help_text='La taille maximale supportée pour le fichier est de 100 Mo.', max_length=220, null=True, upload_to='upload/imports/%Y/%m/', verbose_name='Imported values'), - ), - migrations.AddField( - model_name='import', - name='next_import', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='imports', to='ishtar_common.Import', verbose_name='Next import'), - ), - migrations.AddField( - model_name='importerdefault', - name='required_fields', - field=models.CharField(blank=True, default='', help_text='Theses defaults values only apply if the designated fields are not empty. Use the "__" notation to pass between models.Leave empty to always apply.', max_length=500, verbose_name='Required fields'), - ), - migrations.AddField( - model_name='importertype', - name='archive_required', - field=models.BooleanField(default=False, verbose_name='Archive required'), - ), - migrations.AddField( - model_name='importertype', - name='ignore_errors', - field=models.TextField(blank=True, help_text='If an error is encountered with the following character strings, the error is not reported in the error file. Each message is separated with a line break.', null=True, verbose_name='Error messages to ignore'), - ), - migrations.AddField( - model_name='importertype', - name='is_import', - field=models.BooleanField(default=True, verbose_name='Can be import'), - ), - migrations.AddField( - model_name='importertype', - name='pre_import_message', - field=models.TextField(blank=True, default='', max_length=500, verbose_name='Pre-import form message'), - ), - migrations.AddField( - model_name='importertype', - name='tab_number', - field=models.PositiveIntegerField(default=1, help_text='When using an Excel or Calc file choose the tab number. Keep it to 1 by default.', validators=[django.core.validators.MinValueValidator(1)], verbose_name='Tab number'), - ), - migrations.AddField( - model_name='organization', - name='imports_updated', - field=models.ManyToManyField(blank=True, related_name='import_updated_ishtar_common_organization', to='ishtar_common.Import'), - ), - migrations.AddField( - model_name='person', - name='imports_updated', - field=models.ManyToManyField(blank=True, related_name='import_updated_ishtar_common_person', to='ishtar_common.Import'), - ), - migrations.AddField( - model_name='town', - name='imports_updated', - field=models.ManyToManyField(blank=True, related_name='import_updated_ishtar_common_town', to='ishtar_common.Import'), - ), - migrations.AlterField( - model_name='import', - name='imported_images', - field=models.FileField(blank=True, help_text='La taille maximale supportée pour le fichier est de 100 Mo.', max_length=220, null=True, upload_to='upload/imports/%Y/%m/', verbose_name='Associated documents (zip file)'), - ), - migrations.AlterField( - model_name='importercolumn', - name='col_number', - field=models.SmallIntegerField(default=1, help_text='Column number in the table. Put 0 or negative number for pre-importer field.', verbose_name='Column number'), - ), - migrations.AlterField( - model_name='importerdefault', - name='target', - field=models.CharField(help_text='The target of the default values. Can be set to empty with "-". Use the "__" notation to pass between models.', max_length=500, verbose_name='Target'), - ), - migrations.AlterField( - model_name='ishtarsiteprofile', - name='account_naming_style', - field=models.CharField(choices=[('NF', 'name.firstname'), ('FN', 'firstname.name')], default='FN', max_length=2, verbose_name='Naming style for accounts'), - ), - migrations.CreateModel( - name='ImportGroup', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', models.CharField(max_length=500, null=True, verbose_name='Name')), - ('imported_file', models.FileField(blank=True, help_text='La taille maximale supportée pour le fichier est de 100 Mo.', max_length=220, null=True, upload_to='upload/imports/%Y/%m/', verbose_name='Imported file')), - ('imported_images', models.FileField(blank=True, help_text='La taille maximale supportée pour le fichier est de 100 Mo.', max_length=220, null=True, upload_to='upload/imports/%Y/%m/', verbose_name='Associated documents (zip file)')), - ('archive_file', models.FileField(blank=True, help_text='La taille maximale supportée pour le fichier est de 100 Mo.', max_length=255, null=True, upload_to='upload/imports/%Y/%m/', verbose_name='Archive file')), - ('encoding', models.CharField(choices=[('windows-1252', 'windows-1252'), ('ISO-8859-15', 'ISO-8859-15'), ('utf-8', 'utf-8')], default='utf-8', help_text='Only required for CSV file', max_length=15, verbose_name='Encoding')), - ('csv_sep', models.CharField(choices=[(',', ','), (';', ';'), ('|', '|')], default=',', help_text='Separator for CSV file. Standard is comma but Microsoft Excel do not follow this standard and use semi-colon.', max_length=1, verbose_name='CSV separator')), - ('skip_lines', models.IntegerField(default=1, help_text='Number of header lines in your file (can be 0 and should be 0 for geopackage or Shapefile).', verbose_name='Skip lines')), - ('creation_date', models.DateTimeField(auto_now_add=True, null=True, verbose_name='Creation date')), - ('end_date', models.DateTimeField(auto_now_add=True, null=True, verbose_name='End date')), - ('current_import', models.PositiveIntegerField(blank=True, null=True, verbose_name='Current import')), - ('state', models.CharField(choices=[('C', 'Created'), ('AP', 'Analyse in progress'), ('A', 'Analysed'), ('IQ', 'Import in queue'), ('IP', 'Import in progress'), ('PP', 'Post-processing in progress'), ('FE', 'Finished with errors'), ('F', 'Finished'), ('AC', 'Archived')], default='C', max_length=2, verbose_name='State')), - ('importer_type', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='ishtar_common.ImporterGroup', verbose_name='Importer group type')), - ('user', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='ishtar_common.IshtarUser')), - ], - options={ - 'verbose_name': 'Import - Group', - 'verbose_name_plural': 'Import - Groups', - 'permissions': (('view_own_importgroup', 'Can view own Import Group'), ('add_own_importgroup', 'Can add own Import Group'), ('change_own_importgroup', 'Can change own Import Group'), ('delete_own_importgroup', 'Can delete own Import Group')), - }, - bases=(models.Model, ishtar_common.utils.OwnPerms, ishtar_common.utils.SheetItem), - ), - migrations.AddField( - model_name='import', - name='group', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='imports', to='ishtar_common.ImportGroup', verbose_name='Group'), - ), - migrations.CreateModel( - name='ImportLineError', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('line', models.PositiveIntegerField(verbose_name='Line')), - ('ignored', models.BooleanField(default=False, verbose_name='Ignored')), - ('import_item', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='error_lines', to='ishtar_common.Import')), - ], - options={ - 'verbose_name': 'Import - Ignored error', - 'verbose_name_plural': 'Import - Ignored error', - 'ordering': ('import_item', 'line'), - 'unique_together': {('line', 'import_item')}, - }, - ), - migrations.CreateModel( - name='ImporterGroupImporter', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('order', models.PositiveIntegerField(default=10, validators=[django.core.validators.MinValueValidator(1)], verbose_name='Order')), - ('group', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='importer_types', to='ishtar_common.ImporterGroup')), - ('importer_type', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='groups', to='ishtar_common.ImporterType')), - ], - options={ - 'verbose_name': 'Importer - Group <-> Importer', - 'ordering': ('group', 'order'), - 'unique_together': {('group', 'order')}, - }, - ), - migrations.CreateModel( - name='ImportColumnValue', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('value', models.TextField(blank=True, default='')), - ('column', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='ishtar_common.ImporterColumn')), - ('import_item', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='ishtar_common.Import')), - ], - options={ - 'verbose_name': 'Import - Pre-import value', - 'verbose_name_plural': 'Import - Pre-import values', - 'unique_together': {('column', 'import_item')}, - }, - ), - ] diff --git a/ishtar_common/migrations/0231_auto_20231115_1616.py b/ishtar_common/migrations/0231_auto_20231115_1616.py new file mode 100644 index 000000000..0f692d5d2 --- /dev/null +++ b/ishtar_common/migrations/0231_auto_20231115_1616.py @@ -0,0 +1,193 @@ +# Generated by Django 2.2.24 on 2023-11-15 16:16 + +import django.core.validators +from django.db import migrations, models +import django.db.models.deletion +import ishtar_common.utils + + +class Migration(migrations.Migration): + + dependencies = [ + ('ishtar_common', '0230_auto_20231114_1334'), + ] + + operations = [ + migrations.CreateModel( + name='ImporterGroup', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(max_length=200, verbose_name='Name')), + ('slug', models.SlugField(max_length=100, unique=True, verbose_name='Slug')), + ('description', models.TextField(blank=True, default='', verbose_name='Description')), + ('available', models.BooleanField(default=True, verbose_name='Available')), + ('users', models.ManyToManyField(blank=True, to='ishtar_common.IshtarUser', verbose_name='Users')), + ], + options={ + 'verbose_name': 'Importer - Group', + 'verbose_name_plural': 'Importer - Groups', + 'ordering': ('name',), + }, + ), + 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')), 'verbose_name': 'Import - Import', 'verbose_name_plural': 'Import - Imports'}, + ), + migrations.AlterModelOptions( + name='itemkey', + options={'verbose_name': 'Import - Item key', 'verbose_name_plural': 'Import - Item keys'}, + ), + migrations.AddField( + model_name='document', + name='imports_updated', + field=models.ManyToManyField(blank=True, related_name='import_updated_ishtar_common_document', to='ishtar_common.Import'), + ), + migrations.AddField( + model_name='geovectordata', + name='imports_updated', + field=models.ManyToManyField(blank=True, related_name='import_updated_ishtar_common_geovectordata', to='ishtar_common.Import'), + ), + migrations.AddField( + model_name='import', + name='imported_values', + field=models.FileField(blank=True, help_text='La taille maximale supportée pour le fichier est de 100 Mo.', max_length=220, null=True, upload_to='upload/imports/%Y/%m/', verbose_name='Imported values'), + ), + migrations.AddField( + model_name='import', + name='next_import', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='imports', to='ishtar_common.Import', verbose_name='Next import'), + ), + migrations.AddField( + model_name='importerdefault', + name='required_fields', + field=models.CharField(blank=True, default='', help_text='Theses defaults values only apply if the designated fields are not empty. Use the "__" notation to pass between models.Leave empty to always apply.', max_length=500, verbose_name='Required fields'), + ), + migrations.AddField( + model_name='importertype', + name='archive_required', + field=models.BooleanField(default=False, verbose_name='Archive required'), + ), + migrations.AddField( + model_name='importertype', + name='ignore_errors', + field=models.TextField(blank=True, help_text='If an error is encountered with the following character strings, the error is not reported in the error file. Each message is separated with a line break.', null=True, verbose_name='Error messages to ignore'), + ), + migrations.AddField( + model_name='importertype', + name='is_import', + field=models.BooleanField(default=True, verbose_name='Can be import'), + ), + migrations.AddField( + model_name='importertype', + name='pre_import_message', + field=models.TextField(blank=True, default='', max_length=500, verbose_name='Pre-import form message'), + ), + migrations.AddField( + model_name='importertype', + name='tab_number', + field=models.PositiveIntegerField(default=1, help_text='When using an Excel or Calc file choose the tab number. Keep it to 1 by default.', validators=[django.core.validators.MinValueValidator(1)], verbose_name='Tab number'), + ), + migrations.AddField( + model_name='organization', + name='imports_updated', + field=models.ManyToManyField(blank=True, related_name='import_updated_ishtar_common_organization', to='ishtar_common.Import'), + ), + migrations.AddField( + model_name='person', + name='imports_updated', + field=models.ManyToManyField(blank=True, related_name='import_updated_ishtar_common_person', to='ishtar_common.Import'), + ), + migrations.AddField( + model_name='town', + name='imports_updated', + field=models.ManyToManyField(blank=True, related_name='import_updated_ishtar_common_town', to='ishtar_common.Import'), + ), + migrations.AlterField( + model_name='import', + name='imported_images', + field=models.FileField(blank=True, help_text='La taille maximale supportée pour le fichier est de 100 Mo.', max_length=220, null=True, upload_to='upload/imports/%Y/%m/', verbose_name='Associated documents (zip file)'), + ), + migrations.AlterField( + model_name='importercolumn', + name='col_number', + field=models.SmallIntegerField(default=1, help_text='Column number in the table. Put 0 or negative number for pre-importer field.', verbose_name='Column number'), + ), + migrations.AlterField( + model_name='importerdefault', + name='target', + field=models.CharField(help_text='The target of the default values. Can be set to empty with "-". Use the "__" notation to pass between models.', max_length=500, verbose_name='Target'), + ), + migrations.CreateModel( + name='ImportGroup', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(max_length=500, null=True, verbose_name='Name')), + ('imported_file', models.FileField(blank=True, help_text='La taille maximale supportée pour le fichier est de 100 Mo.', max_length=220, null=True, upload_to='upload/imports/%Y/%m/', verbose_name='Imported file')), + ('imported_images', models.FileField(blank=True, help_text='La taille maximale supportée pour le fichier est de 100 Mo.', max_length=220, null=True, upload_to='upload/imports/%Y/%m/', verbose_name='Associated documents (zip file)')), + ('archive_file', models.FileField(blank=True, help_text='La taille maximale supportée pour le fichier est de 100 Mo.', max_length=255, null=True, upload_to='upload/imports/%Y/%m/', verbose_name='Archive file')), + ('encoding', models.CharField(choices=[('windows-1252', 'windows-1252'), ('ISO-8859-15', 'ISO-8859-15'), ('utf-8', 'utf-8')], default='utf-8', help_text='Only required for CSV file', max_length=15, verbose_name='Encoding')), + ('csv_sep', models.CharField(choices=[(',', ','), (';', ';'), ('|', '|')], default=',', help_text='Separator for CSV file. Standard is comma but Microsoft Excel do not follow this standard and use semi-colon.', max_length=1, verbose_name='CSV separator')), + ('skip_lines', models.IntegerField(default=1, help_text='Number of header lines in your file (can be 0 and should be 0 for geopackage or Shapefile).', verbose_name='Skip lines')), + ('creation_date', models.DateTimeField(auto_now_add=True, null=True, verbose_name='Creation date')), + ('end_date', models.DateTimeField(auto_now_add=True, null=True, verbose_name='End date')), + ('current_import', models.PositiveIntegerField(blank=True, null=True, verbose_name='Current import')), + ('state', models.CharField(choices=[('C', 'Created'), ('AP', 'Analyse in progress'), ('A', 'Analysed'), ('IQ', 'Import in queue'), ('IP', 'Import in progress'), ('PP', 'Post-processing in progress'), ('FE', 'Finished with errors'), ('F', 'Finished'), ('AC', 'Archived')], default='C', max_length=2, verbose_name='State')), + ('importer_type', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='ishtar_common.ImporterGroup', verbose_name='Importer group type')), + ('user', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='ishtar_common.IshtarUser')), + ], + options={ + 'verbose_name': 'Import - Group', + 'verbose_name_plural': 'Import - Groups', + 'permissions': (('view_own_importgroup', 'Can view own Import Group'), ('add_own_importgroup', 'Can add own Import Group'), ('change_own_importgroup', 'Can change own Import Group'), ('delete_own_importgroup', 'Can delete own Import Group')), + }, + bases=(models.Model, ishtar_common.utils.OwnPerms, ishtar_common.utils.SheetItem), + ), + migrations.AddField( + model_name='import', + name='group', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='imports', to='ishtar_common.ImportGroup', verbose_name='Group'), + ), + migrations.CreateModel( + name='ImportLineError', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('line', models.PositiveIntegerField(verbose_name='Line')), + ('ignored', models.BooleanField(default=False, verbose_name='Ignored')), + ('import_item', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='error_lines', to='ishtar_common.Import')), + ], + options={ + 'verbose_name': 'Import - Ignored error', + 'verbose_name_plural': 'Import - Ignored error', + 'ordering': ('import_item', 'line'), + 'unique_together': {('line', 'import_item')}, + }, + ), + migrations.CreateModel( + name='ImporterGroupImporter', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('order', models.PositiveIntegerField(default=10, validators=[django.core.validators.MinValueValidator(1)], verbose_name='Order')), + ('group', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='importer_types', to='ishtar_common.ImporterGroup')), + ('importer_type', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='groups', to='ishtar_common.ImporterType')), + ], + options={ + 'verbose_name': 'Importer - Group <-> Importer', + 'ordering': ('group', 'order'), + 'unique_together': {('group', 'order')}, + }, + ), + migrations.CreateModel( + name='ImportColumnValue', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('value', models.TextField(blank=True, default='')), + ('column', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='ishtar_common.ImporterColumn')), + ('import_item', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='ishtar_common.Import')), + ], + options={ + 'verbose_name': 'Import - Pre-import value', + 'verbose_name_plural': 'Import - Pre-import values', + 'unique_together': {('column', 'import_item')}, + }, + ), + ] diff --git a/ishtar_common/migrations/0231_default_mandatory_keys_import_permissions.py b/ishtar_common/migrations/0231_default_mandatory_keys_import_permissions.py deleted file mode 100644 index 120711f09..000000000 --- a/ishtar_common/migrations/0231_default_mandatory_keys_import_permissions.py +++ /dev/null @@ -1,116 +0,0 @@ -# Generated by Django 2.2.24 on 2023-09-18 17:05 - -from django.db import migrations - -COLOR_WARNING = "\033[93m" -COLOR_ENDC = "\033[0m" - -EXCLUDE_LIST = [ - "-", - "auto_external_id", - "spatial_reference_system", - "public_domain", -] - -FULL_COPY_LIST = [ - "scientist__attached_to", -] - -GROUPS = [ - [ - "Imports : lecture", - "view_import", - "ishtar_common", - "import" - ], - [ - "Imports rattachés : lecture", - "view_own_import", - "ishtar_common", - "import" - ], - [ - "Imports : modification", - "change_import", - "ishtar_common", - "import" - ], - [ - "Imports rattachés : modification", - "change_own_import", - "ishtar_common", - "import" - ], - [ - "Imports : suppression", - "delete_import", - "ishtar_common", - "import" - ], - [ - "Imports rattachés : suppression", - "delete_own_import", - "ishtar_common", - "import" - ], - [ - "Imports : ajout", - "add_import", - "ishtar_common", - "import" - ], - [ - "Imports rattachés : ajout", - "add_own_import", - "ishtar_common", - "import" - ], -] - - -def migrate(apps, __): - ImporterDefault = apps.get_model('ishtar_common', 'ImporterDefault') - for default in ImporterDefault.objects.all(): - if default.target not in EXCLUDE_LIST: - req = default.target - if req not in FULL_COPY_LIST: - req = req.split("__")[0] - if req.endswith("_type") or req.endswith("_types"): - continue - default.required_fields = req - default.save() - - print("") - ProfileType = apps.get_model('ishtar_common', 'ProfileType') - q = ProfileType.objects.filter(txt_idx="administrator") - administrator = None - if not q.count(): - print(COLOR_WARNING + "** No administrator profile found. **" + COLOR_ENDC) - else: - administrator = q.all()[0] - - Permission = apps.get_model("auth", "Permission") - Group = apps.get_model("auth", "Group") - ContentType = apps.get_model("contenttypes", "ContentType") - for name, codename, app, model in GROUPS: - ct, __ = ContentType.objects.get_or_create(app_label=app, model=model) - perm, __ = Permission.objects.get_or_create( - codename=codename, defaults={"name": name, "content_type": ct} - ) - group, __ = Group.objects.get_or_create(name=name) - group.permissions.add(perm) - if administrator: - administrator.groups.add(group) - - print(COLOR_WARNING + "** Verify import permissions in profiles **" + COLOR_ENDC) - - -class Migration(migrations.Migration): - - dependencies = [ - ('ishtar_common', '0230_auto_20231024_1045'), - ] - - operations = [ - migrations.RunPython(migrate), - ] diff --git a/ishtar_common/migrations/0232_default_mandatory_keys_import_permissions.py b/ishtar_common/migrations/0232_default_mandatory_keys_import_permissions.py new file mode 100644 index 000000000..a465ad9a4 --- /dev/null +++ b/ishtar_common/migrations/0232_default_mandatory_keys_import_permissions.py @@ -0,0 +1,116 @@ +# Generated by Django 2.2.24 on 2023-09-18 17:05 + +from django.db import migrations + +COLOR_WARNING = "\033[93m" +COLOR_ENDC = "\033[0m" + +EXCLUDE_LIST = [ + "-", + "auto_external_id", + "spatial_reference_system", + "public_domain", +] + +FULL_COPY_LIST = [ + "scientist__attached_to", +] + +GROUPS = [ + [ + "Imports : lecture", + "view_import", + "ishtar_common", + "import" + ], + [ + "Imports rattachés : lecture", + "view_own_import", + "ishtar_common", + "import" + ], + [ + "Imports : modification", + "change_import", + "ishtar_common", + "import" + ], + [ + "Imports rattachés : modification", + "change_own_import", + "ishtar_common", + "import" + ], + [ + "Imports : suppression", + "delete_import", + "ishtar_common", + "import" + ], + [ + "Imports rattachés : suppression", + "delete_own_import", + "ishtar_common", + "import" + ], + [ + "Imports : ajout", + "add_import", + "ishtar_common", + "import" + ], + [ + "Imports rattachés : ajout", + "add_own_import", + "ishtar_common", + "import" + ], +] + + +def migrate(apps, __): + ImporterDefault = apps.get_model('ishtar_common', 'ImporterDefault') + for default in ImporterDefault.objects.all(): + if default.target not in EXCLUDE_LIST: + req = default.target + if req not in FULL_COPY_LIST: + req = req.split("__")[0] + if req.endswith("_type") or req.endswith("_types"): + continue + default.required_fields = req + default.save() + + print("") + ProfileType = apps.get_model('ishtar_common', 'ProfileType') + q = ProfileType.objects.filter(txt_idx="administrator") + administrator = None + if not q.count(): + print(COLOR_WARNING + "** No administrator profile found. **" + COLOR_ENDC) + else: + administrator = q.all()[0] + + Permission = apps.get_model("auth", "Permission") + Group = apps.get_model("auth", "Group") + ContentType = apps.get_model("contenttypes", "ContentType") + for name, codename, app, model in GROUPS: + ct, __ = ContentType.objects.get_or_create(app_label=app, model=model) + perm, __ = Permission.objects.get_or_create( + codename=codename, defaults={"name": name, "content_type": ct} + ) + group, __ = Group.objects.get_or_create(name=name) + group.permissions.add(perm) + if administrator: + administrator.groups.add(group) + + print(COLOR_WARNING + "** Verify import permissions in profiles **" + COLOR_ENDC) + + +class Migration(migrations.Migration): + + dependencies = [ + ('ishtar_common', '0231_auto_20231115_1616'), + ] + + operations = [ + migrations.RunPython(migrate), + ] -- cgit v1.2.3