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.
60 lines
1.8 KiB
60 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 = 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()
|
|
|