summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--archaeological_operations/forms.py9
-rw-r--r--archaeological_operations/ishtar_menu.py5
-rw-r--r--archaeological_operations/urls.py6
-rw-r--r--archaeological_operations/views.py14
-rw-r--r--archaeological_operations/wizards.py4
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':