summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2026-04-02 09:22:01 +0200
committerÉtienne Loks <etienne.loks@iggdrasil.net>2026-04-02 13:30:50 +0200
commit90feafab7540f1461541a0e95991e18e642fe567 (patch)
treed6b0e2a8cd05b4dd065b0752cbb455b9a05f69a2
parent4d8f427560a336d24c158d34b7500a75c454134d (diff)
downloadIshtar-90feafab7540f1461541a0e95991e18e642fe567.tar.bz2
Ishtar-90feafab7540f1461541a0e95991e18e642fe567.zip
✨ add editors to all historized items
-rw-r--r--archaeological_context_records/migrations/0127_add_editors.py19
-rw-r--r--archaeological_files/migrations/0121_add_editors.py19
-rw-r--r--archaeological_finds/migrations/0149_add_editors.py64
-rw-r--r--archaeological_operations/migrations/0128_add_editors.py39
-rw-r--r--archaeological_operations/models.py7
-rw-r--r--archaeological_warehouse/migrations/0127_add_editors.py24
-rw-r--r--ishtar_common/migrations/0276_add_editors.py48
-rw-r--r--ishtar_common/models_common.py8
8 files changed, 221 insertions, 7 deletions
diff --git a/archaeological_context_records/migrations/0127_add_editors.py b/archaeological_context_records/migrations/0127_add_editors.py
new file mode 100644
index 000000000..011046f9a
--- /dev/null
+++ b/archaeological_context_records/migrations/0127_add_editors.py
@@ -0,0 +1,19 @@
+# Generated by Django 4.2.21 on 2026-04-02 06:36
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('ishtar_common', '0276_add_editors'),
+ ('archaeological_context_records', '0126_migrate_periods_and_datings'),
+ ]
+
+ operations = [
+ migrations.AddField(
+ model_name='contextrecord',
+ name='editors',
+ field=models.ManyToManyField(blank=True, related_name='%(class)s_edited', to='ishtar_common.author', verbose_name='Editors'),
+ ),
+ ]
diff --git a/archaeological_files/migrations/0121_add_editors.py b/archaeological_files/migrations/0121_add_editors.py
new file mode 100644
index 000000000..c0df1d8a0
--- /dev/null
+++ b/archaeological_files/migrations/0121_add_editors.py
@@ -0,0 +1,19 @@
+# Generated by Django 4.2.21 on 2026-04-02 06:36
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('ishtar_common', '0276_add_editors'),
+ ('archaeological_files', '0120_add_timezone_django_v4'),
+ ]
+
+ operations = [
+ migrations.AddField(
+ model_name='file',
+ name='editors',
+ field=models.ManyToManyField(blank=True, related_name='%(class)s_edited', to='ishtar_common.author', verbose_name='Editors'),
+ ),
+ ]
diff --git a/archaeological_finds/migrations/0149_add_editors.py b/archaeological_finds/migrations/0149_add_editors.py
new file mode 100644
index 000000000..a74739a1d
--- /dev/null
+++ b/archaeological_finds/migrations/0149_add_editors.py
@@ -0,0 +1,64 @@
+# Generated by Django 4.2.21 on 2026-04-02 06:36
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('ishtar_common', '0276_add_editors'),
+ ('archaeological_finds', '0148_statementcondition_documents'),
+ ]
+
+ operations = [
+ migrations.AddField(
+ model_name='basefind',
+ name='editors',
+ field=models.ManyToManyField(blank=True, related_name='%(class)s_edited', to='ishtar_common.author', verbose_name='Editors'),
+ ),
+ migrations.AddField(
+ model_name='exhibition',
+ name='editors',
+ field=models.ManyToManyField(blank=True, related_name='%(class)s_edited', to='ishtar_common.author', verbose_name='Editors'),
+ ),
+ migrations.AddField(
+ model_name='find',
+ name='editors',
+ field=models.ManyToManyField(blank=True, related_name='%(class)s_edited', to='ishtar_common.author', verbose_name='Editors'),
+ ),
+ migrations.AddField(
+ model_name='property',
+ name='editors',
+ field=models.ManyToManyField(blank=True, related_name='%(class)s_edited', to='ishtar_common.author', verbose_name='Editors'),
+ ),
+ migrations.AddField(
+ model_name='statementcondition',
+ name='editors',
+ field=models.ManyToManyField(blank=True, related_name='%(class)s_edited', to='ishtar_common.author', verbose_name='Editors'),
+ ),
+ migrations.AddField(
+ model_name='treatment',
+ name='editors',
+ field=models.ManyToManyField(blank=True, related_name='%(class)s_edited', to='ishtar_common.author', verbose_name='Editors'),
+ ),
+ migrations.AddField(
+ model_name='treatmentfile',
+ name='editors',
+ field=models.ManyToManyField(blank=True, related_name='%(class)s_edited', to='ishtar_common.author', verbose_name='Editors'),
+ ),
+ migrations.AlterField(
+ model_name='find',
+ name='weight',
+ field=models.FloatField(blank=True, null=True, verbose_name='Weight (g)'),
+ ),
+ migrations.AlterField(
+ model_name='historicalfind',
+ name='weight',
+ field=models.FloatField(blank=True, null=True, verbose_name='Weight (g)'),
+ ),
+ migrations.AlterField(
+ model_name='statementcondition',
+ name='weight',
+ field=models.FloatField(blank=True, null=True, verbose_name='Weight (g)'),
+ ),
+ ]
diff --git a/archaeological_operations/migrations/0128_add_editors.py b/archaeological_operations/migrations/0128_add_editors.py
new file mode 100644
index 000000000..d26c47f74
--- /dev/null
+++ b/archaeological_operations/migrations/0128_add_editors.py
@@ -0,0 +1,39 @@
+# Generated by Django 4.2.21 on 2026-04-02 06:36
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('ishtar_common', '0276_add_editors'),
+ ('archaeological_operations', '0127_data_migration_current_states'),
+ ]
+
+ operations = [
+ migrations.AddField(
+ model_name='administrativeact',
+ name='editors',
+ field=models.ManyToManyField(blank=True, related_name='%(class)s_edited', to='ishtar_common.author', verbose_name='Editors'),
+ ),
+ migrations.AddField(
+ model_name='operation',
+ name='editors',
+ field=models.ManyToManyField(blank=True, related_name='%(class)s_edited', to='ishtar_common.author', verbose_name='Editors'),
+ ),
+ migrations.AddField(
+ model_name='parcel',
+ name='editors',
+ field=models.ManyToManyField(blank=True, related_name='%(class)s_edited', to='ishtar_common.author', verbose_name='Editors'),
+ ),
+ migrations.AddField(
+ model_name='parcelowner',
+ name='editors',
+ field=models.ManyToManyField(blank=True, related_name='%(class)s_edited', to='ishtar_common.author', verbose_name='Editors'),
+ ),
+ migrations.AlterField(
+ model_name='archaeologicalsite',
+ name='editors',
+ field=models.ManyToManyField(blank=True, related_name='%(class)s_edited', to='ishtar_common.author', verbose_name='Editors'),
+ ),
+ ]
diff --git a/archaeological_operations/models.py b/archaeological_operations/models.py
index c34478b6c..1912bc964 100644
--- a/archaeological_operations/models.py
+++ b/archaeological_operations/models.py
@@ -528,10 +528,6 @@ class ArchaeologicalSite(
pgettext_lazy("key for text search", "collaborators"),
"collaborators__cached_label__iexact"
),
- "editors": SearchAltName(
- pgettext_lazy("key for text search", "editor"),
- "editors__cached_label__iexact"
- ),
"protection_id": SearchAltName(
pgettext_lazy("key for text search", "protection-id"),
"protection_id__iexact"
@@ -800,9 +796,6 @@ class ArchaeologicalSite(
QualifiedBiographicalNote, related_name="sites", verbose_name=_("Actors"),
blank=True
)
- editors = models.ManyToManyField(
- Author, related_name="sites", verbose_name=_("Editors"), blank=True
- )
documents = models.ManyToManyField(
Document, related_name="sites", verbose_name=_("Documents"), blank=True
)
diff --git a/archaeological_warehouse/migrations/0127_add_editors.py b/archaeological_warehouse/migrations/0127_add_editors.py
new file mode 100644
index 000000000..f4aab3cbf
--- /dev/null
+++ b/archaeological_warehouse/migrations/0127_add_editors.py
@@ -0,0 +1,24 @@
+# Generated by Django 4.2.21 on 2026-04-02 06:36
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('ishtar_common', '0276_add_editors'),
+ ('archaeological_warehouse', '0126_add_timezone_django_v4'),
+ ]
+
+ operations = [
+ migrations.AddField(
+ model_name='container',
+ name='editors',
+ field=models.ManyToManyField(blank=True, related_name='%(class)s_edited', to='ishtar_common.author', verbose_name='Editors'),
+ ),
+ migrations.AddField(
+ model_name='warehouse',
+ name='editors',
+ field=models.ManyToManyField(blank=True, related_name='%(class)s_edited', to='ishtar_common.author', verbose_name='Editors'),
+ ),
+ ]
diff --git a/ishtar_common/migrations/0276_add_editors.py b/ishtar_common/migrations/0276_add_editors.py
new file mode 100644
index 000000000..1710441a1
--- /dev/null
+++ b/ishtar_common/migrations/0276_add_editors.py
@@ -0,0 +1,48 @@
+# Generated by Django 4.2.21 on 2026-04-02 06:36
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('ishtar_common', '0275_authortype_parent'),
+ ]
+
+ operations = [
+ migrations.AddField(
+ model_name='biographicalnote',
+ name='editors',
+ field=models.ManyToManyField(blank=True, related_name='%(class)s_edited', to='ishtar_common.author', verbose_name='Editors'),
+ ),
+ migrations.AddField(
+ model_name='document',
+ name='editors',
+ field=models.ManyToManyField(blank=True, related_name='%(class)s_edited', to='ishtar_common.author', verbose_name='Editors'),
+ ),
+ migrations.AddField(
+ model_name='organization',
+ name='editors',
+ field=models.ManyToManyField(blank=True, related_name='%(class)s_edited', to='ishtar_common.author', verbose_name='Editors'),
+ ),
+ migrations.AddField(
+ model_name='person',
+ name='editors',
+ field=models.ManyToManyField(blank=True, related_name='%(class)s_edited', to='ishtar_common.author', verbose_name='Editors'),
+ ),
+ migrations.AddField(
+ model_name='qualifiedbiographicalnote',
+ name='editors',
+ field=models.ManyToManyField(blank=True, related_name='%(class)s_edited', to='ishtar_common.author', verbose_name='Editors'),
+ ),
+ migrations.AlterField(
+ model_name='documenttemplate',
+ name='export_format',
+ field=models.CharField(blank=True, choices=[('', '---')], default='', max_length=4, verbose_name='Export format'),
+ ),
+ migrations.AlterField(
+ model_name='qualifiedbiographicalnotetype',
+ name='model',
+ field=models.CharField(choices=[('S', 'Archaeological site'), ('O', 'Operation'), ('C', 'Context record'), ('F', 'Find'), ('A', 'All')], max_length=2, verbose_name='Model'),
+ ),
+ ]
diff --git a/ishtar_common/models_common.py b/ishtar_common/models_common.py
index 117981e79..0161aadad 100644
--- a/ishtar_common/models_common.py
+++ b/ishtar_common/models_common.py
@@ -1707,6 +1707,10 @@ class BaseHistorizedItem(
last_modified = models.DateTimeField(blank=True, default=timezone.now)
created = models.DateTimeField(blank=True, default=timezone.now)
history_m2m = JSONField(default=dict, blank=True)
+ editors = models.ManyToManyField(
+ "ishtar_common.Author", related_name="%(class)s_edited",
+ verbose_name=_("Editors"), blank=True
+ )
need_update = models.BooleanField(verbose_name=_("Need update"), default=False)
locked = models.BooleanField(
verbose_name=_("Item locked for edition"), default=False
@@ -1751,6 +1755,10 @@ class BaseHistorizedItem(
pgettext_lazy("key for text search", "modified"),
"last_modified",
),
+ "editors": SearchAltName(
+ pgettext_lazy("key for text search", "editor"),
+ "editors__cached_label__iexact"
+ ),
"locked": SearchAltName(
pgettext_lazy("key for text search", "locked"), "locked"
),