parent
d423922729
commit
8c632b6bcc
14 changed files with 190 additions and 40 deletions
@ -0,0 +1,37 @@ |
||||
# -*- coding: utf-8 -*- |
||||
from django.contrib.redirects.models import Redirect |
||||
from django.views.generic import CreateView, DeleteView, ListView, UpdateView |
||||
from django.core.urlresolvers import reverse_lazy |
||||
|
||||
from .forms import RedirectForm |
||||
|
||||
|
||||
############################################################################### |
||||
# 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) |
||||
|
||||
@ -0,0 +1,11 @@ |
||||
# -*- coding: utf-8 -*- |
||||
from django.conf.urls import patterns, url |
||||
from .admin import * |
||||
|
||||
|
||||
urlpatterns = patterns('redirects.admin', |
||||
url(r'^$', RedirectList.as_view(), name='redirects-list'), |
||||
url(r'^add/$', RedirectCreate.as_view(), name='redirects-add'), |
||||
url(r'^(?P<pk>\d+)/edit/$', RedirectUpdate.as_view(), name='redirects-edit'), |
||||
url(r'^(?P<pk>\d+)/delete/$', RedirectDelete.as_view(), name='redirects-delete'), |
||||
) |
||||
@ -0,0 +1,20 @@ |
||||
# -*- coding: utf-8 -*- |
||||
from django import forms |
||||
from django.contrib.redirects.models import Redirect |
||||
from django.conf import settings |
||||
from django.contrib.redirects.admin import RedirectAdmin |
||||
from django.utils.translation import ugettext as _ |
||||
|
||||
|
||||
class RedirectForm(forms.ModelForm): |
||||
verbose = _(u'Создание/редактирование редиректа') |
||||
class Meta: |
||||
model = Redirect |
||||
fields = ['old_path', 'new_path'] |
||||
|
||||
def save(self, commit=True): |
||||
obj = super(RedirectForm, self).save(commit=False) |
||||
obj.site_id = settings.SITE_ID |
||||
if commit: |
||||
obj.save() |
||||
return obj |
||||
@ -0,0 +1,38 @@ |
||||
{% extends 'base.html' %} |
||||
{% load static %} |
||||
{% load i18n %} |
||||
|
||||
{% block body %} |
||||
<form method="post" class="form-horizontal" action="."> {% csrf_token %} |
||||
<fieldset> |
||||
<div class="box span8"> |
||||
<div class="box-header well"> |
||||
<h2><i class="icon-pencil"></i>{{ form.verbose }}</h2> |
||||
</div> |
||||
<div class="box-content"> |
||||
|
||||
{% for field in form %} |
||||
<div class="control-group {% if field.errors %}error{% endif %}"> |
||||
<label class="control-label"><b>{{ field.label }}:</b></label> |
||||
<div class="controls">{{ field }} |
||||
<span class="help-inline">{{ field.errors }}</span> |
||||
</div> |
||||
</div> |
||||
{% endfor %} |
||||
<div class="help-inline"> |
||||
{% blocktrans %} |
||||
!!! Ссылки должны начинаться и заканчиваться знаком / (правый слэш) |
||||
<br>Работает только если по данному адресу 404. |
||||
{% endblocktrans %} |
||||
</div> |
||||
|
||||
</div> |
||||
</div> |
||||
</fieldset> |
||||
|
||||
<div class="controls"> |
||||
<input class="btn btn-large btn-primary" type="submit" value="Готово"> |
||||
<input class="btn btn-large" type="reset" value="Отмена"> |
||||
</div> |
||||
</form> |
||||
{% endblock %} |
||||
@ -0,0 +1,37 @@ |
||||
{% extends 'base.html' %} |
||||
{% load i18n %} |
||||
|
||||
{% block body %} |
||||
<div class="box span8"> |
||||
<div class="box-header well"> |
||||
<h2><i class="icon-arrow-down"></i>{% trans "Список редиректов" %}</h2> |
||||
</div> |
||||
<div class="box-content"> |
||||
{% block list_table %} |
||||
<a class="btn btn-success" href="{% url 'redirects-add' %}"><i class="icon-plus-sign icon-white"></i> {% trans "Добавить редирект" %}</a> |
||||
<table class="table table-hover"> |
||||
<thead> |
||||
<tr> |
||||
<th>{% trans "Откуда" %}</th> |
||||
<th>{% trans "Куда" %}</th> |
||||
<th> </th> |
||||
<th> </th> |
||||
</tr> |
||||
</thead> |
||||
<tbody> |
||||
{% for item in object_list %} |
||||
<tr> |
||||
<td>{{ item.old_path }}</td> |
||||
<td>{{ item.new_path }}</td> |
||||
<td><a class="btn btn-info" href="{% url 'redirects-edit' item.pk %}"><i class="icon-edit icon-white"></i>{% trans "Изменить" %}</a></td> |
||||
<td><a class="btn btn-danger delete" href="{% url 'redirects-delete' item.pk %}"><i class="icon-trash icon-white"></i>{% trans "Удалить" %}</a></td> |
||||
</tr> |
||||
{% endfor %} |
||||
</tbody> |
||||
</table> |
||||
{% endblock %} |
||||
</div> |
||||
{# pagination #} |
||||
{% include 'admin/includes/admin_pagination.html' with page_obj=page_obj %} |
||||
</div> |
||||
{% endblock %} |
||||
Loading…
Reference in new issue