summaryrefslogtreecommitdiff
path: root/archaeological_operations
diff options
context:
space:
mode:
Diffstat (limited to 'archaeological_operations')
-rw-r--r--archaeological_operations/forms.py44
-rw-r--r--archaeological_operations/wizards.py3
2 files changed, 47 insertions, 0 deletions
diff --git a/archaeological_operations/forms.py b/archaeological_operations/forms.py
index 8c3650c21..1dad60ea1 100644
--- a/archaeological_operations/forms.py
+++ b/archaeological_operations/forms.py
@@ -354,6 +354,50 @@ class RecordRelationsForm(forms.Form):
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 = models.RelationType.objects.get(
+ pk=data.get('relation_type'))
+ except models.RelationType.DoesNotExist:
+ continue
+ try:
+ right_record = models.Operation.objects.get(
+ pk=data.get('right_record'))
+ except models.Operation.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")
diff --git a/archaeological_operations/wizards.py b/archaeological_operations/wizards.py
index 78a5c3350..2e7b3c4b4 100644
--- a/archaeological_operations/wizards.py
+++ b/archaeological_operations/wizards.py
@@ -40,6 +40,7 @@ class OperationWizard(Wizard):
model = models.Operation
object_parcel_type = 'operation'
parcel_step_key = 'parcels'
+ relations_step_key = 'relations'
# step contening the current(s) town(s)
town_step_keys = ['towns-', 'townsgeneral-']
town_input_id = 'town' # input id of the current(s) town(s)
@@ -52,6 +53,8 @@ class OperationWizard(Wizard):
current_step = self.steps.current
if current_step.startswith(self.parcel_step_key):
templates = ['ishtar/wizard/parcels_wizard.html'] + templates
+ elif current_step.startswith(self.relations_step_key):
+ templates = ['ishtar/wizard/relations_wizard.html'] + templates
return templates
def get_current_file(self):