diff options
Diffstat (limited to 'ishtar_common/views.py')
-rw-r--r-- | ishtar_common/views.py | 77 |
1 files changed, 75 insertions, 2 deletions
diff --git a/ishtar_common/views.py b/ishtar_common/views.py index d55181067..5f3e80c77 100644 --- a/ishtar_common/views.py +++ b/ishtar_common/views.py @@ -47,8 +47,8 @@ from django.shortcuts import render_to_response, redirect from django.template import RequestContext, loader from django.utils.decorators import method_decorator from django.utils.translation import ugettext, ugettext_lazy as _ -from django.views.generic import ListView, UpdateView -from django.views.generic.edit import CreateView, DeleteView +from django.views.generic import ListView, UpdateView, TemplateView +from django.views.generic.edit import CreateView, DeleteView, FormView from xhtml2odt import xhtml2odt @@ -1359,6 +1359,16 @@ class AdminLoginRequiredMixin(LoginRequiredMixin): request, *args, **kwargs) +class DisplayItemView(IshtarMixin, LoginRequiredMixin, TemplateView): + template_name = 'ishtar/display_item.html' + + def get_context_data(self, *args, **kwargs): + data = super(DisplayItemView, self).get_context_data(*args, **kwargs) + data['pk'] = unicode(kwargs.get('pk')) + '/' + data['item_url'] = 'show-' + kwargs.get('item_type') + return data + + class GlobalVarEdit(IshtarMixin, AdminLoginRequiredMixin, ModelFormSetView): template_name = 'ishtar/formset.html' model = models.GlobalVar @@ -1472,6 +1482,69 @@ class PersonEdit(LoginRequiredMixin, UpdateView): return reverse('person_edit', args=[self.object.pk]) +class ManualMergeMixin(object): + def form_valid(self, form): + self.items = form.get_items() + return super(ManualMergeMixin, self).form_valid(form) + + def get_success_url(self): + return reverse( + self.redir_url, + args=[u"_".join([str(item.pk) for item in self.items])]) + + +class PersonManualMerge(ManualMergeMixin, IshtarMixin, LoginRequiredMixin, + FormView): + form_class = forms.PersonMergeFormSelection + template_name = 'ishtar/form.html' + page_name = _(u"Merge persons") + current_url = 'person-manual-merge' + redir_url = 'person_manual_merge_items' + + +class ManualMergeItemsMixin(object): + def get_form_kwargs(self): + kwargs = super(ManualMergeItemsMixin, self).get_form_kwargs() + kwargs['items'] = self.kwargs['pks'].split('_') + return kwargs + + def form_valid(self, form): + self.item = form.merge() + return super(ManualMergeItemsMixin, self).form_valid(form) + + def get_success_url(self): + return reverse('display-item', args=[self.item_type, self.item.pk]) + + +class PersonManualMergeItems( + ManualMergeItemsMixin, IshtarMixin, + LoginRequiredMixin, FormView): + form_class = forms.PersonMergeIntoForm + template_name = 'ishtar/form.html' + page_name = _(u"Select the main person") + current_url = 'person-manual-merge-items' + item_type = 'person' + + +class OrgaManualMerge(ManualMergeMixin, IshtarMixin, LoginRequiredMixin, + FormView): + form_class = forms.OrgaMergeFormSelection + template_name = 'ishtar/form.html' + page_name = _(u"Merge organization") + current_url = 'orga-manual-merge' + redir_url = 'orga_manual_merge_items' + + +class OrgaManualMergeItems( + ManualMergeItemsMixin, IshtarMixin, + LoginRequiredMixin, FormView): + form_class = forms.OrgaMergeIntoForm + template_name = 'ishtar/form.html' + page_name = _(u"Select the main organization") + current_url = 'orga-manual-merge-items' + item_type = 'organization' + + class OrganizationCreate(LoginRequiredMixin, CreateView): model = models.Organization form_class = forms.BaseOrganizationForm |