summaryrefslogtreecommitdiff
path: root/ishtar_common/views.py
diff options
context:
space:
mode:
Diffstat (limited to 'ishtar_common/views.py')
-rw-r--r--ishtar_common/views.py77
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