diff options
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") | 
