summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2026-04-02 10:04:56 +0200
committerÉtienne Loks <etienne.loks@iggdrasil.net>2026-04-02 10:04:56 +0200
commit1c1c2747c3f9665ebe95186b44c3cce7eaefc13f (patch)
tree31621709c6f5e8854f9a74fc4825e8f7140c87c8
parent60b0d884f4d093642616b571be347139dfd4650e (diff)
downloadIshtar-1c1c2747c3f9665ebe95186b44c3cce7eaefc13f.tar.bz2
Ishtar-1c1c2747c3f9665ebe95186b44c3cce7eaefc13f.zip
WIP sites relations
-rw-r--r--archaeological_operations/forms.py23
-rw-r--r--archaeological_operations/models.py10
-rw-r--r--archaeological_operations/urls.py8
-rw-r--r--archaeological_operations/views.py6
4 files changed, 47 insertions, 0 deletions
diff --git a/archaeological_operations/forms.py b/archaeological_operations/forms.py
index 79e265e93..f32399ecd 100644
--- a/archaeological_operations/forms.py
+++ b/archaeological_operations/forms.py
@@ -432,6 +432,29 @@ RecordRelationsFormSet.form_admin_name = _("Operation - Relations")
RecordRelationsFormSet.form_slug = "operation-relations"
+class SiteRecordRelationsForm(RecordRelationsForm):
+ current_model = models.SiteRelationType
+ current_related_model = models.ArchaeologicalSite
+ associated_models = {
+ "right_record": models.ArchaeologicalSite,
+ "relation_type": models.SiteRelationType,
+ }
+ ERROR_MISSING = _("You should select an archaeological site and a relation type.")
+ ERROR_SAME = _("An archaeological site cannot be related to himself.")
+
+ right_record = forms.ChoiceField(
+ label=_("Archaeological site"), choices=[], required=False
+ )
+
+
+SiteRecordRelationsFormSet = formset_factory(
+ SiteRecordRelationsForm, can_delete=True, formset=RecordRelationsFormSetBase
+)
+SiteRecordRelationsFormSet.form_label = _("Archaeological site - Relations")
+RecordRelationsFormSet.form_admin_name = _("Archaeological site - Relations")
+RecordRelationsFormSet.form_slug = "archaeologicalsite-recordrelations"
+
+
class OpeSiteRelationsForm(ManageOldType):
associated_models = {'right_record': models.ArchaeologicalSite}
diff --git a/archaeological_operations/models.py b/archaeological_operations/models.py
index 1912bc964..a3fe2ea3f 100644
--- a/archaeological_operations/models.py
+++ b/archaeological_operations/models.py
@@ -956,6 +956,16 @@ class ArchaeologicalSite(
]
actions += [
(
+ reverse("site-relations-modify", args=[self.pk]),
+ _("Modify sites relations"),
+ "fa fa-retweet",
+ _("sites"),
+ "",
+ True,
+ ),
+ ]
+ actions += [
+ (
reverse("site-operation-relations-modify", args=[self.pk, window_id]),
_("Modify site-operation relations"),
"fa fa-retweet",
diff --git a/archaeological_operations/urls.py b/archaeological_operations/urls.py
index 2af502f9f..31930fbd9 100644
--- a/archaeological_operations/urls.py
+++ b/archaeological_operations/urls.py
@@ -352,6 +352,14 @@ urlpatterns = [
name="operation-site-relations-modify",
),
path(
+ "site-relations-modify/<int:pk>)/",
+ check_permissions(
+ ["archaeological_operations.change_archaeologicalsite",
+ "archaeological_operations.change_own_archaeologicalsite"]
+ )(views.site_modify_relations),
+ name="site-relations-modify",
+ ),
+ path(
"site-operation-relations-modify/<int:pk>/",
check_permissions(
["archaeological_operations.change_operation",
diff --git a/archaeological_operations/views.py b/archaeological_operations/views.py
index 3449290e0..f2117c747 100644
--- a/archaeological_operations/views.py
+++ b/archaeological_operations/views.py
@@ -593,6 +593,12 @@ operation_modify_relations = get_relation_modify(
)
+site_modify_relations = get_relation_modify(
+ models.ArchaeologicalSite, models.SiteRecordRelations,
+ forms.SiteRecordRelationsFormSet, "site-relations-modify"
+)
+
+
RELATION_LIMIT = 50