summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--archaeological_finds/forms.py31
-rw-r--r--archaeological_finds/views.py46
-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
-rw-r--r--example_project/urls.py3
-rw-r--r--ishtar_common/forms_common.py51
-rw-r--r--ishtar_common/forms_main.py26
-rw-r--r--ishtar_common/urls.py1
-rw-r--r--ishtar_common/views.py13
11 files changed, 127 insertions, 149 deletions
diff --git a/archaeological_finds/forms.py b/archaeological_finds/forms.py
index 9c682b25a..c5480d8a8 100644
--- a/archaeological_finds/forms.py
+++ b/archaeological_finds/forms.py
@@ -34,13 +34,13 @@ from django.utils.translation import ugettext_lazy as _
from ishtar_common.models import Person, valid_id, valid_ids
from archaeological_operations.models import Period, OperationType
from archaeological_context_records.models import DatingType, DatingQuality
-from archaeological_warehouse.models import Warehouse, ContainerType, Container
+from archaeological_warehouse.models import Warehouse
import models
from ishtar_common import widgets
from ishtar_common.forms import FinalForm, FormSet, FloatField, \
formset_factory, get_now, get_form_selection, reverse_lazy
-from ishtar_common.forms_common import get_town_field, get_warehouse_field, \
+from ishtar_common.forms_common import get_town_field, \
SourceForm, SourceSelect, SourceDeletionForm, AuthorFormset
from archaeological_context_records.forms import RecordFormSelection
@@ -155,33 +155,6 @@ class FindMultipleFormSelection(forms.Form):
u"archaeological find."))
return self.cleaned_data
-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=Warehouse,
- new=True),
- validators=[valid_id(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 = ContainerType.get_types()
- self.fields['container_type'].help_text = ContainerType.get_help()
-
- def save(self, user):
- dct = self.cleaned_data
- dct['history_modifier'] = user
- dct['container_type'] = ContainerType.objects.get(
- pk=dct['container_type'])
- dct['location'] = Warehouse.objects.get(pk=dct['location'])
- new_item = Container(**dct)
- new_item.save()
- return new_item
-
def check_treatment(form_name, type_key, type_list=[], not_type_list=[]):
type_list = [models.TreatmentType.objects.get(txt_idx=tpe).pk
for tpe in type_list]
diff --git a/archaeological_finds/views.py b/archaeological_finds/views.py
index b52e86659..c0ee19c9f 100644
--- a/archaeological_finds/views.py
+++ b/archaeological_finds/views.py
@@ -68,6 +68,29 @@ find_modification_wizard = FindModificationWizard.as_view([
label=_(u"Find modification"),
url_name='find_modification',)
+find_source_creation_wizard = FindSourceWizard.as_view([
+ ('selec-find_source_creation', SourceFindFormSelection),
+ ('source-find_source_creation', SourceForm),
+ ('authors-find_source_creation', AuthorFormset),
+ ('final-find_source_creation', FinalForm)],
+ label=_(u"Find: new source"),
+ url_name='find_source_creation',)
+
+find_source_modification_wizard = FindSourceWizard.as_view([
+ ('selec-find_source_modification', FindSourceFormSelection),
+ ('source-find_source_modification', SourceForm),
+ ('authors-find_source_modification', AuthorFormset),
+ ('final-find_source_modification', FinalForm)],
+ label=_(u"Find: source modification"),
+ url_name='find_source_modification',)
+
+find_source_deletion_wizard = FindSourceDeletionWizard.as_view([
+ ('selec-find_source_deletion', FindSourceFormSelection),
+ ('final-find_source_deletion', SourceDeletionForm)],
+ label=_(u"Find: source deletion"),
+ url_name='find_source_deletion',)
+
+"""
treatment_creation_wizard = TreatmentWizard.as_view([
('basetreatment-treatment_creation', BaseTreatmentForm),
('selecfind-treatment_creation', UpstreamFindFormSelection),
@@ -97,28 +120,7 @@ treatment_creation_wizard = TreatmentWizard.as_view([
},
label=_(u"New treatment"),
url_name='treatment_creation',)
-
-find_source_creation_wizard = FindSourceWizard.as_view([
- ('selec-find_source_creation', SourceFindFormSelection),
- ('source-find_source_creation', SourceForm),
- ('authors-find_source_creation', AuthorFormset),
- ('final-find_source_creation', FinalForm)],
- label=_(u"Find: new source"),
- url_name='find_source_creation',)
-
-find_source_modification_wizard = FindSourceWizard.as_view([
- ('selec-find_source_modification', FindSourceFormSelection),
- ('source-find_source_modification', SourceForm),
- ('authors-find_source_modification', AuthorFormset),
- ('final-find_source_modification', FinalForm)],
- label=_(u"Find: source modification"),
- url_name='find_source_modification',)
-
-find_source_deletion_wizard = FindSourceDeletionWizard.as_view([
- ('selec-find_source_deletion', FindSourceFormSelection),
- ('final-find_source_deletion', SourceDeletionForm)],
- label=_(u"Find: source deletion"),
- url_name='find_source_deletion',)
+"""
"""
treatment_source_creation_wizard = TreatmentSourceWizard.as_view([
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__'):
diff --git a/example_project/urls.py b/example_project/urls.py
index f39243cdb..0b72a1bc6 100644
--- a/example_project/urls.py
+++ b/example_project/urls.py
@@ -15,9 +15,6 @@ urlpatterns = patterns('',
APP_LIST = ['archaeological_files', 'archaeological_operations',
'archaeological_context_records', 'archaeological_warehouse',
'archaeological_finds']
-APP_LIST = ['archaeological_files', 'archaeological_operations',
- 'archaeological_context_records',
- 'archaeological_finds']
for app in APP_LIST:
if app in settings.INSTALLED_APPS:
urlpatterns += patterns('',
diff --git a/ishtar_common/forms_common.py b/ishtar_common/forms_common.py
index ccae0b6d2..34a930e36 100644
--- a/ishtar_common/forms_common.py
+++ b/ishtar_common/forms_common.py
@@ -65,57 +65,6 @@ def get_person_field(label=_(u"Person"), required=True, person_type=None):
return forms.IntegerField(widget=widget, label=label, required=required,
validators=[models.valid_id(models.Person)])
-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=[models.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=[models.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 OrganizationForm(forms.Form):
name = forms.CharField(label=_(u"Name"), max_length=40,
validators=[name_validator])
diff --git a/ishtar_common/forms_main.py b/ishtar_common/forms_main.py
deleted file mode 100644
index 29253f284..000000000
--- a/ishtar_common/forms_main.py
+++ /dev/null
@@ -1,26 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-# Copyright (C) 2011 Étienne Loks <etienne.loks_AT_peacefrogsDOTnet>
-
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU Affero General Public License as
-# published by the Free Software Foundation, either version 3 of the
-# License, or (at your option) any later version.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU Affero General Public License for more details.
-
-# You should have received a copy of the GNU Affero General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-# See the file COPYING for details.
-
-from forms_common import *
-#from forms_files import *
-#from forms_operations import *
-#from forms_context_records import *
-#from forms_items import *
-from forms import *
-
diff --git a/ishtar_common/urls.py b/ishtar_common/urls.py
index 7f82ade2f..cebea1dbe 100644
--- a/ishtar_common/urls.py
+++ b/ishtar_common/urls.py
@@ -20,7 +20,6 @@
from django.conf.urls.defaults import *
from menus import menu
-#import forms_main as ishtar_forms
import views
diff --git a/ishtar_common/views.py b/ishtar_common/views.py
index 4f010d866..6c682c932 100644
--- a/ishtar_common/views.py
+++ b/ishtar_common/views.py
@@ -49,11 +49,10 @@ if settings.XHTML2ODT_PATH:
from xhtml2odt import xhtml2odt
from menus import menu
-import forms_main as ishtar_forms
from ishtar_common.forms import FinalForm
from ishtar_common.forms_common import PersonForm, PersonFormSelection,\
- AccountForm, FinalAccountForm
+ AccountForm, FinalAccountForm, OrganizationForm, AuthorForm
from ishtar_common.wizards import PersonWizard, PersonModifWizard, AccountWizard
import models
@@ -494,13 +493,13 @@ def autocomplete_author(request):
for author in authors])
return HttpResponse(data, mimetype='text/plain')
-def new_item(model):
+def new_item(model, frm):
def func(request, parent_name):
model_name = model._meta.object_name
if not check_permission(request, 'add_'+model_name.lower()):
not_permitted_msg = ugettext(u"Operation not permitted.")
return HttpResponse(not_permitted_msg)
- frm = getattr(ishtar_forms, model_name + 'Form')
+ #frm = getattr(ishtar_forms, model_name + 'Form')
dct = {'title':unicode(_(u'New %s' % model_name.lower()))}
if request.method == 'POST':
dct['form'] = frm(request.POST)
@@ -521,9 +520,9 @@ def new_item(model):
context_instance=RequestContext(request))
return func
-new_person = new_item(models.Person)
-new_organization = new_item(models.Organization)
-new_author = new_item(models.Author)
+new_person = new_item(models.Person, PersonForm)
+new_organization = new_item(models.Organization, OrganizationForm)
+new_author = new_item(models.Author, AuthorForm)
def action(request, action_slug, obj_id=None, *args, **kwargs):
"""