summaryrefslogtreecommitdiff
path: root/archaeological_warehouse
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@peacefrogs.net>2012-10-21 21:11:48 +0200
committerÉtienne Loks <etienne.loks@peacefrogs.net>2012-10-21 21:11:48 +0200
commit4e2c3dcd9dc31221a467a5bb4e727fd06336ea07 (patch)
treee106614f06c452a4b879104d6b745b7e710928c1 /archaeological_warehouse
parent9b74fc6fbcc6c51dc6e18d33179262d14188fcc5 (diff)
downloadIshtar-4e2c3dcd9dc31221a467a5bb4e727fd06336ea07.tar.bz2
Ishtar-4e2c3dcd9dc31221a467a5bb4e727fd06336ea07.zip
Djangoization - Major refactoring (step 13)
* Fix finds wizards * Clean-up an unecessary file
Diffstat (limited to 'archaeological_warehouse')
-rw-r--r--archaeological_warehouse/forms.py87
-rw-r--r--archaeological_warehouse/urls.py4
-rw-r--r--archaeological_warehouse/views.py12
-rw-r--r--archaeological_warehouse/wizards.py2
4 files changed, 95 insertions, 10 deletions
diff --git a/archaeological_warehouse/forms.py b/archaeological_warehouse/forms.py
index 33b7ba116..2e1bfcc05 100644
--- a/archaeological_warehouse/forms.py
+++ b/archaeological_warehouse/forms.py
@@ -20,11 +20,94 @@
import datetime
from django import forms
+from django.conf import settings
from django.utils.translation import ugettext_lazy as _
from ishtar_common.models import Person, valid_id
from archaeological_finds.models import TreatmentType
import models
+from ishtar_common import widgets
+from ishtar_common.forms import name_validator, reverse_lazy, get_form_selection
+from archaeological_finds.forms import FindMultipleFormSelection
+
+def get_warehouse_field(label=_(u"Warehouse"), required=True):
+ # !FIXME hard_link, reverse_lazy doen't seem to work with formsets
+ url = "/" + settings.URL_PATH + 'autocomplete-warehouse'
+ widget = widgets.JQueryAutoComplete(url, associated_model=models.Warehouse)
+ return forms.IntegerField(widget=widget, label=label, required=required,
+ validators=[valid_id(models.Warehouse)])
+
+class WarehouseForm(forms.Form):
+ name = forms.CharField(label=_(u"Name"), max_length=40,
+ validators=[name_validator])
+ warehouse_type = forms.ChoiceField(label=_(u"Warehouse type"),
+ choices=[])
+ person_in_charge = forms.IntegerField(label=_(u"Person in charge"),
+ widget=widgets.JQueryAutoComplete(
+ reverse_lazy('autocomplete-person'), associated_model=models.Person),
+ validators=[valid_id(models.Person)],
+ required=False)
+ comment = forms.CharField(label=_(u"Comment"), widget=forms.Textarea,
+ required=False)
+ address = forms.CharField(label=_(u"Address"), widget=forms.Textarea,
+ required=False)
+ address_complement = forms.CharField(label=_(u"Address complement"),
+ widget=forms.Textarea, required=False)
+ postal_code = forms.CharField(label=_(u"Postal code"), max_length=10,
+ required=False)
+ town = forms.CharField(label=_(u"Town"), max_length=30, required=False)
+ 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,
+ required=False)
+
+ def __init__(self, *args, **kwargs):
+ super(WarehouseForm, self).__init__(*args, **kwargs)
+ self.fields['warehouse_type'].choices = \
+ models.WarehouseType.get_types()
+ self.fields['warehouse_type'].help_text = \
+ models.WarehouseType.get_help()
+
+ def save(self, user):
+ dct = self.cleaned_data
+ dct['history_modifier'] = user
+ dct['warehouse_type'] = models.WarehouseType.objects.get(
+ pk=dct['warehouse_type'])
+ if 'person_in_charge' in dct and dct['person_in_charge']:
+ dct['person_in_charge'] = models.Person.objects.get(
+ pk=dct['person_in_charge'])
+ new_item = models.Warehouse(**dct)
+ new_item.save()
+ return new_item
+
+class ContainerForm(forms.Form):
+ form_label = _(u"Container")
+ reference = forms.CharField(label=_(u"Reference"))
+ container_type = forms.ChoiceField(label=_(u"Container type"), choices=[])
+ location = forms.IntegerField(label=_(u"Warehouse"),
+ widget=widgets.JQueryAutoComplete(
+ reverse_lazy('autocomplete-warehouse'), associated_model=models.Warehouse,
+ new=True),
+ validators=[valid_id(models.Warehouse)])
+ comment = forms.CharField(label=_(u"Comment"),
+ widget=forms.Textarea, required=False)
+
+ def __init__(self, *args, **kwargs):
+ super(ContainerForm, self).__init__(*args, **kwargs)
+ self.fields['container_type'].choices = models.ContainerType.get_types()
+ self.fields['container_type'].help_text = \
+ models.ContainerType.get_help()
+
+ def save(self, user):
+ dct = self.cleaned_data
+ dct['history_modifier'] = user
+ dct['container_type'] = models.ContainerType.objects.get(
+ pk=dct['container_type'])
+ dct['location'] = models.Warehouse.objects.get(pk=dct['location'])
+ new_item = models.Container(**dct)
+ new_item.save()
+ return new_item
class ContainerSelect(forms.Form):
location = get_warehouse_field()
@@ -62,5 +145,5 @@ class BasePackagingForm(forms.Form):
self.fields['treatment_type'].initial = \
TreatmentType.objects.get(txt_idx='packaging').pk
-class ItemPackagingFormSelection(ItemMultipleFormSelection):
- form_label = _(u"Packaged items")
+class FindPackagingFormSelection(FindMultipleFormSelection):
+ form_label = _(u"Packaged finds")
diff --git a/archaeological_warehouse/urls.py b/archaeological_warehouse/urls.py
index e91568b1e..2ae27c279 100644
--- a/archaeological_warehouse/urls.py
+++ b/archaeological_warehouse/urls.py
@@ -23,8 +23,8 @@ import views
# forms
urlpatterns = patterns('',
- url(r'treatment_creation/(?P<step>.+)?$',
- views.treatment_creation_wizard, name='treatment_creation'),
+ #url(r'treatment_creation/(?P<step>.+)?$',
+ # views.treatment_creation_wizard, name='treatment_creation'),
url(r'warehouse_packaging/(?P<step>.+)?$',
views.warehouse_packaging_wizard, name='warehouse_packaging'),
)
diff --git a/archaeological_warehouse/views.py b/archaeological_warehouse/views.py
index f15220efe..10a7b9bf4 100644
--- a/archaeological_warehouse/views.py
+++ b/archaeological_warehouse/views.py
@@ -24,9 +24,10 @@ from django.http import HttpResponse
from django.shortcuts import render_to_response
from django.utils.translation import ugettext_lazy as _
-from ishtar_common.views import get_item, show_item, revert_item
+from ishtar_common.views import get_item, new_item
import models
from wizards import *
+from ishtar_common.forms import FinalForm
from forms import *
get_container = get_item(models.Container,
@@ -37,8 +38,8 @@ get_container = get_item(models.Container,
'reference':'reference__icontains',
})
-new_warehouse = new_item(models.Warehouse)
-new_container = new_item(models.Container)
+new_warehouse = new_item(models.Warehouse, WarehouseForm)
+new_container = new_item(models.Container, ContainerForm)
def autocomplete_warehouse(request):
if not request.user.has_perm('ishtar_common.view_warehouse',
@@ -86,9 +87,10 @@ def autocomplete_container(request):
warehouse_packaging_wizard = PackagingWizard.as_view([
('seleccontainer-packaging', ContainerFormSelection),
('base-packaging', BasePackagingForm),
- ('multiselecitems-packaging', ItemPackagingFormSelection),
+ ('multiselecitems-packaging', FindPackagingFormSelection),
('final-packaging', FinalForm)],
- url_name='warehouse_packaging',)
+ label=_(u"Packaging"),
+ url_name='warehouse_packaging',)
"""
warehouse_packaging_wizard = ItemSourceWizard.as_view([
diff --git a/archaeological_warehouse/wizards.py b/archaeological_warehouse/wizards.py
index cbd756bc8..c40894c25 100644
--- a/archaeological_warehouse/wizards.py
+++ b/archaeological_warehouse/wizards.py
@@ -31,7 +31,7 @@ class PackagingWizard(TreatmentWizard):
dct = self.get_extra_model(dct, form_list)
obj = self.get_current_saved_object()
dct['location'] = dct['container'].location
- items = dct.pop('items')
+ items = dct.pop('finds')
treatment = Treatment(**dct)
treatment.save()
if not hasattr(items, '__iter__'):