# -*- coding: utf-8 -*- from django.contrib.redirects.models import Redirect from django.core.urlresolvers import reverse_lazy from django.views.generic import CreateView, DeleteView, ListView, UpdateView from functions.custom_views import AjaxableResponseMixin from functions.form_check import translit_with_separator from functions.http import JsonResponse from .forms import RedirectForm, NewUrlForObjectForm ############################################################################### # Redirects ############################################################################### class RedirectMixin(object): form_class = RedirectForm model = Redirect template_name = 'c_admin/redirects/create_or_edit.html' success_url = reverse_lazy('redirects-list') def get_success_url(self): return self.success_url class RedirectList(RedirectMixin, ListView): template_name = 'c_admin/redirects/list.html' class RedirectCreate(RedirectMixin, CreateView): pass class RedirectUpdate(RedirectMixin, UpdateView): pass class RedirectDelete(RedirectMixin, DeleteView): def get(self, request, *args, **kwargs): return self.post(request, *args, **kwargs) class NewUrlForObject(AjaxableResponseMixin, UpdateView): template_name = 'c_admin/redirects/newurlforobject.html' context_object_name = 'object' form_class = NewUrlForObjectForm slug_field = 'url' def get_initial(self): new_url = None if self.object.name: new_url = translit_with_separator(self.object.name.strip()).lower() return { 'old_url': self.object.url, 'new_url': new_url, 'old_path': self.object.get_permanent_url(), 'new_path': '%s%s/' % (self.object.get_catalog_url(), new_url), } def get_success_url(self): return self.object.get_permanent_url()