summaryrefslogtreecommitdiff
path: root/archaeological_operations
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2018-02-14 18:03:56 +0100
committerÉtienne Loks <etienne.loks@iggdrasil.net>2018-02-15 17:20:19 +0100
commit300cac90732e559ef6b900f48ddb606c1ff5aefc (patch)
tree92b533c6b223a7fa9d6a7e4e00b057c5c3195a40 /archaeological_operations
parent7c3a4661c5a783cce329210fad5af2db6ea48155 (diff)
downloadIshtar-300cac90732e559ef6b900f48ddb606c1ff5aefc.tar.bz2
Ishtar-300cac90732e559ef6b900f48ddb606c1ff5aefc.zip
Archaeological site: simple creation wizard (refs #3913)
Diffstat (limited to 'archaeological_operations')
-rw-r--r--archaeological_operations/forms.py26
-rw-r--r--archaeological_operations/ishtar_menu.py10
-rw-r--r--archaeological_operations/urls.py5
-rw-r--r--archaeological_operations/views.py18
-rw-r--r--archaeological_operations/wizards.py10
5 files changed, 61 insertions, 8 deletions
diff --git a/archaeological_operations/forms.py b/archaeological_operations/forms.py
index 38efb269f..bf69a74b5 100644
--- a/archaeological_operations/forms.py
+++ b/archaeological_operations/forms.py
@@ -1288,6 +1288,32 @@ class SiteFormSelection(IshtarForm):
return cleaned_data
+class SiteForm(ManageOldType):
+ form_label = _(u"General")
+ form_admin_name = _(u"Archaeological site - 010 - General")
+ associated_models = {'period': models.Period, 'remain': models.RemainType}
+ reference = forms.CharField(label=_(u"Reference"), max_length=20)
+ name = forms.CharField(label=_(u"Name"), max_length=200, required=False)
+ period = forms.MultipleChoiceField(
+ label=_("Periods"), choices=[], widget=widgets.Select2Multiple,
+ required=False)
+ remain = forms.MultipleChoiceField(
+ label=_("Remains"), choices=[], widget=widgets.Select2Multiple,
+ required=False)
+
+ TYPES = [
+ FieldType('period', models.Period, True),
+ FieldType('remain', models.RemainType, True),
+ ]
+
+ def clean_reference(self):
+ reference = self.cleaned_data['reference']
+ if models.ArchaeologicalSite.objects.filter(
+ reference=reference).count():
+ raise forms.ValidationError(_(u"This reference already exists."))
+ return reference
+
+
####################################
# Source management for operations #
####################################
diff --git a/archaeological_operations/ishtar_menu.py b/archaeological_operations/ishtar_menu.py
index 5c2cca383..55acf810b 100644
--- a/archaeological_operations/ishtar_menu.py
+++ b/archaeological_operations/ishtar_menu.py
@@ -28,11 +28,6 @@ from archaeological_operations import models
"""
MenuItem(
- 'operation_creation', _(u"Creation"),
- model=models.Operation,
- access_controls=['add_operation',
- 'add_own_operation']),
-MenuItem(
'operation_modification', _(u"Modification"),
model=models.Operation,
access_controls=['change_operation',
@@ -116,6 +111,11 @@ MENU_SECTIONS = [
model=models.ArchaeologicalSite,
access_controls=['view_archaeologicalsite',
'view_own_archaeologicalsite']),
+ MenuItem(
+ 'site_creation', _(u"Creation"),
+ model=models.ArchaeologicalSite,
+ access_controls=['add_archaeologicalsite',
+ 'add_own_archaeologicalsite']),
]),
),
(30, SectionItem(
diff --git a/archaeological_operations/urls.py b/archaeological_operations/urls.py
index 8075296e8..fbca132d4 100644
--- a/archaeological_operations/urls.py
+++ b/archaeological_operations/urls.py
@@ -163,6 +163,11 @@ urlpatterns = [
check_rights(['view_archaeologicalsite',
'view_own_archaeologicalsite'])(
views.site_search_wizard), name='site_search'),
+ url(r'site_creation/(?P<step>.+)?$',
+ check_rights(['add_archaeologicalsite',
+ 'add_own_archaeologicalsite'])(
+ views.site_creation_wizard),
+ name='site_creation'),
url(r'autocomplete-patriarche/$', views.autocomplete_patriarche,
name='autocomplete-patriarche'),
diff --git a/archaeological_operations/views.py b/archaeological_operations/views.py
index 8ca97826e..76f712613 100644
--- a/archaeological_operations/views.py
+++ b/archaeological_operations/views.py
@@ -42,7 +42,8 @@ from archaeological_operations.forms import ArchaeologicalSiteForm, \
SourceOperationFormSelection, OperationSourceForm, \
AdministrativeActOpeFormSelection, AdministrativeActOpeForm, \
AdministrativeActOpeModifForm, FinalAdministrativeActDeleteForm, \
- AdministrativeActRegisterFormSelection, DocumentGenerationAdminActForm
+ AdministrativeActRegisterFormSelection, DocumentGenerationAdminActForm, \
+ SiteForm
from ishtar_common.views import get_item, show_item, revert_item, new_item
@@ -52,7 +53,7 @@ from archaeological_operations.wizards import has_associated_file, \
OperationClosingWizard, OperationDeletionWizard, SiteSearch, \
OperationSourceWizard, OperationSourceDeletionWizard, \
OperationAdministrativeActWizard, OperationEditAdministrativeActWizard, \
- AdministrativeActDeletionWizard
+ AdministrativeActDeletionWizard, SiteWizard
def autocomplete_patriarche(request):
@@ -333,6 +334,7 @@ operation_deletion_wizard = OperationDeletionWizard.as_view(
def site_extra_context(request, item):
return {'SITE_LABEL': IshtarSiteProfile.get_default_site_label()}
+
get_site = get_item(models.ArchaeologicalSite, 'get_site', 'site')
show_site = show_item(
models.ArchaeologicalSite, 'site',
@@ -344,6 +346,18 @@ site_search_wizard = SiteSearch.as_view(
label=_(u"{} search"),
url_name='site_search',)
+
+site_creation_steps = [
+ ('general-site_creation', SiteForm),
+ ('final-site_creation', FinalForm)
+]
+
+site_creation_wizard = SiteWizard.as_view(
+ site_creation_steps,
+ label=_(u"New {}"),
+ url_name='site_creation',
+)
+
# operation sources
operation_source_search_wizard = SearchWizard.as_view([
diff --git a/archaeological_operations/wizards.py b/archaeological_operations/wizards.py
index 01c9cbc2e..9f8ca3f6a 100644
--- a/archaeological_operations/wizards.py
+++ b/archaeological_operations/wizards.py
@@ -448,13 +448,21 @@ class OperationEditAdministrativeActWizard(OperationAdministrativeActWizard):
return self.get_current_object().operation
-class SiteSearch(SearchWizard):
+class SiteLabel(object):
def get_label(self):
return unicode(_(u"Search {}")).format(
get_current_profile().get_site_label()
)
+class SiteSearch(SiteLabel, SearchWizard):
+ pass
+
+
+class SiteWizard(SiteLabel, Wizard):
+ model = models.ArchaeologicalSite
+
+
class AdministrativeActDeletionWizard(ClosingWizard):
wizard_templates = {
'final-operation_administrativeactop_deletion':