summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2016-12-13 19:03:20 +0100
committerÉtienne Loks <etienne.loks@iggdrasil.net>2016-12-13 19:03:20 +0100
commit0130ceb6b42e270832ee765e72b822c779eaf039 (patch)
tree84a805c788dddaecb2ea1aa78a08260532f4c002
parent047fb6e027a008cd29305bc061922d6750fa7c62 (diff)
downloadIshtar-0130ceb6b42e270832ee765e72b822c779eaf039.tar.bz2
Ishtar-0130ceb6b42e270832ee765e72b822c779eaf039.zip
Warehouse: basic add / modify wizard
-rw-r--r--archaeological_warehouse/forms.py35
-rw-r--r--archaeological_warehouse/ishtar_menu.py32
-rw-r--r--archaeological_warehouse/models.py2
-rw-r--r--archaeological_warehouse/urls.py11
-rw-r--r--archaeological_warehouse/views.py18
-rw-r--r--archaeological_warehouse/wizards.py12
6 files changed, 94 insertions, 16 deletions
diff --git a/archaeological_warehouse/forms.py b/archaeological_warehouse/forms.py
index b34be3ab3..f73dac22e 100644
--- a/archaeological_warehouse/forms.py
+++ b/archaeological_warehouse/forms.py
@@ -39,7 +39,36 @@ def get_warehouse_field(label=_(u"Warehouse"), required=True):
validators=[valid_id(models.Warehouse)])
+class WarehouseSelect(TableSelect):
+ name = forms.CharField(label=_(u"Name"))
+ warehouse_type = forms.ChoiceField(label=_(u"Warehouse type"), choices=[])
+ towns = forms.CharField(label=_(u"Town"))
+
+ def __init__(self, *args, **kwargs):
+ super(WarehouseSelect, self).__init__(*args, **kwargs)
+ self.fields['warehouse_type'].choices = \
+ models.WarehouseType.get_types()
+ self.fields['warehouse_type'].help_text = \
+ models.WarehouseType.get_help()
+
+
+class WarehouseFormSelection(forms.Form):
+ form_label = _("Warehouse search")
+ associated_models = {'pk': models.Warehouse}
+ currents = {'pk': models.Warehouse}
+ pk = forms.IntegerField(
+ label="", required=False,
+ widget=widgets.JQueryJqGrid(
+ reverse_lazy('get-warehouse'),
+ WarehouseSelect, models.Warehouse),
+ validators=[valid_id(models.Warehouse)])
+
+
class WarehouseForm(ManageOldType, forms.Form):
+ form_label = _(u"Warehouse")
+ associated_models = {'warehouse_type': models.WarehouseType,
+ 'person_in_charge': Person}
+
name = forms.CharField(label=_(u"Name"), max_length=40,
validators=[name_validator])
warehouse_type = forms.ChoiceField(label=_(u"Warehouse type"),
@@ -48,8 +77,8 @@ class WarehouseForm(ManageOldType, forms.Form):
label=_(u"Person in charge"),
widget=widgets.JQueryAutoComplete(
reverse_lazy('autocomplete-person'),
- associated_model=models.Person),
- validators=[valid_id(models.Person)],
+ associated_model=Person),
+ validators=[valid_id(Person)],
required=False)
comment = forms.CharField(label=_(u"Comment"), widget=forms.Textarea,
required=False)
@@ -63,7 +92,7 @@ class WarehouseForm(ManageOldType, forms.Form):
country = forms.CharField(label=_(u"Country"), max_length=30,
required=False)
phone = forms.CharField(label=_(u"Phone"), max_length=18, required=False)
- mobile_phone = forms.CharField(label=_(u"Town"), max_length=18,
+ mobile_phone = forms.CharField(label=_(u"Mobile phone"), max_length=18,
required=False)
def __init__(self, *args, **kwargs):
diff --git a/archaeological_warehouse/ishtar_menu.py b/archaeological_warehouse/ishtar_menu.py
index c69ad760d..45c73a03b 100644
--- a/archaeological_warehouse/ishtar_menu.py
+++ b/archaeological_warehouse/ishtar_menu.py
@@ -23,6 +23,8 @@ from ishtar_common.menu_base import SectionItem, MenuItem
from archaeological_finds.models import Treatment
+import models
+
# be carreful: each access_controls must be relevant with check_rights in urls
@@ -34,18 +36,24 @@ MENU_SECTIONS = [
model=Treatment,
access_controls=['add_treatment', 'add_own_treatment']),
])),
-]
-"""
- (60, SectionItem('warehouse', _(u"Warehouse"),
+ (80, SectionItem('warehouse', _(u"Warehouse"),
childs=[
- MenuItem('warehouse_inventory', _(u"Inventory"),
- model=models.Warehouse,
- access_controls=['change_warehouse',]),
- MenuItem('warehouse_recording', _(u"Recording"),
- model=Treatment,
- access_controls=['add_treatment', 'add_own_treatment']),
- MenuItem('warehouse_lend', _(u"Lending"),
- model=Treatment,
- access_controls=['add_treatment', 'add_own_treatment']),
+ MenuItem('warehouse_creation', _(u"Creation"),
+ model=models.Warehouse,
+ access_controls=['add_warehouse',]),
+ MenuItem('warehouse_modification', _(u"Modification"),
+ model=models.Warehouse,
+ access_controls=['change_warehouse',]),
]))
+]
+"""
+ MenuItem('warehouse_inventory', _(u"Inventory"),
+ model=models.Warehouse,
+ access_controls=['change_warehouse',]),
+ MenuItem('warehouse_recording', _(u"Recording"),
+ model=Treatment,
+ access_controls=['add_treatment', 'add_own_treatment']),
+ MenuItem('warehouse_lend', _(u"Lending"),
+ model=Treatment,
+ access_controls=['add_treatment', 'add_own_treatment']),
"""
diff --git a/archaeological_warehouse/models.py b/archaeological_warehouse/models.py
index 389cc4f5a..71b5bf6d7 100644
--- a/archaeological_warehouse/models.py
+++ b/archaeological_warehouse/models.py
@@ -43,6 +43,8 @@ class Warehouse(Address, OwnPerms):
verbose_name=_(u"Person in charge"), null=True, blank=True)
comment = models.TextField(_(u"Comment"), null=True, blank=True)
+ TABLE_COLS = ['name', 'warehouse_type']
+
class Meta:
verbose_name = _(u"Warehouse")
verbose_name_plural = _(u"Warehouses")
diff --git a/archaeological_warehouse/urls.py b/archaeological_warehouse/urls.py
index 9094f0a91..f6f9d73c0 100644
--- a/archaeological_warehouse/urls.py
+++ b/archaeological_warehouse/urls.py
@@ -19,7 +19,7 @@
from django.conf.urls.defaults import *
-# from ishtar_common.wizards import check_rights
+from ishtar_common.wizards import check_rights
import views
# be carreful: each check_rights must be relevant with ishtar_menu
@@ -41,6 +41,15 @@ urlpatterns += patterns(
'new_container', name='new-container'),
url(r'get-container/$', 'get_container',
name='get-container'),
+ url(r'get-warehouse/(?P<type>.+)?$', 'get_warehouse',
+ name='get-warehouse'),
url(r'autocomplete-container/?$',
'autocomplete_container', name='autocomplete-container'),
+ url(r'^warehouse_creation/(?P<step>.+)?$',
+ check_rights(['add_warehouse'])(
+ views.warehouse_creation_wizard), name='warehouse_creation'),
+ url(r'^warehouse_modification/(?P<step>.+)?$',
+ check_rights(['change_warehouse'])(
+ views.warehouse_modification_wizard),
+ name='warehouse_modification'),
)
diff --git a/archaeological_warehouse/views.py b/archaeological_warehouse/views.py
index d8027a9a6..385a373e7 100644
--- a/archaeological_warehouse/views.py
+++ b/archaeological_warehouse/views.py
@@ -31,6 +31,8 @@ from forms import *
get_container = get_item(models.Container, 'get_container', 'container')
+get_warehouse = get_item(models.Warehouse, 'get_warehouse', 'warehouse')
+
new_warehouse = new_item(models.Warehouse, WarehouseForm)
new_container = new_item(models.Container, ContainerForm)
@@ -87,6 +89,22 @@ warehouse_packaging_wizard = PackagingWizard.as_view([
label=_(u"Packaging"),
url_name='warehouse_packaging',)
+warehouse_creation_wizard = WarehouseWizard.as_view([
+ ("warehouse-warehouse_creation", WarehouseForm),
+ ('final-warehouse_creation', FinalForm)],
+ label=_(u"Warehouse creation"),
+ url_name='warehouse_creation',
+)
+
+warehouse_modification_wizard = WarehouseModificationWizard.as_view([
+ ('selec-warehouse_modification', WarehouseFormSelection),
+ ("warehouse-warehouse_modification", WarehouseForm),
+ ('final-warehouse_modification', FinalForm)],
+ label=_(u"Warehouse modification"),
+ url_name='warehouse_modification',
+)
+
+
"""
warehouse_packaging_wizard = ItemSourceWizard.as_view([
('selec-warehouse_packaging', ItemsSelection),
diff --git a/archaeological_warehouse/wizards.py b/archaeological_warehouse/wizards.py
index 62b441e00..f5aee5c1e 100644
--- a/archaeological_warehouse/wizards.py
+++ b/archaeological_warehouse/wizards.py
@@ -20,9 +20,12 @@
from django.shortcuts import render_to_response
from django.template import RequestContext
+from ishtar_common.wizards import Wizard
from archaeological_finds.wizards import TreatmentWizard
from archaeological_finds.models import Treatment
+import models
+
class PackagingWizard(TreatmentWizard):
basket_step = 'base-packaging'
@@ -40,3 +43,12 @@ class PackagingWizard(TreatmentWizard):
res = render_to_response('ishtar/wizard/wizard_done.html', {},
context_instance=RequestContext(self.request))
return return_object and (obj, res) or res
+
+
+class WarehouseWizard(Wizard):
+ model = models.Warehouse
+
+
+class WarehouseModificationWizard(Wizard):
+ model = models.Warehouse
+ modification = True