diff options
| 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 |
| commit | f6fe888087f9a11e42460dd7a6025bf2ea9c7119 (patch) | |
| tree | c6a6d13641bcee135f7b21a05132fe452b845911 | |
| parent | 90feafab7540f1461541a0e95991e18e642fe567 (diff) | |
| download | Ishtar-f6fe888087f9a11e42460dd7a6025bf2ea9c7119.tar.bz2 Ishtar-f6fe888087f9a11e42460dd7a6025bf2ea9c7119.zip | |
✨ sites - relations between sites: forms
| -rw-r--r-- | archaeological_operations/admin.py | 1 | ||||
| -rw-r--r-- | archaeological_operations/forms.py | 27 | ||||
| -rw-r--r-- | archaeological_operations/models.py | 10 | ||||
| -rw-r--r-- | archaeological_operations/urls.py | 8 | ||||
| -rw-r--r-- | archaeological_operations/views.py | 6 |
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 |
