summaryrefslogtreecommitdiff
path: root/ishtar_common/forms_common.py
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2020-09-03 12:30:35 +0200
committerÉtienne Loks <etienne.loks@iggdrasil.net>2021-02-28 12:15:21 +0100
commitc996469e842ef3541f5b1290d2541dd6d2f2844e (patch)
tree0846cdf2ba3e22ea54a5f0054dccd703fbdb2879 /ishtar_common/forms_common.py
parent2f86de32aac26c4e019a9e136a6301afef0b7884 (diff)
downloadIshtar-c996469e842ef3541f5b1290d2541dd6d2f2844e.tar.bz2
Ishtar-c996469e842ef3541f5b1290d2541dd6d2f2844e.zip
Document QA: packaging - fix QA for search and edit
Diffstat (limited to 'ishtar_common/forms_common.py')
-rw-r--r--ishtar_common/forms_common.py47
1 files changed, 47 insertions, 0 deletions
diff --git a/ishtar_common/forms_common.py b/ishtar_common/forms_common.py
index 991968e3b..49d1829bc 100644
--- a/ishtar_common/forms_common.py
+++ b/ishtar_common/forms_common.py
@@ -1745,6 +1745,53 @@ class QADocumentDuplicateForm(IshtarForm):
return new
+class QADocumentPackagingForm(IshtarForm):
+ container = forms.IntegerField(
+ label=_("Container"),
+ widget=widgets.JQueryAutoComplete(
+ reverse_lazy('autocomplete-container'),
+ associated_model=Container, new=True),
+ validators=[models.valid_id(Container)])
+ container_to_change = forms.ChoiceField(
+ label=_("Change "), required=True,
+ choices=(
+ ('current-and-reference', _(u"current and reference containers")),
+ ('reference', _(u"the reference container")),
+ ('current', _(u"the current container")),
+ )
+ )
+
+ def __init__(self, *args, **kwargs):
+ self.confirm = False
+ self.user = None
+ if 'user' in kwargs:
+ self.user = kwargs.pop('user')
+ if hasattr(self.user, 'ishtaruser'):
+ self.user = self.user.ishtaruser
+ self.items = kwargs.pop('items')
+
+ super(QADocumentPackagingForm, self).__init__(*args, **kwargs)
+
+ def save(self, items, user):
+ container = Container.objects.get(pk=self.cleaned_data['container'])
+ container_to_change = self.cleaned_data.get('container_to_change', '')
+ container_attrs = []
+ if container_to_change in ('reference', 'current-and-reference'):
+ container_attrs.append('container_ref')
+ if container_to_change in ('current', 'current-and-reference'):
+ container_attrs.append('container')
+ for document in items:
+ changed = False
+ for container_attr in container_attrs:
+ if getattr(document, container_attr) == container:
+ continue
+ setattr(document, container_attr, container)
+ changed = True
+ if changed:
+ document.history_modifier = user
+ document.save()
+
+
class QALockForm(forms.Form):
action = forms.ChoiceField(
label=_("Action"), choices=(('lock', _("Lock")),