diff options
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 |
commit | 0130ceb6b42e270832ee765e72b822c779eaf039 (patch) | |
tree | 84a805c788dddaecb2ea1aa78a08260532f4c002 | |
parent | 047fb6e027a008cd29305bc061922d6750fa7c62 (diff) | |
download | Ishtar-0130ceb6b42e270832ee765e72b822c779eaf039.tar.bz2 Ishtar-0130ceb6b42e270832ee765e72b822c779eaf039.zip |
Warehouse: basic add / modify wizard
-rw-r--r-- | archaeological_warehouse/forms.py | 35 | ||||
-rw-r--r-- | archaeological_warehouse/ishtar_menu.py | 32 | ||||
-rw-r--r-- | archaeological_warehouse/models.py | 2 | ||||
-rw-r--r-- | archaeological_warehouse/urls.py | 11 | ||||
-rw-r--r-- | archaeological_warehouse/views.py | 18 | ||||
-rw-r--r-- | archaeological_warehouse/wizards.py | 12 |
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 |