summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--archaeological_context_records/migrations/0122_cr_ishtar_users.py110
-rw-r--r--archaeological_files/migrations/0119_file_ishtar_users.py19
-rw-r--r--archaeological_finds/migrations/0131_ishtar_users.py60
-rw-r--r--archaeological_operations/migrations/0121_ishtar_users.py146
-rw-r--r--archaeological_warehouse/migrations/0123_warehouse_container_ishtar_users.py24
-rw-r--r--ishtar_common/migrations/0254_permissionrequests.py158
-rw-r--r--ishtar_common/models.py58
-rw-r--r--ishtar_common/models_common.py39
8 files changed, 587 insertions, 27 deletions
diff --git a/archaeological_context_records/migrations/0122_cr_ishtar_users.py b/archaeological_context_records/migrations/0122_cr_ishtar_users.py
new file mode 100644
index 000000000..8e16cfb45
--- /dev/null
+++ b/archaeological_context_records/migrations/0122_cr_ishtar_users.py
@@ -0,0 +1,110 @@
+# Generated by Django 2.2.24 on 2024-10-21 19:18
+
+from django.db import migrations, models
+import ishtar_common.utils
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('ishtar_common', '0254_permissionrequests'),
+ ('archaeological_context_records', '0121_add_hierarchy_documentations_excavation_technics'),
+ ]
+
+ operations = [
+ migrations.AddField(
+ model_name='contextrecord',
+ name='ishtar_users',
+ field=models.ManyToManyField(blank=True, related_name='contextrecord_permission_associated', to='ishtar_common.IshtarUser'),
+ ),
+ migrations.AlterField(
+ model_name='contextrecord',
+ name='relation_bitmap_image',
+ field=models.FileField(blank=True, help_text=ishtar_common.utils.max_size_help, null=True, upload_to=ishtar_common.utils.get_image_path, verbose_name='Generated relation image (PNG)'),
+ ),
+ migrations.AlterField(
+ model_name='contextrecord',
+ name='relation_bitmap_image_above',
+ field=models.FileField(blank=True, help_text=ishtar_common.utils.max_size_help, null=True, upload_to=ishtar_common.utils.get_image_path, verbose_name='Generated above relation image (PNG)'),
+ ),
+ migrations.AlterField(
+ model_name='contextrecord',
+ name='relation_bitmap_image_below',
+ field=models.FileField(blank=True, help_text=ishtar_common.utils.max_size_help, null=True, upload_to=ishtar_common.utils.get_image_path, verbose_name='Generated below relation image (PNG)'),
+ ),
+ migrations.AlterField(
+ model_name='contextrecord',
+ name='relation_dot',
+ field=models.FileField(blank=True, help_text=ishtar_common.utils.max_size_help, null=True, upload_to=ishtar_common.utils.get_image_path, verbose_name='Generated relation image (DOT)'),
+ ),
+ migrations.AlterField(
+ model_name='contextrecord',
+ name='relation_dot_above',
+ field=models.FileField(blank=True, help_text=ishtar_common.utils.max_size_help, null=True, upload_to=ishtar_common.utils.get_image_path, verbose_name='Generated above relation image (DOT)'),
+ ),
+ migrations.AlterField(
+ model_name='contextrecord',
+ name='relation_dot_below',
+ field=models.FileField(blank=True, help_text=ishtar_common.utils.max_size_help, null=True, upload_to=ishtar_common.utils.get_image_path, verbose_name='Generated below relation image (DOT)'),
+ ),
+ migrations.AlterField(
+ model_name='contextrecord',
+ name='relation_image',
+ field=models.FileField(blank=True, help_text=ishtar_common.utils.max_size_help, null=True, upload_to=ishtar_common.utils.get_image_path, verbose_name='Generated relation image (SVG)'),
+ ),
+ migrations.AlterField(
+ model_name='contextrecord',
+ name='relation_image_above',
+ field=models.FileField(blank=True, help_text=ishtar_common.utils.max_size_help, null=True, upload_to=ishtar_common.utils.get_image_path, verbose_name='Generated above relation image (SVG)'),
+ ),
+ migrations.AlterField(
+ model_name='contextrecord',
+ name='relation_image_below',
+ field=models.FileField(blank=True, help_text=ishtar_common.utils.max_size_help, null=True, upload_to=ishtar_common.utils.get_image_path, verbose_name='Generated below relation image (SVG)'),
+ ),
+ migrations.AlterField(
+ model_name='historicalcontextrecord',
+ name='relation_bitmap_image',
+ field=models.TextField(blank=True, help_text=ishtar_common.utils.max_size_help, max_length=100, null=True, verbose_name='Generated relation image (PNG)'),
+ ),
+ migrations.AlterField(
+ model_name='historicalcontextrecord',
+ name='relation_bitmap_image_above',
+ field=models.TextField(blank=True, help_text=ishtar_common.utils.max_size_help, max_length=100, null=True, verbose_name='Generated above relation image (PNG)'),
+ ),
+ migrations.AlterField(
+ model_name='historicalcontextrecord',
+ name='relation_bitmap_image_below',
+ field=models.TextField(blank=True, help_text=ishtar_common.utils.max_size_help, max_length=100, null=True, verbose_name='Generated below relation image (PNG)'),
+ ),
+ migrations.AlterField(
+ model_name='historicalcontextrecord',
+ name='relation_dot',
+ field=models.TextField(blank=True, help_text=ishtar_common.utils.max_size_help, max_length=100, null=True, verbose_name='Generated relation image (DOT)'),
+ ),
+ migrations.AlterField(
+ model_name='historicalcontextrecord',
+ name='relation_dot_above',
+ field=models.TextField(blank=True, help_text=ishtar_common.utils.max_size_help, max_length=100, null=True, verbose_name='Generated above relation image (DOT)'),
+ ),
+ migrations.AlterField(
+ model_name='historicalcontextrecord',
+ name='relation_dot_below',
+ field=models.TextField(blank=True, help_text=ishtar_common.utils.max_size_help, max_length=100, null=True, verbose_name='Generated below relation image (DOT)'),
+ ),
+ migrations.AlterField(
+ model_name='historicalcontextrecord',
+ name='relation_image',
+ field=models.TextField(blank=True, help_text=ishtar_common.utils.max_size_help, max_length=100, null=True, verbose_name='Generated relation image (SVG)'),
+ ),
+ migrations.AlterField(
+ model_name='historicalcontextrecord',
+ name='relation_image_above',
+ field=models.TextField(blank=True, help_text=ishtar_common.utils.max_size_help, max_length=100, null=True, verbose_name='Generated above relation image (SVG)'),
+ ),
+ migrations.AlterField(
+ model_name='historicalcontextrecord',
+ name='relation_image_below',
+ field=models.TextField(blank=True, help_text=ishtar_common.utils.max_size_help, max_length=100, null=True, verbose_name='Generated below relation image (SVG)'),
+ ),
+ ]
diff --git a/archaeological_files/migrations/0119_file_ishtar_users.py b/archaeological_files/migrations/0119_file_ishtar_users.py
new file mode 100644
index 000000000..eb33f34b9
--- /dev/null
+++ b/archaeological_files/migrations/0119_file_ishtar_users.py
@@ -0,0 +1,19 @@
+# Generated by Django 2.2.24 on 2024-10-21 19:18
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('ishtar_common', '0254_permissionrequests'),
+ ('archaeological_files', '0118_operation_name'),
+ ]
+
+ operations = [
+ migrations.AddField(
+ model_name='file',
+ name='ishtar_users',
+ field=models.ManyToManyField(blank=True, related_name='file_permission_associated', to='ishtar_common.IshtarUser'),
+ ),
+ ]
diff --git a/archaeological_finds/migrations/0131_ishtar_users.py b/archaeological_finds/migrations/0131_ishtar_users.py
new file mode 100644
index 000000000..8d8772343
--- /dev/null
+++ b/archaeological_finds/migrations/0131_ishtar_users.py
@@ -0,0 +1,60 @@
+# Generated by Django 2.2.24 on 2024-10-21 19:18
+
+from django.db import migrations, models
+import ishtar_common.utils
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('ishtar_common', '0254_permissionrequests'),
+ ('archaeological_finds', '0130_data_discovery_method'),
+ ]
+
+ operations = [
+ migrations.AddField(
+ model_name='basefind',
+ name='ishtar_users',
+ field=models.ManyToManyField(blank=True, related_name='basefind_permission_associated', to='ishtar_common.IshtarUser'),
+ ),
+ migrations.AddField(
+ model_name='find',
+ name='ishtar_users',
+ field=models.ManyToManyField(blank=True, related_name='find_permission_associated', to='ishtar_common.IshtarUser'),
+ ),
+ migrations.AddField(
+ model_name='property',
+ name='ishtar_users',
+ field=models.ManyToManyField(blank=True, related_name='property_permission_associated', to='ishtar_common.IshtarUser'),
+ ),
+ migrations.AddField(
+ model_name='treatment',
+ name='ishtar_users',
+ field=models.ManyToManyField(blank=True, related_name='treatment_permission_associated', to='ishtar_common.IshtarUser'),
+ ),
+ migrations.AddField(
+ model_name='treatmentfile',
+ name='ishtar_users',
+ field=models.ManyToManyField(blank=True, related_name='treatmentfile_permission_associated', to='ishtar_common.IshtarUser'),
+ ),
+ migrations.AlterField(
+ model_name='historicaltreatment',
+ name='image',
+ field=models.TextField(blank=True, help_text=ishtar_common.utils.max_size_help, max_length=255, null=True),
+ ),
+ migrations.AlterField(
+ model_name='historicaltreatment',
+ name='thumbnail',
+ field=models.TextField(blank=True, help_text=ishtar_common.utils.max_size_help, max_length=255, null=True),
+ ),
+ migrations.AlterField(
+ model_name='treatment',
+ name='image',
+ field=models.ImageField(blank=True, help_text=ishtar_common.utils.max_size_help, max_length=255, null=True, upload_to=ishtar_common.utils.get_image_path),
+ ),
+ migrations.AlterField(
+ model_name='treatment',
+ name='thumbnail',
+ field=models.ImageField(blank=True, help_text=ishtar_common.utils.max_size_help, max_length=255, null=True, upload_to=ishtar_common.utils.get_image_path),
+ ),
+ ]
diff --git a/archaeological_operations/migrations/0121_ishtar_users.py b/archaeological_operations/migrations/0121_ishtar_users.py
new file mode 100644
index 000000000..b906003c1
--- /dev/null
+++ b/archaeological_operations/migrations/0121_ishtar_users.py
@@ -0,0 +1,146 @@
+# Generated by Django 2.2.24 on 2024-10-21 19:18
+
+from django.db import migrations, models
+import django.db.models.deletion
+import ishtar_common.utils
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('ishtar_common', '0254_permissionrequests'),
+ ('archaeological_operations', '0120_data_site_status_nature_interpretation'),
+ ]
+
+ operations = [
+ migrations.AddField(
+ model_name='administrativeact',
+ name='ishtar_users',
+ field=models.ManyToManyField(blank=True, related_name='administrativeact_permission_associated', to='ishtar_common.IshtarUser'),
+ ),
+ migrations.AddField(
+ model_name='archaeologicalsite',
+ name='ishtar_users',
+ field=models.ManyToManyField(blank=True, related_name='archaeologicalsite_permission_associated', to='ishtar_common.IshtarUser'),
+ ),
+ migrations.AddField(
+ model_name='operation',
+ name='ishtar_users',
+ field=models.ManyToManyField(blank=True, related_name='operation_permission_associated', to='ishtar_common.IshtarUser'),
+ ),
+ migrations.AddField(
+ model_name='parcel',
+ name='ishtar_users',
+ field=models.ManyToManyField(blank=True, related_name='parcel_permission_associated', to='ishtar_common.IshtarUser'),
+ ),
+ migrations.AddField(
+ model_name='parcelowner',
+ name='ishtar_users',
+ field=models.ManyToManyField(blank=True, related_name='parcelowner_permission_associated', to='ishtar_common.IshtarUser'),
+ ),
+ migrations.AlterField(
+ model_name='archaeologicalsite',
+ name='discoverer',
+ field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='site_discovered', to='ishtar_common.Person', verbose_name='Discoverer'),
+ ),
+ migrations.AlterField(
+ model_name='archaeologicalsite',
+ name='precise_locality',
+ field=models.TextField(blank=True, default='', verbose_name='Address'),
+ ),
+ migrations.AlterField(
+ model_name='historicalarchaeologicalsite',
+ name='precise_locality',
+ field=models.TextField(blank=True, default='', verbose_name='Address'),
+ ),
+ migrations.AlterField(
+ model_name='historicaloperation',
+ name='relation_bitmap_image',
+ field=models.TextField(blank=True, help_text=ishtar_common.utils.max_size_help, max_length=100, null=True, verbose_name='Generated relation image (PNG)'),
+ ),
+ migrations.AlterField(
+ model_name='historicaloperation',
+ name='relation_bitmap_image_above',
+ field=models.TextField(blank=True, help_text=ishtar_common.utils.max_size_help, max_length=100, null=True, verbose_name='Generated above relation image (PNG)'),
+ ),
+ migrations.AlterField(
+ model_name='historicaloperation',
+ name='relation_bitmap_image_below',
+ field=models.TextField(blank=True, help_text=ishtar_common.utils.max_size_help, max_length=100, null=True, verbose_name='Generated below relation image (PNG)'),
+ ),
+ migrations.AlterField(
+ model_name='historicaloperation',
+ name='relation_dot',
+ field=models.TextField(blank=True, help_text=ishtar_common.utils.max_size_help, max_length=100, null=True, verbose_name='Generated relation image (DOT)'),
+ ),
+ migrations.AlterField(
+ model_name='historicaloperation',
+ name='relation_dot_above',
+ field=models.TextField(blank=True, help_text=ishtar_common.utils.max_size_help, max_length=100, null=True, verbose_name='Generated above relation image (DOT)'),
+ ),
+ migrations.AlterField(
+ model_name='historicaloperation',
+ name='relation_dot_below',
+ field=models.TextField(blank=True, help_text=ishtar_common.utils.max_size_help, max_length=100, null=True, verbose_name='Generated below relation image (DOT)'),
+ ),
+ migrations.AlterField(
+ model_name='historicaloperation',
+ name='relation_image',
+ field=models.TextField(blank=True, help_text=ishtar_common.utils.max_size_help, max_length=100, null=True, verbose_name='Generated relation image (SVG)'),
+ ),
+ migrations.AlterField(
+ model_name='historicaloperation',
+ name='relation_image_above',
+ field=models.TextField(blank=True, help_text=ishtar_common.utils.max_size_help, max_length=100, null=True, verbose_name='Generated above relation image (SVG)'),
+ ),
+ migrations.AlterField(
+ model_name='historicaloperation',
+ name='relation_image_below',
+ field=models.TextField(blank=True, help_text=ishtar_common.utils.max_size_help, max_length=100, null=True, verbose_name='Generated below relation image (SVG)'),
+ ),
+ migrations.AlterField(
+ model_name='operation',
+ name='relation_bitmap_image',
+ field=models.FileField(blank=True, help_text=ishtar_common.utils.max_size_help, null=True, upload_to=ishtar_common.utils.get_image_path, verbose_name='Generated relation image (PNG)'),
+ ),
+ migrations.AlterField(
+ model_name='operation',
+ name='relation_bitmap_image_above',
+ field=models.FileField(blank=True, help_text=ishtar_common.utils.max_size_help, null=True, upload_to=ishtar_common.utils.get_image_path, verbose_name='Generated above relation image (PNG)'),
+ ),
+ migrations.AlterField(
+ model_name='operation',
+ name='relation_bitmap_image_below',
+ field=models.FileField(blank=True, help_text=ishtar_common.utils.max_size_help, null=True, upload_to=ishtar_common.utils.get_image_path, verbose_name='Generated below relation image (PNG)'),
+ ),
+ migrations.AlterField(
+ model_name='operation',
+ name='relation_dot',
+ field=models.FileField(blank=True, help_text=ishtar_common.utils.max_size_help, null=True, upload_to=ishtar_common.utils.get_image_path, verbose_name='Generated relation image (DOT)'),
+ ),
+ migrations.AlterField(
+ model_name='operation',
+ name='relation_dot_above',
+ field=models.FileField(blank=True, help_text=ishtar_common.utils.max_size_help, null=True, upload_to=ishtar_common.utils.get_image_path, verbose_name='Generated above relation image (DOT)'),
+ ),
+ migrations.AlterField(
+ model_name='operation',
+ name='relation_dot_below',
+ field=models.FileField(blank=True, help_text=ishtar_common.utils.max_size_help, null=True, upload_to=ishtar_common.utils.get_image_path, verbose_name='Generated below relation image (DOT)'),
+ ),
+ migrations.AlterField(
+ model_name='operation',
+ name='relation_image',
+ field=models.FileField(blank=True, help_text=ishtar_common.utils.max_size_help, null=True, upload_to=ishtar_common.utils.get_image_path, verbose_name='Generated relation image (SVG)'),
+ ),
+ migrations.AlterField(
+ model_name='operation',
+ name='relation_image_above',
+ field=models.FileField(blank=True, help_text=ishtar_common.utils.max_size_help, null=True, upload_to=ishtar_common.utils.get_image_path, verbose_name='Generated above relation image (SVG)'),
+ ),
+ migrations.AlterField(
+ model_name='operation',
+ name='relation_image_below',
+ field=models.FileField(blank=True, help_text=ishtar_common.utils.max_size_help, null=True, upload_to=ishtar_common.utils.get_image_path, verbose_name='Generated below relation image (SVG)'),
+ ),
+ ]
diff --git a/archaeological_warehouse/migrations/0123_warehouse_container_ishtar_users.py b/archaeological_warehouse/migrations/0123_warehouse_container_ishtar_users.py
new file mode 100644
index 000000000..2a15e477e
--- /dev/null
+++ b/archaeological_warehouse/migrations/0123_warehouse_container_ishtar_users.py
@@ -0,0 +1,24 @@
+# Generated by Django 2.2.24 on 2024-10-21 19:18
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('ishtar_common', '0254_permissionrequests'),
+ ('archaeological_warehouse', '0122_verbose_names'),
+ ]
+
+ operations = [
+ migrations.AddField(
+ model_name='container',
+ name='ishtar_users',
+ field=models.ManyToManyField(blank=True, related_name='container_permission_associated', to='ishtar_common.IshtarUser'),
+ ),
+ migrations.AddField(
+ model_name='warehouse',
+ name='ishtar_users',
+ field=models.ManyToManyField(blank=True, related_name='warehouse_permission_associated', to='ishtar_common.IshtarUser'),
+ ),
+ ]
diff --git a/ishtar_common/migrations/0254_permissionrequests.py b/ishtar_common/migrations/0254_permissionrequests.py
new file mode 100644
index 000000000..26b902512
--- /dev/null
+++ b/ishtar_common/migrations/0254_permissionrequests.py
@@ -0,0 +1,158 @@
+# Generated by Django 2.2.24 on 2024-10-21 19:18
+
+from django.db import migrations, models
+import django.db.models.deletion
+import ishtar_common.utils
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('contenttypes', '0002_remove_content_type_name'),
+ ('ishtar_common', '0253_display_news'),
+ ]
+
+ operations = [
+ migrations.AddField(
+ model_name='biographicalnote',
+ name='ishtar_users',
+ field=models.ManyToManyField(blank=True, related_name='biographicalnote_permission_associated', to='ishtar_common.IshtarUser'),
+ ),
+ migrations.AddField(
+ model_name='document',
+ name='ishtar_users',
+ field=models.ManyToManyField(blank=True, related_name='document_permission_associated', to='ishtar_common.IshtarUser'),
+ ),
+ migrations.AddField(
+ model_name='organization',
+ name='ishtar_users',
+ field=models.ManyToManyField(blank=True, related_name='organization_permission_associated', to='ishtar_common.IshtarUser'),
+ ),
+ migrations.AddField(
+ model_name='person',
+ name='ishtar_users',
+ field=models.ManyToManyField(blank=True, related_name='person_permission_associated', to='ishtar_common.IshtarUser'),
+ ),
+ migrations.AlterField(
+ model_name='document',
+ name='associated_file',
+ field=models.FileField(blank=True, help_text=ishtar_common.utils.max_size_help, max_length=255, null=True, upload_to=ishtar_common.utils.get_image_path, verbose_name='Associated file'),
+ ),
+ migrations.AlterField(
+ model_name='document',
+ name='image',
+ field=models.ImageField(blank=True, help_text=ishtar_common.utils.max_size_help, max_length=255, null=True, upload_to=ishtar_common.utils.get_image_path),
+ ),
+ migrations.AlterField(
+ model_name='document',
+ name='thumbnail',
+ field=models.ImageField(blank=True, help_text=ishtar_common.utils.max_size_help, max_length=255, null=True, upload_to=ishtar_common.utils.get_image_path),
+ ),
+ migrations.AlterField(
+ model_name='documenttemplate',
+ name='export_format',
+ field=models.CharField(blank=True, choices=[('docx', 'DOCX'), ('html', 'HTML'), ('pdf', 'PDF'), ('xlsx', 'XLSX')], default='', max_length=4, verbose_name='Export format'),
+ ),
+ migrations.AlterField(
+ model_name='documenttemplate',
+ name='label_template',
+ field=models.FileField(blank=True, help_text=ishtar_common.utils.max_size_help, null=True, upload_to='templates/%Y/', verbose_name='Base template for labels'),
+ ),
+ migrations.AlterField(
+ model_name='documenttemplate',
+ name='template',
+ field=models.FileField(blank=True, help_text=ishtar_common.utils.max_size_help, null=True, upload_to='templates/%Y/', verbose_name='Template'),
+ ),
+ migrations.AlterField(
+ model_name='historicaldocument',
+ name='associated_file',
+ field=models.TextField(blank=True, help_text=ishtar_common.utils.max_size_help, max_length=255, null=True, verbose_name='Associated file'),
+ ),
+ migrations.AlterField(
+ model_name='historicaldocument',
+ name='image',
+ field=models.TextField(blank=True, help_text=ishtar_common.utils.max_size_help, max_length=255, null=True),
+ ),
+ migrations.AlterField(
+ model_name='historicaldocument',
+ name='thumbnail',
+ field=models.TextField(blank=True, help_text=ishtar_common.utils.max_size_help, max_length=255, null=True),
+ ),
+ migrations.AlterField(
+ model_name='import',
+ name='archive_file',
+ field=models.FileField(blank=True, help_text=ishtar_common.utils.max_size_help, max_length=255, null=True, upload_to='upload/imports/%Y/%m/', verbose_name='Archive file'),
+ ),
+ migrations.AlterField(
+ model_name='import',
+ name='error_file',
+ field=models.FileField(blank=True, help_text=ishtar_common.utils.max_size_help, max_length=255, null=True, upload_to='upload/imports/%Y/%m/', verbose_name='Error file'),
+ ),
+ migrations.AlterField(
+ model_name='import',
+ name='imported_file',
+ field=models.FileField(blank=True, help_text=ishtar_common.utils.max_size_help, max_length=220, null=True, upload_to='upload/imports/%Y/%m/', verbose_name='Imported file'),
+ ),
+ migrations.AlterField(
+ model_name='import',
+ name='imported_images',
+ field=models.FileField(blank=True, help_text=ishtar_common.utils.max_size_help, max_length=220, null=True, upload_to='upload/imports/%Y/%m/', verbose_name='Associated documents (zip file)'),
+ ),
+ migrations.AlterField(
+ model_name='import',
+ name='imported_values',
+ field=models.FileField(blank=True, help_text=ishtar_common.utils.max_size_help, max_length=220, null=True, upload_to='upload/imports/%Y/%m/', verbose_name='Imported values'),
+ ),
+ migrations.AlterField(
+ model_name='import',
+ name='match_file',
+ field=models.FileField(blank=True, help_text=ishtar_common.utils.max_size_help, max_length=255, null=True, upload_to='upload/imports/%Y/%m/', verbose_name='Match file'),
+ ),
+ migrations.AlterField(
+ model_name='import',
+ name='result_file',
+ field=models.FileField(blank=True, help_text=ishtar_common.utils.max_size_help, max_length=255, null=True, upload_to='upload/imports/%Y/%m/', verbose_name='Result file'),
+ ),
+ migrations.AlterField(
+ model_name='importgroup',
+ name='archive_file',
+ field=models.FileField(blank=True, help_text=ishtar_common.utils.max_size_help, max_length=255, null=True, upload_to='upload/imports/%Y/%m/', verbose_name='Archive file'),
+ ),
+ migrations.AlterField(
+ model_name='importgroup',
+ name='imported_file',
+ field=models.FileField(blank=True, help_text=ishtar_common.utils.max_size_help, max_length=220, null=True, upload_to='upload/imports/%Y/%m/', verbose_name='Imported file'),
+ ),
+ migrations.AlterField(
+ model_name='importgroup',
+ name='imported_images',
+ field=models.FileField(blank=True, help_text=ishtar_common.utils.max_size_help, max_length=220, null=True, upload_to='upload/imports/%Y/%m/', verbose_name='Associated documents (zip file)'),
+ ),
+ migrations.CreateModel(
+ name='PermissionRequest',
+ 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(unique=True, verbose_name='Slug')),
+ ('request', models.TextField(blank=True, default='', help_text="Use 'text' request used in Ishtar search input", verbose_name='Request')),
+ ('include_associated_items', models.BooleanField(default=True, help_text='All items associated items match the request', verbose_name='Include associated items')),
+ ('include_upstream_items', models.BooleanField(default=True, help_text='All items associated by upstream link math the request. For instance, match is done for all finds associated with own context records', verbose_name='Include upstream items')),
+ ('active', models.BooleanField(default=True, verbose_name='Active')),
+ ('model', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='permissions', to='contenttypes.ContentType', verbose_name='Model')),
+ ],
+ options={
+ 'verbose_name': 'Permission request',
+ 'verbose_name_plural': 'Permissions requests',
+ },
+ ),
+ migrations.AddField(
+ model_name='profiletype',
+ name='permission_requests',
+ field=models.ManyToManyField(blank=True, related_name='profile_types', to='ishtar_common.PermissionRequest', verbose_name='Permission request'),
+ ),
+ migrations.AddField(
+ model_name='permissionrequest',
+ name='limit_to_attached_areas',
+ field=models.BooleanField(default=False, help_text='Request is limited to areas attached to the ishtar user', verbose_name='Limit request to attached areas'),
+ )
+ ]
diff --git a/ishtar_common/models.py b/ishtar_common/models.py
index b1f226088..148843fd4 100644
--- a/ishtar_common/models.py
+++ b/ishtar_common/models.py
@@ -143,45 +143,45 @@ from ishtar_common.utils import (
)
from ishtar_common.models_common import (
- GeneralType,
- HierarchicalType,
- OrderedHierarchicalType,
- OrderedType,
+ Address,
BaseHistorizedItem,
- LightHistorizedItem,
- HistoricalRecords,
- FullSearch,
- SearchAltName,
- OwnPerms,
Cached,
- Imported,
- Address,
- post_save_cache,
- TemplateItem,
- SpatialReferenceSystem,
+ CachedGen,
+ CompleteIdentifierItem,
DashboardFormItem,
- document_attached_changed,
- SearchAltName,
+ Department,
+ DocumentItem,
DynamicRequest,
- GeoItem,
+ document_attached_changed,
+ FullSearch,
+ GeneralType,
+ GeoBufferType,
GeoDataType,
+ GeoItem,
GeoOriginType,
GeoProviderType,
GeoVectorData,
- GeoBufferType,
- CompleteIdentifierItem,
- SearchVectorConfig,
- DocumentItem,
- QuickAction,
+ HierarchicalType,
+ HistoricalRecords,
+ ImageContainerModel,
+ Imported,
+ LightHistorizedItem,
MainItem,
Merge,
+ OrderedHierarchicalType,
+ OrderedType,
+ OwnPerms,
+ PermissionRequest,
+ post_save_cache,
+ QuickAction,
+ SearchAltName,
+ SearchVectorConfig,
+ SpatialReferenceSystem,
+ TemplateItem,
ShortMenuItem,
- Town,
- ImageContainerModel,
- StatisticItem,
- CachedGen,
- Department,
State,
+ StatisticItem,
+ Town,
)
__all__ = [
@@ -3436,6 +3436,10 @@ class GDPRLog(models.Model):
class ProfileType(GeneralType):
groups = models.ManyToManyField(Group, verbose_name=_("Groups"), blank=True)
+ permission_requests = models.ManyToManyField(
+ PermissionRequest, verbose_name=_("Permission request"), blank=True,
+ related_name="profile_types"
+ )
class Meta:
verbose_name = _("Profile type")
diff --git a/ishtar_common/models_common.py b/ishtar_common/models_common.py
index 4a266af9c..cd6c266ef 100644
--- a/ishtar_common/models_common.py
+++ b/ishtar_common/models_common.py
@@ -730,6 +730,7 @@ class GeneralType(Cached, models.Model):
class OrderedModel(models.Model):
order = models.IntegerField(_("Order"), default=10)
+
class Meta:
abstract = True
@@ -1553,6 +1554,7 @@ class BaseHistorizedItem(
Historized item with external ID management.
All historized items are searchable and have a data json field.
Historized items can be "locked" for edition.
+ Historized items can have associated ishtar user for permission management
"""
IS_BASKET = False
@@ -1591,6 +1593,12 @@ class BaseHistorizedItem(
blank=True,
null=True,
)
+ ishtar_users = models.ManyToManyField(
+ "ishtar_common.IshtarUser", blank=True, related_name='%(class)s_permission_associated'
+ )
+
+ class Meta:
+ abstract = True
DATED_FIELDS = [
"created",
@@ -3059,6 +3067,37 @@ class GeographicItem(models.Model):
return lst
+class PermissionRequest(models.Model):
+ name = models.CharField(_("Name"), max_length=200)
+ slug = models.SlugField(_("Slug"), unique=True)
+ model = models.ForeignKey(ContentType, related_name="permissions",
+ verbose_name=_("Model"), on_delete=models.CASCADE)
+ request = models.TextField(
+ _("Request"), blank=True, null=False, default="",
+ help_text=_("Use 'text' request used in Ishtar search input")
+ )
+ limit_to_attached_areas = models.BooleanField(
+ _("Limit request to attached areas"), default=False,
+ help_text=_("Request is limited to areas attached to the ishtar user")
+ )
+ include_associated_items = models.BooleanField(
+ _("Include associated items"), default=True,
+ help_text=_("All items associated items match the request")
+ )
+ include_upstream_items = models.BooleanField(
+ _("Include upstream items"), default=True,
+ help_text=_(
+ "All items associated by upstream link math the request. "
+ "For instance, match is done for all finds associated with own "
+ "context records")
+ )
+ active = models.BooleanField(_("Active"), default=True)
+
+ class Meta:
+ verbose_name = _("Permission request")
+ verbose_name_plural = _("Permissions requests")
+
+
class SerializeItem:
SERIALIZE_EXCLUDE = ["search_vector"]
SERIALIZE_PROPERTIES = [