diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2018-06-08 17:17:07 +0200 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2018-06-12 10:46:13 +0200 |
commit | 124a782ab4bf9ac42cbf404362a0be2826ff6e99 (patch) | |
tree | afefa2719e43e47bea82889ed08219065c198be5 /ishtar_common/views.py | |
parent | e0618ad7a9b3c18433c0ec1be1d0035cb32ceee5 (diff) | |
download | Ishtar-124a782ab4bf9ac42cbf404362a0be2826ff6e99.tar.bz2 Ishtar-124a782ab4bf9ac42cbf404362a0be2826ff6e99.zip |
Documents: edit form
Diffstat (limited to 'ishtar_common/views.py')
-rw-r--r-- | ishtar_common/views.py | 55 |
1 files changed, 40 insertions, 15 deletions
diff --git a/ishtar_common/views.py b/ishtar_common/views.py index cfe98cff1..74aa589c1 100644 --- a/ishtar_common/views.py +++ b/ishtar_common/views.py @@ -37,7 +37,8 @@ from django.shortcuts import redirect, render from django.utils.decorators import method_decorator from django.utils.translation import ugettext, ugettext_lazy as _ from django.views.generic import ListView, UpdateView, TemplateView -from django.views.generic.edit import CreateView, DeleteView, FormView +from django.views.generic.edit import CreateView, DeleteView, FormView, \ + UpdateView from extra_views import ModelFormSetView from markdown import markdown @@ -59,8 +60,8 @@ from ishtar_common.utils import clean_session_cache, CSV_OPTIONS, \ get_field_labels_from_path, get_random_item_image_link, shortify from ishtar_common.widgets import JQueryAutoComplete -from views_item import CURRENT_ITEM_KEYS, display_item, get_item, new_item, \ - show_item +from views_item import CURRENT_ITEM_KEYS, check_permission, display_item, \ + get_item, new_item, show_item logger = logging.getLogger(__name__) @@ -1579,13 +1580,11 @@ display_document = display_item(models.Document) document_search_wizard = wizards.SearchWizard.as_view( [('selec-document_search', forms.DocumentFormSelection)], label=_(u"Document: search"), - url_name='document_search', + url_name='search-document', ) -class DocumentFormView(IshtarMixin, LoginRequiredMixin, - CreateView): - page_name = _(u"New Document") +class DocumentFormMixin(IshtarMixin, LoginRequiredMixin): form_class = forms.DocumentForm template_name = 'ishtar/forms/document.html' model = models.Document @@ -1594,21 +1593,47 @@ class DocumentFormView(IshtarMixin, LoginRequiredMixin, return reverse('display-document', args=[self.object.pk]) -""" -class DocumentSelectMixin(IshtarMixin, LoginRequiredMixin, - FormView): - form_class = forms.PersonMergeFormSelection +class DocumentCreateView(DocumentFormMixin, CreateView): + page_name = _(u"Document creation") + + +class DocumentSelectView(IshtarMixin, LoginRequiredMixin, + FormView): + form_class = forms.DocumentFormSelection template_name = 'ishtar/form.html' - redir_url = 'person_manual_merge_items' + redir_url = 'edit-document' def form_valid(self, form): - self.item = form.get_item() - return super(ManualMergeMixin, self).form_valid(form) + self.pk = form.cleaned_data['pk'] + return super(DocumentSelectView, self).form_valid(form) def get_success_url(self): - return reverse(self.redir_url, args=[self.item.pk]) + return reverse(self.redir_url, args=[self.pk]) +class DocumentEditView(DocumentFormMixin, UpdateView): + page_name = _(u"Document modification") + + def get_form_kwargs(self): + kwargs = super(DocumentEditView, self).get_form_kwargs() + try: + document = models.Document.objects.get(pk=self.kwargs.get('pk')) + assert check_permission(self.request, 'document/edit', document.pk) + except (AssertionError, models.Document.DoesNotExist): + raise Http404() + initial = {} + for k in self.form_class.base_fields.keys() + \ + models.Document.RELATED_MODELS: + value = getattr(document, k) + if hasattr(value, 'all'): + value = ",".join([str(v.pk) for v in value.all()]) + initial[k] = value + + kwargs['initial'] = initial + return kwargs + + +""" class DocumentSelectView(DocumentSelectMixin, IshtarMixin, LoginRequiredMixin, FormView): page_name = _(u"Merge persons") |