diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2018-02-16 14:42:01 +0100 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2018-02-16 14:42:01 +0100 |
commit | 36db82b63295ef2bec9b01c934ee0ad76bdc13b8 (patch) | |
tree | 757748dd103101658124bcde50edf99b9544b9e5 | |
parent | 65fc62c22174697432bd8517e91f13cd03f3dcd4 (diff) | |
download | Ishtar-36db82b63295ef2bec9b01c934ee0ad76bdc13b8.tar.bz2 Ishtar-36db82b63295ef2bec9b01c934ee0ad76bdc13b8.zip |
Site: modification wizard (refs #3913)
-rw-r--r-- | archaeological_operations/forms.py | 9 | ||||
-rw-r--r-- | archaeological_operations/ishtar_menu.py | 5 | ||||
-rw-r--r-- | archaeological_operations/urls.py | 6 | ||||
-rw-r--r-- | archaeological_operations/views.py | 14 | ||||
-rw-r--r-- | archaeological_operations/wizards.py | 4 |
5 files changed, 34 insertions, 4 deletions
diff --git a/archaeological_operations/forms.py b/archaeological_operations/forms.py index bf69a74b5..8954dae77 100644 --- a/archaeological_operations/forms.py +++ b/archaeological_operations/forms.py @@ -1273,7 +1273,7 @@ class SiteFormSelection(IshtarForm): reverse_lazy('get-site'), SiteSelect, models.ArchaeologicalSite, source_full=reverse_lazy('get-site-full')), - validators=[valid_id(models.Operation)]) + validators=[valid_id(models.ArchaeologicalSite)]) @classmethod def form_label(cls): @@ -1292,6 +1292,7 @@ class SiteForm(ManageOldType): form_label = _(u"General") form_admin_name = _(u"Archaeological site - 010 - General") associated_models = {'period': models.Period, 'remain': models.RemainType} + pk = forms.IntegerField(required=False, widget=forms.HiddenInput) reference = forms.CharField(label=_(u"Reference"), max_length=20) name = forms.CharField(label=_(u"Name"), max_length=200, required=False) period = forms.MultipleChoiceField( @@ -1308,8 +1309,10 @@ class SiteForm(ManageOldType): def clean_reference(self): reference = self.cleaned_data['reference'] - if models.ArchaeologicalSite.objects.filter( - reference=reference).count(): + q = models.ArchaeologicalSite.objects.filter(reference=reference) + if 'pk' in self.cleaned_data and self.cleaned_data['pk']: + q = q.exclude(pk=self.cleaned_data['pk']) + if q.count(): raise forms.ValidationError(_(u"This reference already exists.")) return reference diff --git a/archaeological_operations/ishtar_menu.py b/archaeological_operations/ishtar_menu.py index 55acf810b..746c25f50 100644 --- a/archaeological_operations/ishtar_menu.py +++ b/archaeological_operations/ishtar_menu.py @@ -116,6 +116,11 @@ MENU_SECTIONS = [ model=models.ArchaeologicalSite, access_controls=['add_archaeologicalsite', 'add_own_archaeologicalsite']), + MenuItem( + 'site_modification', _(u"Modification"), + model=models.ArchaeologicalSite, + access_controls=['modify_archaeologicalsite', + 'modify_own_archaeologicalsite']), ]), ), (30, SectionItem( diff --git a/archaeological_operations/urls.py b/archaeological_operations/urls.py index fbca132d4..be734c031 100644 --- a/archaeological_operations/urls.py +++ b/archaeological_operations/urls.py @@ -168,6 +168,12 @@ urlpatterns = [ 'add_own_archaeologicalsite'])( views.site_creation_wizard), name='site_creation'), + url(r'site_modification/(?P<step>.+)?$', + check_rights(['modify_archaeologicalsite', + 'modify_own_archaeologicalsite'])( + views.site_modification_wizard), + name='site_modification'), + url(r'autocomplete-patriarche/$', views.autocomplete_patriarche, name='autocomplete-patriarche'), diff --git a/archaeological_operations/views.py b/archaeological_operations/views.py index 76f712613..4647b0fc7 100644 --- a/archaeological_operations/views.py +++ b/archaeological_operations/views.py @@ -53,7 +53,7 @@ from archaeological_operations.wizards import has_associated_file, \ OperationClosingWizard, OperationDeletionWizard, SiteSearch, \ OperationSourceWizard, OperationSourceDeletionWizard, \ OperationAdministrativeActWizard, OperationEditAdministrativeActWizard, \ - AdministrativeActDeletionWizard, SiteWizard + AdministrativeActDeletionWizard, SiteWizard, SiteModificationWizard def autocomplete_patriarche(request): @@ -358,6 +358,18 @@ site_creation_wizard = SiteWizard.as_view( url_name='site_creation', ) +site_modification_steps = [ + ('selec-site_modification', SiteFormSelection), + ('general-site_modification', SiteForm), + ('final-site_modification', FinalForm) +] + +site_modification_wizard = SiteModificationWizard.as_view( + site_modification_steps, + label=_(u"{} modification"), + url_name='site_modification', +) + # operation sources operation_source_search_wizard = SearchWizard.as_view([ diff --git a/archaeological_operations/wizards.py b/archaeological_operations/wizards.py index 9f8ca3f6a..d5cb1d5ac 100644 --- a/archaeological_operations/wizards.py +++ b/archaeological_operations/wizards.py @@ -463,6 +463,10 @@ class SiteWizard(SiteLabel, Wizard): model = models.ArchaeologicalSite +class SiteModificationWizard(SiteWizard): + modification = True + + class AdministrativeActDeletionWizard(ClosingWizard): wizard_templates = { 'final-operation_administrativeactop_deletion': |