summaryrefslogtreecommitdiff
path: root/archaeological_finds/forms.py
diff options
context:
space:
mode:
Diffstat (limited to 'archaeological_finds/forms.py')
-rw-r--r--archaeological_finds/forms.py101
1 files changed, 97 insertions, 4 deletions
diff --git a/archaeological_finds/forms.py b/archaeological_finds/forms.py
index 3fc8d7c01..fe717515e 100644
--- a/archaeological_finds/forms.py
+++ b/archaeological_finds/forms.py
@@ -38,7 +38,7 @@ from archaeological_operations.models import Period, ArchaeologicalSite, \
RelationType as OpeRelationType
from archaeological_context_records.models import DatingType, DatingQuality, \
ContextRecord
-from archaeological_warehouse.models import Warehouse
+from archaeological_warehouse.models import Warehouse, Container
import models
from ishtar_common import widgets
@@ -639,7 +639,7 @@ class BaseTreatmentForm(ManageOldType, forms.Form):
'person': Person,
'location': Warehouse,
'organization': Organization,
- 'container': models.Container,
+ 'container': Container,
}
file_upload = True
need_user_for_initialization = True
@@ -678,8 +678,8 @@ class BaseTreatmentForm(ManageOldType, forms.Form):
label=_(u"Container (relevant for packaging)"),
widget=widgets.JQueryAutoComplete(
reverse_lazy('autocomplete-container'),
- associated_model=models.Container, new=True),
- validators=[valid_id(models.Container)], required=False)
+ associated_model=Container, new=True),
+ validators=[valid_id(Container)], required=False)
external_id = forms.CharField(
label=_(u"External ref."), max_length=200, required=False)
comment = forms.CharField(label=_(u"Comment"),
@@ -792,6 +792,99 @@ class TreatmentDeletionForm(FinalForm):
confirm_end_msg = _(u"Would you like to delete this treatment?")
+class TreatmentFileSelect(TableSelect):
+ name = forms.CharField(label=_(u"Name"))
+ internal_reference = forms.CharField(label=_(u"Internal ref."))
+ year = forms.IntegerField(label=_(u"Year"))
+ index = forms.IntegerField(label=_(u"Index"))
+ type = forms.ChoiceField(label=_(u"Treatment file type"), choices=[])
+
+ def __init__(self, *args, **kwargs):
+ super(TreatmentFileSelect, self).__init__(*args, **kwargs)
+ self.fields['type'].choices = models.TreatmentFileType.get_types()
+ self.fields['type'].help_text = models.TreatmentFileType.get_help()
+
+
+class TreatmentFileFormSelection(forms.Form):
+ form_label = _("Treatment file search")
+ associated_models = {'pk': models.TreatmentFile}
+ currents = {'pk': models.TreatmentFile}
+ pk = forms.IntegerField(
+ label="", required=False,
+ widget=widgets.JQueryJqGrid(
+ reverse_lazy('get-treatmentfile'),
+ TreatmentFileSelect, models.TreatmentFile),
+ validators=[valid_id(models.Treatment)])
+
+
+class TreatmentFileForm(ManageOldType, forms.Form):
+ form_label = _(u"Treatment file")
+ base_models = ['treatment_type_type']
+ associated_models = {'type': models.TreatmentFileType,
+ 'in_charge': Person}
+ need_user_for_initialization = True
+
+ name = forms.CharField(label=_(u"Name"),
+ max_length=1000, required=False)
+ internal_reference = forms.CharField(
+ label=_(u"Internal ref."), max_length=60, required=False)
+ year = forms.IntegerField(label=_("Year"),
+ initial=lambda: datetime.datetime.now().year,
+ validators=[validators.MinValueValidator(1900),
+ validators.MaxValueValidator(2100)])
+ type = forms.ChoiceField(
+ label=_(u"Treatment file type"), choices=[])
+ in_charge = forms.IntegerField(
+ label=_(u"Responsible"),
+ widget=widgets.JQueryAutoComplete(
+ reverse_lazy('autocomplete-person'), associated_model=Person,
+ new=True),
+ validators=[valid_id(Person)])
+ external_id = forms.CharField(
+ label=_(u"External ref."), max_length=200, required=False)
+ comment = forms.CharField(label=_(u"Comment"),
+ widget=forms.Textarea, required=False)
+ creation_date = forms.DateField(label=_(u"Start date"), required=False,
+ widget=widgets.JQueryDate,
+ initial=lambda: datetime.datetime.now())
+ reception_date = forms.DateField(label=_(u"Reception date"), required=False,
+ widget=widgets.JQueryDate,
+ initial=lambda: datetime.datetime.now())
+ end_date = forms.DateField(label=_(u"Closing date"), required=False,
+ widget=widgets.JQueryDate)
+
+ def __init__(self, *args, **kwargs):
+ user = kwargs.pop('user')
+ super(TreatmentFileForm, self).__init__(*args, **kwargs)
+ q = Person.objects.filter(ishtaruser__pk=user.pk)
+ if q.count():
+ person = q.all()[0]
+ self.fields['in_charge'].initial = person.pk
+ self.fields['type'].choices = models.TreatmentFileType.get_types(
+ initial=[self.init_data.get('type')], empty_first=False
+ )
+ self.fields['type'].help_text = models.TreatmentFileType.get_help()
+
+
+class ModifyTreatmentFileForm(TreatmentFileForm):
+ index = forms.IntegerField(_(u"Index"))
+ id = forms.IntegerField(' ', widget=forms.HiddenInput, required=False)
+
+ def clean(self, *args, **kwargs):
+ super(ModifyTreatmentFileForm, self).clean(*args, **kwargs)
+ cleaned_data = self.cleaned_data
+ year = cleaned_data.get('year')
+ pk = cleaned_data.get('id')
+ index = cleaned_data.get('index')
+ q = models.TreatmentFile.objects\
+ .filter(year=year, index=index).exclude(pk=pk)
+ if index and q.count():
+ raise forms.ValidationError(
+ _(u"Another treatment file with this index exists for {}."
+ ).format(year))
+ return cleaned_data
+
+
"""
####################################
# Source management for treatments #