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 | 86c95b458869560d97ede77579262c86597c4453 (patch) | |
| tree | 5377e0e17c0a0f0952d37997aee038803b6ca680 /archaeological_finds/forms.py | |
| parent | fcf63a61bdcab906aad45c69eb95167850e2c40a (diff) | |
| download | Ishtar-86c95b458869560d97ede77579262c86597c4453.tar.bz2 Ishtar-86c95b458869560d97ede77579262c86597c4453.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 #  | 
