diff options
Diffstat (limited to 'archaeological_finds/forms.py')
| -rw-r--r-- | archaeological_finds/forms.py | 112 | 
1 files changed, 101 insertions, 11 deletions
| diff --git a/archaeological_finds/forms.py b/archaeological_finds/forms.py index fbcc32013..a7fc0bc02 100644 --- a/archaeological_finds/forms.py +++ b/archaeological_finds/forms.py @@ -52,7 +52,7 @@ from bootstrap_datepicker.widgets import DatePicker  from ishtar_common import widgets  from ishtar_common.forms import CustomForm, CustomFormSearch, FormSet, \      FloatField, reverse_lazy, TableSelect, get_now, FinalForm, \ -    ManageOldType, FieldType, IshtarForm, FormHeader +    ManageOldType, FieldType, IshtarForm, FormHeader, QAForm  from ishtar_common.forms_common import get_town_field  from ishtar_common.models import valid_id, valid_ids, get_current_profile, \      SpatialReferenceSystem, Area, OperationType @@ -79,6 +79,7 @@ __all__ = [      'check_treatment', 'ResultFindForm', 'ResultFindFormSet',      'FindDeletionForm', 'UpstreamFindFormSelection', 'NewFindBasketForm',      'SelectFindBasketForm', 'DeleteFindBasketForm', 'FindBasketAddItemForm', +    'QAFindFormSingle', 'QAFindFormMulti'  ]  logger = logging.getLogger(__name__) @@ -207,24 +208,24 @@ class FindForm(CustomForm, ManageOldType):      dimensions_comment = forms.CharField(          label=_(u"Dimensions comment"), required=False, widget=forms.Textarea) -    HEADERS['get_first_base_find__topographic_localisation'] = FormHeader( +    HEADERS['get_first_base_find__x'] = FormHeader(          _(u"Coordinates")) -    get_first_base_find__topographic_localisation = forms.CharField( -        label=_(u"Point of topographic reference"), -        required=False, max_length=120 -    )      get_first_base_find__x = forms.FloatField(label=_(u"X"), required=False) -    get_first_base_find__y = forms.FloatField(label=_(u"Y"), required=False) -    get_first_base_find__z = forms.FloatField(label=_(u"Z"), required=False) -    get_first_base_find__spatial_reference_system = \ -        forms.ChoiceField(label=_(u"Spatial Reference System"), required=False, -                          choices=[])      get_first_base_find__estimated_error_x = \          forms.FloatField(label=_(u"Estimated error for X"), required=False) +    get_first_base_find__y = forms.FloatField(label=_(u"Y"), required=False)      get_first_base_find__estimated_error_y = \          forms.FloatField(label=_(u"Estimated error for Y"), required=False) +    get_first_base_find__z = forms.FloatField(label=_(u"Z"), required=False)      get_first_base_find__estimated_error_z = \          forms.FloatField(label=_(u"Estimated error for Z"), required=False) +    get_first_base_find__spatial_reference_system = \ +        forms.ChoiceField(label=_(u"Spatial Reference System"), required=False, +                          choices=[]) +    get_first_base_find__topographic_localisation = forms.CharField( +        label=_(u"Point of topographic reference"), +        required=False, max_length=120 +    )      HEADERS['checked_type'] = FormHeader(_(u"Sheet"))      checked_type = forms.ChoiceField(label=_(u"Check"), required=False) @@ -315,6 +316,95 @@ class FindForm(CustomForm, ManageOldType):          return self.cleaned_data +QAHeaders = { +    'description': FormHeader(_(u"Description")), +    'checked_type': FormHeader(_(u"Sheet")) +} + + +class QAFindFormMulti(QAForm): +    form_admin_name = _(u"Find - Quick action - Modify") +    form_slug = "find-quickaction-modify" +    base_models = ['get_first_base_find', 'object_types', 'material_types', +                   'communicabilities'] +    associated_models = { +        'material_types': models.MaterialType, +        'object_types': models.ObjectType, +        'communicabilities': models.CommunicabilityType, +        'checked_type': models.CheckedType, +    } + +    MULTI = True +    REPLACE_FIELDS = [ +        'manufacturing_place', 'checked_type', 'check_date' +    ] + +    HEADERS = QAHeaders.copy() + +    description = forms.CharField(label=_(u"Description"), +                                  widget=forms.Textarea, required=False) +    material_types = widgets.Select2MultipleField( +        label=_(u"Material types"), required=False +    ) +    object_types = widgets.Select2MultipleField( +        label=_(u"Object types"), required=False, +    ) +    decoration = forms.CharField( +        label=_(u"Decoration"), widget=forms.Textarea, +        required=False) +    inscription = forms.CharField( +        label=_(u"Inscription"), widget=forms.Textarea, +        required=False) +    manufacturing_place = forms.CharField( +        label=_(u"Manufacturing place"), required=False) +    communicabilities = widgets.Select2MultipleField( +        label=_(u"Communicability"), required=False +    ) +    comment = forms.CharField( +        label=_(u"Comment"), required=False, +        widget=forms.Textarea) +    dating_comment = forms.CharField( +        label=_(u"Comment on dating"), required=False, +        widget=forms.Textarea) + +    checked_type = forms.ChoiceField(label=_(u"Check"), required=False) +    check_date = forms.DateField( +        initial=get_now, label=_(u"Check date"), widget=DatePicker) + +    TYPES = [ +        FieldType('material_types', models.MaterialType, is_multiple=True), +        FieldType('object_types', models.ObjectType, is_multiple=True), +        FieldType('communicabilities', models.CommunicabilityType, +                  is_multiple=True), +        FieldType('checked_type', models.CheckedType, is_multiple=True), +    ] + + +class QAFindFormSingle(QAFindFormMulti): +    form_admin_name = _(u"Find - Quick action - Modify single") +    form_slug = "find-quickaction-modifysingle" +    HEADERS = QAHeaders.copy() +    HEADERS['label'] = FormHeader(_(u"Identification")) + +    label = forms.CharField( +        label=_(u"Free ID"), +        validators=[validators.MaxLengthValidator(60)]) +    denomination = forms.CharField(label=_(u"Denomination"), required=False) +    previous_id = forms.CharField(label=_("Previous ID"), required=False) +    get_first_base_find__excavation_id = forms.CharField( +        label=_(u"Excavation ID"), required=False) +    museum_id = forms.CharField(label=_(u"Museum ID"), required=False) +    seal_number = forms.CharField(label=_(u"Seal number"), required=False) +    mark = forms.CharField(label=_(u"Mark"), required=False) + +    def __init__(self, *args, **kwargs): +        super(QAFindFormSingle, self).__init__(*args, **kwargs) +        if not self.items or \ +                not self.items[0].get_first_base_find( +                ).context_record.operation.operation_type.judiciary: +            self.fields.pop('seal_number') + +  class PreservationForm(CustomForm, ManageOldType):      form_label = _("Preservation")      form_admin_name = _(u"Find - 030 - Preservation") | 
