summaryrefslogtreecommitdiff
path: root/archaeological_operations/forms.py
diff options
context:
space:
mode:
Diffstat (limited to 'archaeological_operations/forms.py')
-rw-r--r--archaeological_operations/forms.py95
1 files changed, 72 insertions, 23 deletions
diff --git a/archaeological_operations/forms.py b/archaeological_operations/forms.py
index 84af8f287..6ef3d5a21 100644
--- a/archaeological_operations/forms.py
+++ b/archaeological_operations/forms.py
@@ -235,15 +235,26 @@ class ParcelFormSet(FormSet):
values[number] = {}
values[number][field] = value
+ if field == 'parcel':
+ if not value:
+ continue
+ try:
+ parcel = models.Parcel.objects.get(pk=value)
+ except models.Parcel.DoesNotExist:
+ continue
+ ordering_keys[number] = [
+ parcel.town, parcel.year, parcel.section,
+ parcel.parcel_number]
+ continue
if number not in ordering_keys:
ordering_keys[number] = ['', '', '', '']
if field == 'town':
ordering_keys[number][0] = value
- if field == 'year':
+ elif field == 'year':
ordering_keys[number][1] = value
- if field == 'section':
+ elif field == 'section':
ordering_keys[number][2] = value
- if field == 'parcel_number':
+ elif field == 'parcel_number':
ordering_keys[number][3] = value
reverse_ordering_keys = {}
@@ -365,6 +376,17 @@ class RecordRelationsForm(forms.Form):
for rel, opes in nc])
return rendered
+ def clean(self):
+ cleaned_data = self.cleaned_data
+ if (cleaned_data.get('relation_type', None) and
+ not cleaned_data.get('right_record', None)):
+ raise forms.ValidationError(_(u"You should select an operation."))
+ if (not cleaned_data.get('relation_type', None) and
+ cleaned_data.get('right_record', None)):
+ raise forms.ValidationError(
+ _(u"You should select a relation type."))
+ return cleaned_data
+
@classmethod
def get_formated_datas(cls, cleaned_datas):
result, current, deleted = [], [], []
@@ -466,12 +488,12 @@ class OperationSelect(TableSelect):
report_processing = forms.ChoiceField(label=_(u"Report processing"),
choices=[])
virtual_operation = forms.NullBooleanField(label=_(u"Virtual operation"))
- # archaeological_sites = forms.IntegerField(
- # label=_("Archaelogical site"),
- # widget=widgets.JQueryAutoComplete(
- # reverse_lazy('autocomplete-archaeologicalsite'),
- # associated_model=models.ArchaeologicalSite),
- # validators=[valid_id(models.ArchaeologicalSite)])
+ archaeological_sites = forms.IntegerField(
+ label=_("Archaelogical site"),
+ widget=widgets.JQueryAutoComplete(
+ reverse_lazy('autocomplete-archaeologicalsite'),
+ associated_model=models.ArchaeologicalSite),
+ validators=[valid_id(models.ArchaeologicalSite)])
history_creator = forms.IntegerField(
label=_(u"Created by"),
widget=widgets.JQueryAutoComplete(
@@ -670,7 +692,7 @@ class OperationFormGeneral(forms.Form):
'operator': Organization,
'operation_type': models.OperationType,
'report_processing': models.ReportState,
- 'archaeological_site': models.ArchaeologicalSite}
+ }
pk = forms.IntegerField(required=False, widget=forms.HiddenInput)
if settings.COUNTRY == 'fr':
code_patriarche = forms.IntegerField(label=u"Code PATRIARCHE",
@@ -683,10 +705,6 @@ class OperationFormGeneral(forms.Form):
initial=lambda: datetime.datetime.now().year,
validators=[validators.MinValueValidator(1900),
validators.MaxValueValidator(2100)])
- operation_code = forms.IntegerField(
- label=_(u"Operation code"),
- initial=models.Operation.get_available_operation_code,
- widget=OperationCodeInput(attrs={'readonly': 'readonly'}))
scientist = forms.IntegerField(
label=_("Head scientist"),
widget=widgets.JQueryAutoComplete(
@@ -719,9 +737,9 @@ class OperationFormGeneral(forms.Form):
label=_(u"Total surface (m2)"),
validators=[validators.MinValueValidator(0),
validators.MaxValueValidator(999999999)])
- archaeological_site = widgets.MultipleAutocompleteField(
- model=models.ArchaeologicalSite,
- label=_("Associated archaeological sites"), new=True, required=False)
+ # archaeological_site = widgets.MultipleAutocompleteField(
+ # model=models.ArchaeologicalSite,
+ # label=_("Associated archaeological sites"), new=True, required=False)
start_date = forms.DateField(
label=_(u"Start date"), required=False, widget=widgets.JQueryDate)
excavation_end_date = forms.DateField(
@@ -768,10 +786,12 @@ class OperationFormGeneral(forms.Form):
models.ReportState.get_help()
self.fields['record_quality'].choices = \
[('', '--')] + list(models.QUALITY)
- # data POSTED
- if kwargs and kwargs['data'] \
- and 'readonly' in self.fields['operation_code'].widget.attrs:
- self.fields['operation_code'].widget.attrs.pop('readonly')
+ if 'operation_code' in self.fields:
+ self.fields.keyOrder = list(self.fields.keyOrder)
+ self.fields.keyOrder.pop(self.fields.keyOrder.index(
+ 'operation_code'))
+ self.fields.keyOrder.insert(self.fields.keyOrder.index('year'),
+ 'operation_code')
def clean(self):
cleaned_data = self.cleaned_data
@@ -787,7 +807,9 @@ class OperationFormGeneral(forms.Form):
_(u"The excavation end date cannot be before the start "
u"date."))
year = self.cleaned_data.get("year")
- operation_code = cleaned_data.get("operation_code")
+ operation_code = cleaned_data.get("operation_code", None)
+ if not operation_code:
+ return self.cleaned_data
ops = models.Operation.objects.filter(year=year,
operation_code=operation_code)
# manage unique operation ID
@@ -917,6 +939,32 @@ SelectedParcelGeneralFormSet = formset_factory(ParcelForm, can_delete=True,
formset=ParcelFormSet)
SelectedParcelGeneralFormSet.form_label = _("Parcels")
+"""
+class SelectedParcelFormSet(forms.Form):
+ form_label = _("Parcels")
+ base_model = 'parcel'
+ associated_models = {'parcel': models.Parcel}
+ parcel = forms.MultipleChoiceField(
+ label=_("Parcel"), required=False, choices=[],
+ widget=forms.CheckboxSelectMultiple)
+
+ def __init__(self, *args, **kwargs):
+ parcels = None
+ print(kwargs)
+ if 'data' in kwargs and 'PARCELS' in kwargs['data']:
+ parcels = kwargs['data']['PARCELS']
+ # clean data if not "real" data
+ prefix_value = kwargs['prefix'] + '-parcel'
+ if not [k for k in kwargs['data'].keys()
+ if k.startswith(prefix_value) and kwargs['data'][k]]:
+ kwargs['data'] = None
+ if 'files' in kwargs:
+ kwargs.pop('files')
+ super(SelectedParcelFormSet, self).__init__(*args, **kwargs)
+ if parcels:
+ self.fields['parcel'].choices = [('', '--')] + parcels
+"""
+
class RemainForm(forms.Form):
form_label = _("Remain types")
@@ -1000,7 +1048,8 @@ class ArchaeologicalSiteBasicForm(forms.Form):
reverse_lazy('autocomplete-archaeologicalsite'),
associated_model=models.ArchaeologicalSite,
new=True),
- validators=[valid_id(models.ArchaeologicalSite)])
+ validators=[valid_id(models.ArchaeologicalSite)],
+ required=False)
ArchaeologicalSiteFormSet = formset_factory(ArchaeologicalSiteBasicForm,