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.py86
1 files changed, 85 insertions, 1 deletions
diff --git a/archaeological_operations/forms.py b/archaeological_operations/forms.py
index 3d679d555..90977416b 100644
--- a/archaeological_operations/forms.py
+++ b/archaeological_operations/forms.py
@@ -335,6 +335,74 @@ ParcelFormSet = formset_factory(ParcelForm, can_delete=True,
formset=ParcelFormSet)
ParcelFormSet.form_label = _(u"Parcels")
+
+class RecordRelationsForm(forms.Form):
+ base_model = 'right_relation'
+ current_model = models.RelationType
+ current_related_model = models.Operation
+ associated_models = {'right_record': models.Operation,
+ 'relation_type': models.RelationType}
+ relation_type = forms.ChoiceField(label=_(u"Relation type"),
+ choices=[], required=False)
+ right_record = forms.IntegerField(
+ label=_(u"Operation"),
+ widget=widgets.JQueryAutoComplete(
+ reverse_lazy('autocomplete-operation'),
+ associated_model=models.Operation),
+ validators=[valid_id(models.Operation)], required=False)
+
+ def __init__(self, *args, **kwargs):
+ super(RecordRelationsForm, self).__init__(*args, **kwargs)
+ self.fields['relation_type'].choices = \
+ models.RelationType.get_types()
+
+ @classmethod
+ def _format_lst(cls, current):
+ nc = []
+ for rel, ope in sorted(current):
+ if not nc or nc[-1][0] != rel:
+ nc.append([rel, []])
+ nc[-1][1].append(ope)
+ rendered = u";".join(
+ [u"{}{} {}".format(rel, _(u":"), u" ; ".join(opes))
+ for rel, opes in nc])
+ return rendered
+
+ @classmethod
+ def get_formated_datas(cls, cleaned_datas):
+ result, current, deleted = [], [], []
+ for data in cleaned_datas:
+ if not data:
+ continue
+ try:
+ relation_type = cls.current_model.objects.get(
+ pk=data.get('relation_type'))
+ except cls.current_model.DoesNotExist:
+ continue
+ try:
+ right_record = cls.current_related_model.objects.get(
+ pk=data.get('right_record'))
+ except cls.current_related_model.DoesNotExist:
+ continue
+ values = [unicode(relation_type), right_record.reference]
+ if data.get('DELETE'):
+ deleted.append(values)
+ else:
+ current.append(values)
+ if current:
+ nc = []
+ for rel, ope in sorted(current):
+ if not nc or nc[-1][0] != rel:
+ nc.append([rel, []])
+ nc[-1][1].append(ope)
+ result.append((_("Current relations"), cls._format_lst(current)))
+ if deleted:
+ result.append((_("Deleted relations"), u" ; ".join(deleted)))
+ return result
+
+RecordRelationsFormSet = formset_factory(RecordRelationsForm, can_delete=True)
+RecordRelationsFormSet.form_label = _(u"Relations")
+
SRA_AGENT, created = PersonType.objects.get_or_create(txt_idx='sra_agent')
HEAD_SCIENTIST, created = PersonType.objects.get_or_create(
txt_idx='head_scientist')
@@ -393,6 +461,8 @@ class OperationSelect(TableSelect):
associated_model=Person),
validators=[valid_id(Person)])
record_quality = forms.ChoiceField(label=_(u"Record quality"))
+ report_processing = forms.ChoiceField(label=_(u"Report processing"),
+ choices=[])
virtual_operation = forms.NullBooleanField(label=_(u"Virtual operation"))
def __init__(self, *args, **kwargs):
@@ -401,6 +471,10 @@ class OperationSelect(TableSelect):
models.OperationType.get_types()
self.fields['operation_type'].help_text = \
models.OperationType.get_help()
+ self.fields['report_processing'].choices = \
+ models.ReportState.get_types()
+ self.fields['report_processing'].help_text = \
+ models.ReportState.get_help()
self.fields['remains'].choices = models.RemainType.get_types()
self.fields['remains'].help_text = models.RemainType.get_help()
self.fields['periods'].choices = models.Period.get_types()
@@ -558,6 +632,7 @@ class OperationFormGeneral(forms.Form):
'cira_rapporteur': Person,
'operator': Organization,
'operation_type': models.OperationType,
+ 'report_processing': models.ReportState,
'archaeological_site': models.ArchaeologicalSite}
pk = forms.IntegerField(required=False, widget=forms.HiddenInput)
scientist = forms.IntegerField(
@@ -595,6 +670,8 @@ class OperationFormGeneral(forms.Form):
report_delivery_date = forms.DateField(
label=_(u"Report delivery date"), required=False,
widget=widgets.JQueryDate)
+ report_processing = forms.ChoiceField(label=_(u"Report processing"),
+ choices=[], required=False)
surface = forms.IntegerField(
required=False, widget=widgets.AreaWidget,
label=_(u"Total surface (m2)"),
@@ -650,6 +727,10 @@ class OperationFormGeneral(forms.Form):
models.OperationType.get_types()
self.fields['operation_type'].help_text = \
models.OperationType.get_help()
+ self.fields['report_processing'].choices = \
+ models.ReportState.get_types()
+ self.fields['report_processing'].help_text = \
+ models.ReportState.get_help()
self.fields['record_quality'].choices = \
[('', '--')] + list(models.QUALITY)
# data POSTED
@@ -693,7 +774,8 @@ class OperationFormGeneral(forms.Form):
class OperationFormModifGeneral(OperationFormGeneral):
- operation_code = forms.IntegerField(label=_(u"Operation code"))
+ operation_code = forms.IntegerField(label=_(u"Operation code"),
+ required=False)
if FILES_AVAILABLE:
currents = {'associated_file': File}
associated_file = forms.IntegerField(
@@ -971,6 +1053,8 @@ class AdministrativeActOpeSelect(TableSelect):
if settings.ISHTAR_DPTS:
operation__towns__numero_insee__startswith = forms.ChoiceField(
label=_(u"Department"), choices=[])
+ act_object = forms.CharField(label=_(u"Object (full text search)"),
+ max_length=300)
history_creator = forms.IntegerField(
label=_(u"Created by"),
widget=widgets.JQueryAutoComplete(