diff options
Diffstat (limited to 'archaeological_warehouse')
-rw-r--r-- | archaeological_warehouse/admin.py | 4 | ||||
-rw-r--r-- | archaeological_warehouse/forms.py | 74 | ||||
-rw-r--r-- | archaeological_warehouse/ishtar_menu.py | 14 | ||||
-rw-r--r-- | archaeological_warehouse/models.py | 17 | ||||
-rw-r--r-- | archaeological_warehouse/views.py | 34 | ||||
-rw-r--r-- | archaeological_warehouse/wizards.py | 1 |
6 files changed, 78 insertions, 66 deletions
diff --git a/archaeological_warehouse/admin.py b/archaeological_warehouse/admin.py index b76c48308..cf71dbab6 100644 --- a/archaeological_warehouse/admin.py +++ b/archaeological_warehouse/admin.py @@ -17,13 +17,13 @@ # See the file COPYING for details. -from django.conf import settings from django.contrib import admin from ishtar_common.admin import HistorizedObjectAdmin, GeneralTypeAdmin import models + class WarehouseAdmin(HistorizedObjectAdmin): list_display = ('name', 'warehouse_type', 'town') list_filter = ('warehouse_type',) @@ -32,6 +32,7 @@ class WarehouseAdmin(HistorizedObjectAdmin): admin.site.register(models.Warehouse, WarehouseAdmin) + class ContainerTypeAdmin(admin.ModelAdmin): list_display = ('label', 'reference', 'length', 'width', 'height', 'volume') @@ -39,6 +40,7 @@ class ContainerTypeAdmin(admin.ModelAdmin): admin.site.register(models.ContainerType, ContainerTypeAdmin) + class ContainerAdmin(admin.ModelAdmin): list_display = ('reference', 'location', 'container_type',) list_filter = ("container_type",) diff --git a/archaeological_warehouse/forms.py b/archaeological_warehouse/forms.py index ff869c5fb..f045fac1e 100644 --- a/archaeological_warehouse/forms.py +++ b/archaeological_warehouse/forms.py @@ -17,8 +17,6 @@ # See the file COPYING for details. -import datetime - from django import forms from django.conf import settings from django.utils.translation import ugettext_lazy as _ @@ -31,6 +29,7 @@ from ishtar_common.forms import name_validator, reverse_lazy, \ get_form_selection, TableSelect 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' @@ -38,16 +37,19 @@ def get_warehouse_field(label=_(u"Warehouse"), required=True): 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]) + 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) + 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, @@ -66,50 +68,54 @@ class WarehouseForm(forms.Form): def __init__(self, *args, **kwargs): super(WarehouseForm, self).__init__(*args, **kwargs) self.fields['warehouse_type'].choices = \ - models.WarehouseType.get_types() + models.WarehouseType.get_types() self.fields['warehouse_type'].help_text = \ - models.WarehouseType.get_help() + 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']) + 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']) + 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"Ref.")) 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)]) + 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'].choices = \ + models.ContainerType.get_types() self.fields['container_type'].help_text = \ - models.ContainerType.get_help() + 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']) + 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(TableSelect): location = get_warehouse_field() container_type = forms.ChoiceField(label=_(u"Container type"), choices=[]) @@ -118,9 +124,9 @@ class ContainerSelect(TableSelect): def __init__(self, *args, **kwargs): super(ContainerSelect, self).__init__(*args, **kwargs) self.fields['container_type'].choices = \ - models.ContainerType.get_types() + models.ContainerType.get_types() self.fields['container_type'].help_text = \ - models.ContainerType.get_help() + models.ContainerType.get_help() ContainerFormSelection = get_form_selection( 'ContainerFormSelection', _(u"Container search"), 'container', @@ -128,23 +134,27 @@ ContainerFormSelection = get_form_selection( _(u"You should select a container."), new=True, new_message=_(u"Add a new container")) + class BasePackagingForm(forms.Form): form_label = _(u"Packaging") - associated_models = {'treatment_type':TreatmentType, - 'person':Person, - 'location':models.Warehouse} + associated_models = {'treatment_type': TreatmentType, + 'person': Person, + 'location': models.Warehouse} treatment_type = forms.IntegerField(label="", widget=forms.HiddenInput) - person = forms.IntegerField(label=_(u"Packager"), - widget=widgets.JQueryAutoComplete(reverse_lazy('autocomplete-person'), - associated_model=Person, new=True), - validators=[valid_id(Person)]) - start_date = forms.DateField(label=_(u"Date"), required=False, - widget=widgets.JQueryDate) + person = forms.IntegerField( + label=_(u"Packager"), + widget=widgets.JQueryAutoComplete( + reverse_lazy('autocomplete-person'), + associated_model=Person, new=True), + validators=[valid_id(Person)]) + start_date = forms.DateField( + label=_(u"Date"), required=False, widget=widgets.JQueryDate) def __init__(self, *args, **kwargs): super(BasePackagingForm, self).__init__(*args, **kwargs) self.fields['treatment_type'].initial = \ - TreatmentType.objects.get(txt_idx='packaging').pk + TreatmentType.objects.get(txt_idx='packaging').pk + class FindPackagingFormSelection(FindMultipleFormSelection): form_label = _(u"Packaged finds") diff --git a/archaeological_warehouse/ishtar_menu.py b/archaeological_warehouse/ishtar_menu.py index 2da50e7ce..f9f0daf33 100644 --- a/archaeological_warehouse/ishtar_menu.py +++ b/archaeological_warehouse/ishtar_menu.py @@ -27,13 +27,13 @@ from archaeological_finds.models import Treatment MENU_SECTIONS = [ - # (60, SectionItem('find_management', _(u"Find"), - # profile_restriction='warehouse', - # childs=[ - # MenuItem('warehouse_packaging', _(u"Packaging"), - # model=Treatment, - # access_controls=['add_treatment', 'add_own_treatment']), - # ])), + (60, SectionItem('find_management', _(u"Find"), + profile_restriction='warehouse', + childs=[ + MenuItem('warehouse_packaging', _(u"Packaging"), + model=Treatment, + access_controls=['add_treatment', 'add_own_treatment']), + ])), ] """ (60, SectionItem('warehouse', _(u"Warehouse"), diff --git a/archaeological_warehouse/models.py b/archaeological_warehouse/models.py index 86e430a7e..3591f554a 100644 --- a/archaeological_warehouse/models.py +++ b/archaeological_warehouse/models.py @@ -17,12 +17,11 @@ # See the file COPYING for details. -from django.conf import settings from django.contrib.gis.db import models from django.utils.translation import ugettext_lazy as _, ugettext -from ishtar_common.models import GeneralType, BaseHistorizedItem, \ - LightHistorizedItem, OwnPerms, Address, Person +from ishtar_common.models import GeneralType, \ + LightHistorizedItem, OwnPerms, Address, Person class WarehouseType(GeneralType): @@ -31,13 +30,14 @@ class WarehouseType(GeneralType): verbose_name_plural = _(u"Warehouse types") ordering = ('label',) + class Warehouse(Address, OwnPerms): name = models.CharField(_(u"Name"), max_length=40) warehouse_type = models.ForeignKey(WarehouseType, verbose_name=_(u"Warehouse type")) - person_in_charge = models.ForeignKey(Person, on_delete=models.SET_NULL, - related_name='warehouse_in_charge', - verbose_name=_(u"Person in charge"), null=True, blank=True) + person_in_charge = models.ForeignKey( + Person, on_delete=models.SET_NULL, related_name='warehouse_in_charge', + verbose_name=_(u"Person in charge"), null=True, blank=True) comment = models.TextField(_(u"Comment"), null=True, blank=True) class Meta: @@ -54,6 +54,7 @@ class Warehouse(Address, OwnPerms): def __unicode__(self): return u"%s (%s)" % (self.name, unicode(self.warehouse_type)) + class ContainerType(GeneralType): length = models.IntegerField(_(u"Length (mm)"), blank=True, null=True) width = models.IntegerField(_(u"Width (mm)"), blank=True, null=True) @@ -66,8 +67,9 @@ class ContainerType(GeneralType): verbose_name_plural = _(u"Container types") ordering = ('label',) + class Container(LightHistorizedItem): - TABLE_COLS = ['reference', 'container_type', 'location',] + TABLE_COLS = ['reference', 'container_type', 'location'] location = models.ForeignKey(Warehouse, verbose_name=_(u"Warehouse")) container_type = models.ForeignKey(ContainerType, verbose_name=_("Container type")) @@ -82,4 +84,3 @@ class Container(LightHistorizedItem): lbl = u" - ".join((self.reference, unicode(self.container_type), unicode(self.location))) return lbl - diff --git a/archaeological_warehouse/views.py b/archaeological_warehouse/views.py index 22eed80e3..aab18ed40 100644 --- a/archaeological_warehouse/views.py +++ b/archaeological_warehouse/views.py @@ -21,7 +21,6 @@ import json from django.db.models import Q 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, new_item @@ -30,13 +29,14 @@ from wizards import * from ishtar_common.forms import FinalForm from forms import * -get_container = get_item(models.Container, - 'get_container', 'container', - extra_request_keys={ - 'location':'location__pk', - 'container_type':'container_type__pk', - 'reference':'reference__icontains', - }) +get_container = get_item( + models.Container, + 'get_container', 'container', + extra_request_keys={ + 'location': 'location__pk', + 'container_type': 'container_type__pk', + 'reference': 'reference__icontains', + }) new_warehouse = new_item(models.Warehouse, WarehouseForm) new_container = new_item(models.Container, ContainerForm) @@ -54,12 +54,12 @@ def autocomplete_warehouse(request): query = Q() for q in q.split(' '): extra = Q(name__icontains=q) | \ - Q(warehouse_type__label__icontains=q) + Q(warehouse_type__label__icontains=q) query = query & extra limit = 15 warehouses = models.Warehouse.objects.filter(query)[:limit] - data = json.dumps([{'id':warehouse.pk, 'value':unicode(warehouse)} - for warehouse in warehouses]) + data = json.dumps([{'id': warehouse.pk, 'value': unicode(warehouse)} + for warehouse in warehouses]) return HttpResponse(data, mimetype='text/plain') @@ -75,15 +75,15 @@ def autocomplete_container(request): query = Q() for q in q.split(' '): extra = Q(container_type__label__icontains=q) | \ - Q(container_type__reference__icontains=q) | \ - Q(reference__icontains=q) | \ - Q(location__name=q) | \ - Q(location__town=q) + Q(container_type__reference__icontains=q) | \ + Q(reference__icontains=q) | \ + Q(location__name=q) | \ + Q(location__town=q) query = query & extra limit = 15 containers = models.Container.objects.filter(query)[:limit] - data = json.dumps([{'id':container.pk, 'value':unicode(container)} - for container in containers]) + data = json.dumps([{'id': container.pk, 'value': unicode(container)} + for container in containers]) return HttpResponse(data, mimetype='text/plain') warehouse_packaging_wizard = PackagingWizard.as_view([ diff --git a/archaeological_warehouse/wizards.py b/archaeological_warehouse/wizards.py index c40894c25..833c1c697 100644 --- a/archaeological_warehouse/wizards.py +++ b/archaeological_warehouse/wizards.py @@ -19,7 +19,6 @@ from django.shortcuts import render_to_response from django.template import RequestContext -from django.utils.translation import ugettext_lazy as _ from archaeological_finds.wizards import TreatmentWizard from archaeological_finds.models import Treatment |