diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2016-12-07 20:01:09 +0100 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2016-12-07 20:01:09 +0100 |
commit | a675244a70b1721aff0048ebb671480fb40a7f67 (patch) | |
tree | 5377e0e17c0a0f0952d37997aee038803b6ca680 /archaeological_finds/forms.py | |
parent | 5d8ef415bf5aa64174bd1a13003cc6d530df0d20 (diff) | |
download | Ishtar-a675244a70b1721aff0048ebb671480fb40a7f67.tar.bz2 Ishtar-a675244a70b1721aff0048ebb671480fb40a7f67.zip |
Manage treatment files
Diffstat (limited to 'archaeological_finds/forms.py')
-rw-r--r-- | archaeological_finds/forms.py | 101 |
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 # |