diff options
author | Étienne Loks <etienne.loks@proxience.com> | 2015-12-18 18:46:44 +0100 |
---|---|---|
committer | Étienne Loks <etienne.loks@proxience.com> | 2015-12-18 18:46:44 +0100 |
commit | f99cdf5c4c6931bd7315d2674b31ba2ee9e1c4ca (patch) | |
tree | 724c59996e20f35033254a453135fb7b1fd873d0 /archaeological_operations/forms.py | |
parent | 99004116cf0b45884bb3f52c62c1ae8bb5b36702 (diff) | |
download | Ishtar-f99cdf5c4c6931bd7315d2674b31ba2ee9e1c4ca.tar.bz2 Ishtar-f99cdf5c4c6931bd7315d2674b31ba2ee9e1c4ca.zip |
Operation wizard: improve relations layout (form and summary)
Diffstat (limited to 'archaeological_operations/forms.py')
-rw-r--r-- | archaeological_operations/forms.py | 44 |
1 files changed, 44 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") |