diff options
Diffstat (limited to 'ishtar_common')
-rw-r--r-- | ishtar_common/forms.py | 6 | ||||
-rw-r--r-- | ishtar_common/forms_common.py | 21 | ||||
-rw-r--r-- | ishtar_common/views.py | 11 |
3 files changed, 35 insertions, 3 deletions
diff --git a/ishtar_common/forms.py b/ishtar_common/forms.py index a69c65f0e..8acd5ffcc 100644 --- a/ishtar_common/forms.py +++ b/ishtar_common/forms.py @@ -698,7 +698,7 @@ def get_form_selection( class_name, label, key, model, base_form, get_url, not_selected_error=_(u"You should select an item."), new=False, new_message=_(u"Add a new item"), get_full_url=None, - gallery=False, map=False): + gallery=False, map=False, base_form_select=None): """ Generate a class selection form class_name -- name of the class @@ -746,7 +746,9 @@ def get_form_selection( return cleaned_data attrs['clean'] = clean attrs['SEARCH_AND_SELECT'] = True - return type(class_name, (forms.Form,), attrs) + if not base_form_select: + base_form_select = forms.Form + return type(class_name, (base_form_select,), attrs) def get_data_from_formset(data): diff --git a/ishtar_common/forms_common.py b/ishtar_common/forms_common.py index 93e1839f0..dd55f95b4 100644 --- a/ishtar_common/forms_common.py +++ b/ishtar_common/forms_common.py @@ -1378,6 +1378,27 @@ class QADocumentFormMulti(QAForm): ] +class QALockForm(forms.Form): + action = forms.ChoiceField( + label=_("Action"), choices=(('lock', _("Lock")), + ('unlock', _("Unlock")))) + + def __init__(self, *args, **kwargs): + self.items = kwargs.pop('items') + super(QALockForm, self).__init__(*args, **kwargs) + + def save(self, items, user): + locked = self.cleaned_data["action"] == "lock" + for item in items: + item.locked = locked + if locked: + item.lock_user = user + else: + item.lock_user = None + item.skip_history_when_saving = True + item.save() + + class SourceDeletionForm(FinalForm): confirm_msg = " " confirm_end_msg = _(u"Would you like to delete this documentation?") diff --git a/ishtar_common/views.py b/ishtar_common/views.py index 4ab94aae9..c663eccbc 100644 --- a/ishtar_common/views.py +++ b/ishtar_common/views.py @@ -2126,7 +2126,7 @@ class QAItemForm(IshtarMixin, LoginRequiredMixin, FormView): model = None base_url = None form_class = None - page_name = u"" + page_name = "" success_url = "/success/" modal_size = None # large, small or None (medium) @@ -2218,6 +2218,15 @@ class QAItemEditForm(QAItemForm): return HttpResponseRedirect(reverse("success")) +class QABaseLockView(QAItemForm): + form_class = forms.QALockForm + page_name = _("lock/unlock") + + def form_valid(self, form): + form.save(self.items, self.request.user) + return HttpResponseRedirect(reverse("success")) + + class QAPersonForm(QAItemEditForm): model = models.Person form_class = forms.QAPersonFormMulti |