You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

58 lines
1.8 KiB

# -*- 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 = '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 = '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 = 'admin/redirects/newurlforobject.html'
context_object_name = 'object'
form_class = NewUrlForObjectForm
slug_field = 'url'
def get_initial(self):
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()