diff options
| 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 |
| commit | 1c1c2747c3f9665ebe95186b44c3cce7eaefc13f (patch) | |
| tree | 31621709c6f5e8854f9a74fc4825e8f7140c87c8 | |
| parent | 60b0d884f4d093642616b571be347139dfd4650e (diff) | |
| download | Ishtar-1c1c2747c3f9665ebe95186b44c3cce7eaefc13f.tar.bz2 Ishtar-1c1c2747c3f9665ebe95186b44c3cce7eaefc13f.zip | |
WIP sites relations
| -rw-r--r-- | archaeological_operations/forms.py | 23 | ||||
| -rw-r--r-- | archaeological_operations/models.py | 10 | ||||
| -rw-r--r-- | archaeological_operations/urls.py | 8 | ||||
| -rw-r--r-- | archaeological_operations/views.py | 6 |
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 |
