summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--archaeological_warehouse/forms.py8
-rw-r--r--archaeological_warehouse/ishtar_menu.py10
-rw-r--r--archaeological_warehouse/urls.py6
-rw-r--r--archaeological_warehouse/views.py13
-rw-r--r--archaeological_warehouse/wizards.py23
-rw-r--r--ishtar_common/wizards.py14
6 files changed, 49 insertions, 25 deletions
diff --git a/archaeological_warehouse/forms.py b/archaeological_warehouse/forms.py
index d51dcf1f4..846e7cb46 100644
--- a/archaeological_warehouse/forms.py
+++ b/archaeological_warehouse/forms.py
@@ -143,6 +143,8 @@ class WarehouseForm(ManageOldType, forms.Form):
class ContainerForm(ManageOldType, forms.Form):
form_label = _(u"Container")
+ associated_models = {'container_type': models.ContainerType,
+ 'location': models.Warehouse}
reference = forms.CharField(label=_(u"Ref."))
container_type = forms.ChoiceField(label=_(u"Container type"), choices=[])
location = forms.IntegerField(
@@ -203,6 +205,12 @@ ContainerFormSelection = get_form_selection(
_(u"You should select a container."), new=True,
new_message=_(u"Add a new container"))
+MainContainerFormSelection = get_form_selection(
+ 'ContainerFormSelection', _(u"Container search"), 'pk',
+ models.Container, ContainerSelect, 'get-container',
+ _(u"You should select a container.")
+)
+
class BasePackagingForm(SelectFindBasketForm):
form_label = _(u"Packaging")
diff --git a/archaeological_warehouse/ishtar_menu.py b/archaeological_warehouse/ishtar_menu.py
index 7f182d02b..6bc65c9c7 100644
--- a/archaeological_warehouse/ishtar_menu.py
+++ b/archaeological_warehouse/ishtar_menu.py
@@ -45,9 +45,13 @@ MENU_SECTIONS = [
MenuItem('warehouse_modification', _(u"Modification"),
model=models.Warehouse,
access_controls=['change_warehouse',]),
- MenuItem('container_localisation', _(u"Container localisation"),
- model=models.Warehouse,
- access_controls=['change_warehouse',]),
+ SectionItem(
+ 'containers', _(u"Containers"),
+ childs=[
+ MenuItem('container_modification', _(u"Modification"),
+ model=models.Warehouse,
+ access_controls=['change_warehouse',]),
+ ])
]))
]
"""
diff --git a/archaeological_warehouse/urls.py b/archaeological_warehouse/urls.py
index 5c18200db..cb04d6cbc 100644
--- a/archaeological_warehouse/urls.py
+++ b/archaeological_warehouse/urls.py
@@ -57,8 +57,8 @@ urlpatterns += patterns(
check_rights(['change_warehouse'])(
views.warehouse_modification_wizard),
name='warehouse_modification'),
- url(r'^container_localisation/(?P<step>.+)?$',
+ url(r'^container_modification/(?P<step>.+)?$',
check_rights(['change_warehouse'])(
- views.container_localisation_wizard),
- name='container_localisation'),
+ views.container_modification_wizard),
+ name='container_modification'),
)
diff --git a/archaeological_warehouse/views.py b/archaeological_warehouse/views.py
index 5366aa53b..ac81a9897 100644
--- a/archaeological_warehouse/views.py
+++ b/archaeological_warehouse/views.py
@@ -110,12 +110,13 @@ warehouse_modification_wizard = WarehouseModificationWizard.as_view([
)
-container_localisation_wizard = LocalisationWizard.as_view([
- ('seleccontainer-container_localisation', ContainerFormSelection),
- ('localisation-container_localisation', LocalisationForm),
- ('final-container_localisation', FinalForm)],
- label=_(u"Container localisation"),
- url_name='container_localisation',
+container_modification_wizard = ContainerModificationWizard.as_view([
+ ('selec-container_modification', MainContainerFormSelection),
+ ('container-container_modification', ContainerModifyForm),
+ ('localisation-container_modification', LocalisationForm),
+ ('final-container_modification', FinalForm)],
+ label=_(u"Container modification"),
+ url_name='container_modification',
)
"""
diff --git a/archaeological_warehouse/wizards.py b/archaeological_warehouse/wizards.py
index bdb3959dc..4bdc150cc 100644
--- a/archaeological_warehouse/wizards.py
+++ b/archaeological_warehouse/wizards.py
@@ -66,18 +66,20 @@ class WarehouseModificationWizard(Wizard):
wizard_done_window = reverse_lazy('show-warehouse')
-class LocalisationWizard(Wizard):
+class ContainerWizard(Wizard):
+ model = models.Container
wizard_templates = {
'localisation-container_localisation':
'ishtar/wizard/wizard_containerlocalisation.html',
}
+ ignore_init_steps = ['localisation']
def get_form_kwargs(self, step=None):
- kwargs = super(LocalisationWizard, self).get_form_kwargs(step)
- if step == 'localisation-container_localisation':
+ kwargs = super(ContainerWizard, self).get_form_kwargs(step)
+ if step == 'localisation-' + self.url_name:
container = None
container_pk = self.session_get_value(
- 'seleccontainer-container_localisation', 'container')
+ 'selec-' + self.url_name, 'pk')
q = models.Container.objects.filter(pk=container_pk)
if q.count():
container = q.all()[0]
@@ -88,17 +90,13 @@ class LocalisationWizard(Wizard):
"""
Save the localisation
"""
+ super(ContainerWizard, self).done(form_list)
container = None
for idx, form in enumerate(form_list):
if not form.is_valid():
return self.render(form)
- if not idx: # container form
- try:
- container = models.Container.objects.get(
- pk=form.cleaned_data['container'])
- except models.Container.DoesNotExist:
- return self.render(form)
- elif idx == 1: # localisation form
+ container = self.get_current_object()
+ if idx == 2: # localisation form
for div_name in form.cleaned_data:
try:
division = models.WarehouseDivisionLink.objects.get(
@@ -117,3 +115,6 @@ class LocalisationWizard(Wizard):
return render_to_response(
self.wizard_done_template, {},
context_instance=RequestContext(self.request))
+
+class ContainerModificationWizard(ContainerWizard):
+ modification = True
diff --git a/ishtar_common/wizards.py b/ishtar_common/wizards.py
index 6e5216c6a..ad16ce0e1 100644
--- a/ishtar_common/wizards.py
+++ b/ishtar_common/wizards.py
@@ -127,6 +127,8 @@ class Wizard(NamedUrlWizardView):
wizard_templates = {}
filter_owns = {}
current_obj_slug = ''
+ current_object_key = 'pk'
+ ignore_init_steps = []
file_storage = default_storage
saved_args = {} # argument to pass on object save
@@ -200,6 +202,10 @@ class Wizard(NamedUrlWizardView):
templates = [self.wizard_confirm] + templates
return templates
+ def get_ignore_init_steps(self):
+ return ['{}-{}'.format(step, self.url_name) for step in
+ self.ignore_init_steps]
+
def get_context_data(self, form, **kwargs):
"""Add previous, next and current steps to manage the wizard path"""
context = super(Wizard, self).get_context_data(form)
@@ -254,7 +260,8 @@ class Wizard(NamedUrlWizardView):
for key in v:
form_key = next_step + prefix + key
prefixed_values[form_key] = v[key]
- if not prefixed_values:
+ if not prefixed_values and \
+ next_step not in self.get_ignore_init_steps():
# simulate a non empty data for form that might be
# valid when empty
prefixed_values['__non_empty_data'] = ''
@@ -481,6 +488,9 @@ class Wizard(NamedUrlWizardView):
for k in dct:
if k.startswith('pk'):
continue
+ if k not in obj.__class__._meta.get_all_field_names():
+ print(k, obj.__class__._meta.get_all_field_names())
+ continue
# False set to None for images and files
if not k.endswith('_id') and (
isinstance(obj.__class__._meta.get_field(k), FileField) or
@@ -914,7 +924,7 @@ class Wizard(NamedUrlWizardView):
current_obj = None
main_form_key = 'selec-' + self.url_name
try:
- idx = self.session_get_value(main_form_key, 'pk')
+ idx = self.session_get_value(main_form_key, self.current_object_key)
idx = int(idx)
current_obj = self.model.objects.get(pk=idx)
except(TypeError, ValueError, ObjectDoesNotExist):