summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2026-04-02 12:44:59 +0200
committerÉtienne Loks <etienne.loks@iggdrasil.net>2026-04-02 13:30:50 +0200
commitf6fe888087f9a11e42460dd7a6025bf2ea9c7119 (patch)
treec6a6d13641bcee135f7b21a05132fe452b845911
parent90feafab7540f1461541a0e95991e18e642fe567 (diff)
downloadIshtar-f6fe888087f9a11e42460dd7a6025bf2ea9c7119.tar.bz2
Ishtar-f6fe888087f9a11e42460dd7a6025bf2ea9c7119.zip
✨ sites - relations between sites: forms
-rw-r--r--archaeological_operations/admin.py1
-rw-r--r--archaeological_operations/forms.py27
-rw-r--r--archaeological_operations/models.py10
-rw-r--r--archaeological_operations/urls.py8
-rw-r--r--archaeological_operations/views.py6
5 files changed, 52 insertions, 0 deletions
diff --git a/archaeological_operations/admin.py b/archaeological_operations/admin.py
index 913ed74ea..8d08696ea 100644
--- a/archaeological_operations/admin.py
+++ b/archaeological_operations/admin.py
@@ -150,6 +150,7 @@ class RelationTypeAdmin(GeneralTypeAdmin):
admin_site.register(models.RelationType, RelationTypeAdmin)
+admin_site.register(models.SiteRelationType, RelationTypeAdmin)
class RecordQualityTypeAdmin(GeneralTypeAdmin):
diff --git a/archaeological_operations/forms.py b/archaeological_operations/forms.py
index 79e265e93..bb62ad8d1 100644
--- a/archaeological_operations/forms.py
+++ b/archaeological_operations/forms.py
@@ -432,6 +432,33 @@ 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.IntegerField(
+ label=_("Archaeological site"),
+ widget=widgets.JQueryAutoComplete(
+ reverse_lazy('autocomplete-archaeologicalsite'),
+ associated_model=models.ArchaeologicalSite),
+ validators=[valid_id(models.ArchaeologicalSite)], 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