summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2018-01-02 16:27:36 +0100
committerÉtienne Loks <etienne.loks@iggdrasil.net>2018-01-02 16:27:36 +0100
commitcba23bc33928cc5c3a047efdcf1ad1d56ed32bc7 (patch)
tree97427ebf002883ed0e86913cc393f69159fb6120
parent1cac1c5a18082c804f2a6600aa3c689ddd78f84a (diff)
downloadIshtar-cba23bc33928cc5c3a047efdcf1ad1d56ed32bc7.tar.bz2
Ishtar-cba23bc33928cc5c3a047efdcf1ad1d56ed32bc7.zip
Custom form: context records forms
-rw-r--r--archaeological_context_records/forms.py72
-rw-r--r--ishtar_common/forms_common.py1
2 files changed, 35 insertions, 38 deletions
diff --git a/archaeological_context_records/forms.py b/archaeological_context_records/forms.py
index c310e98fa..7cc94bb9a 100644
--- a/archaeological_context_records/forms.py
+++ b/archaeological_context_records/forms.py
@@ -37,14 +37,17 @@ import models
from ishtar_common import widgets
from archaeological_operations.widgets import OAWidget
from ishtar_common.forms import FinalForm, FormSet, \
- reverse_lazy, get_form_selection, TableSelect, ManageOldType
+ reverse_lazy, get_form_selection, TableSelect, ManageOldType, CustomForm,\
+ FieldType
from ishtar_common.forms_common import get_town_field, SourceSelect
from archaeological_operations.forms import OperationSelect, ParcelField,\
RecordRelationsForm as OpeRecordRelationsForm, RecordRelationsFormSetBase
-class OperationFormSelection(forms.Form):
+class OperationFormSelection(CustomForm, forms.Form):
form_label = _("Operation")
+ form_admin_name = _(u"Context record - 010 - Operation choice")
+ form_slug = "contextrecord-010-operationchoice"
associated_models = {'operation': Operation}
currents = {'operation': Operation}
operation = forms.IntegerField(
@@ -129,8 +132,10 @@ class RecordFormSelection(forms.Form):
return cleaned_data
-class RecordFormGeneral(ManageOldType, forms.Form):
+class RecordFormGeneral(CustomForm, ManageOldType, forms.Form):
form_label = _("General")
+ form_admin_name = _(u"Context record - 020 - General")
+ form_slug = "contextrecord-020-general"
file_upload = True
base_models = ["documentation"]
associated_models = {
@@ -175,6 +180,12 @@ class RecordFormGeneral(ManageOldType, forms.Form):
'height': settings.IMAGE_MAX_SIZE[1]}),
max_length=255, required=False, widget=widgets.ImageFileInput())
+ TYPES = [
+ FieldType('unit', models.Unit),
+ FieldType('excavation_technic', models.ExcavationTechnicType),
+ FieldType('documentation', models.DocumentationType, is_multiple=True)
+ ]
+
def __init__(self, *args, **kwargs):
# TODO: simplify
operation = None
@@ -222,19 +233,6 @@ class RecordFormGeneral(ManageOldType, forms.Form):
(" - ".join([k for k in key if k]),
[(parcel.pk, parcel.short_label) for parcel in gparcels])
)
- self.fields['unit'].choices = models.Unit.get_types(
- initial=self.init_data.get('unit'))
- self.fields['unit'].help_text = models.Unit.get_help()
- self.fields['excavation_technic'].choices = \
- models.ExcavationTechnicType.get_types(
- initial=self.init_data.get('excavation_technic'))
- self.fields['excavation_technic'].help_text = \
- models.ExcavationTechnicType.get_help()
- self.fields['documentation'].choices = \
- models.DocumentationType.get_types(empty_first=False,
- initial=self.init_data.get('documentation'))
- self.fields['documentation'].help_text = \
- models.DocumentationType.get_help()
def clean(self):
# manage unique context record ID
@@ -264,22 +262,18 @@ class DatingForm(ManageOldType, forms.Form):
dating_type = forms.ChoiceField(label=_("Dating type"), required=False,
choices=[])
- def __init__(self, *args, **kwargs):
- super(DatingForm, self).__init__(*args, **kwargs)
- self.fields['dating_type'].choices = models.DatingType.get_types(
- initial=self.init_data.get('dating_type'))
- self.fields['dating_type'].help_text = models.DatingType.get_help()
- self.fields['quality'].choices = models.DatingQuality.get_types(
- initial=self.init_data.get('quality'))
- self.fields['quality'].help_text = models.DatingQuality.get_help()
- self.fields['period'].choices = Period.get_types(
- initial=self.init_data.get('period'))
- self.fields['period'].help_text = Period.get_help()
+ TYPES = [
+ FieldType('dating_type', models.DatingType),
+ FieldType('quality', models.DatingQuality),
+ FieldType('period', models.Period)
+ ]
DatingFormSet = formset_factory(DatingForm, can_delete=True,
formset=FormSet)
DatingFormSet.form_label = _("Dating")
+DatingFormSet.form_admin_name = _(u"Context record - 030 - Dating")
+DatingFormSet.form_slug = "contextrecord-030-datings"
class RecordRelationsForm(OpeRecordRelationsForm):
@@ -301,13 +295,19 @@ class RecordRelationsForm(OpeRecordRelationsForm):
if crs:
self.fields['right_record'].choices = [('', '-' * 2)] + crs
+
RecordRelationsFormSet = formset_factory(
RecordRelationsForm, can_delete=True, formset=RecordRelationsFormSetBase)
RecordRelationsFormSet.form_label = _(u"Relations")
+RecordRelationsFormSet.form_admin_name = _(u"Context record - 050 - Relations")
+RecordRelationsFormSet.form_slug = "contextrecord-050-recordrelations"
-class RecordFormInterpretation(ManageOldType, forms.Form):
+class RecordFormInterpretation(CustomForm, ManageOldType, forms.Form):
form_label = _("Interpretation")
+ form_admin_name = "Context record - 040 - Interpretation"
+ form_slug = "contextrecord-040-interpretation"
+
associated_models = {'activity': models.ActivityType,
'identification': models.IdentificationType}
datings_comment = forms.CharField(
@@ -328,16 +328,11 @@ class RecordFormInterpretation(ManageOldType, forms.Form):
tpq_estimated = forms.IntegerField(label=_(u"Estimated TPQ"),
required=False)
- def __init__(self, *args, **kwargs):
- super(RecordFormInterpretation, self).__init__(*args, **kwargs)
- self.fields['activity'].choices = models.ActivityType.get_types(
- initial=self.init_data.get('activity'))
- self.fields['activity'].help_text = models.ActivityType.get_help()
- self.fields['identification'].choices = \
- models.IdentificationType.get_types(
- initial=self.init_data.get('identification'))
- self.fields['identification'].help_text = \
- models.IdentificationType.get_help()
+ TYPES = [
+ FieldType('activity', models.ActivityType),
+ FieldType('identification', models.IdentificationType),
+ ]
+
OperationRecordFormSelection = get_form_selection(
'OperationRecordFormSelection', _(u"Operation search"), 'operation_id',
@@ -353,6 +348,7 @@ class RecordDeletionForm(FinalForm):
# Source management for context records #
#########################################
+
SourceRecordFormSelection = get_form_selection(
'SourceRecordFormSelection', _(u"Context record search"),
'context_record', models.ContextRecord, RecordSelect, 'get-contextrecord',
diff --git a/ishtar_common/forms_common.py b/ishtar_common/forms_common.py
index 32c91b683..7f4d94449 100644
--- a/ishtar_common/forms_common.py
+++ b/ishtar_common/forms_common.py
@@ -731,6 +731,7 @@ class TownFormSet(FormSet):
return self.check_duplicate(('town',),
_("There are identical towns."))
+
TownFormset = formset_factory(TownForm, can_delete=True, formset=TownFormSet)
TownFormset.form_label = _("Towns")
TownFormset.form_admin_name = _(u"Towns")