kopia lustrzana https://github.com/wagtail/wagtail
				
				
				
			Merge branch 'wagtail-separation' into develop
						commit
						058d8632fb
					
				| 
						 | 
				
			
			@ -19,7 +19,7 @@
 | 
			
		|||
            <li class="more">
 | 
			
		||||
                <a href="#" class="icon icon-arrow-down">More</a>
 | 
			
		||||
                <ul>
 | 
			
		||||
                    <li class="menu-redirects"><a href="{% url 'verdantredirects_index' %}" class="icon icon-redirect">Redirects</a></li>
 | 
			
		||||
                    <li class="menu-redirects"><a href="{% url 'wagtailredirects_index' %}" class="icon icon-redirect">Redirects</a></li>
 | 
			
		||||
                    <li class="menu-editorspicks"><a href="{% url 'verdantsearch_editorspicks_index' %}">Editors Picks</a></li>
 | 
			
		||||
                    {% get_wagtailadmin_tab_urls as wagtailadmin_tab_urls %}
 | 
			
		||||
                    {% for name, title in wagtailadmin_tab_urls %}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,8 @@
 | 
			
		|||
from django import forms
 | 
			
		||||
 | 
			
		||||
import models
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class RedirectForm(forms.ModelForm):
 | 
			
		||||
	class Meta:
 | 
			
		||||
		model = models.Redirect
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,27 @@
 | 
			
		|||
from django import http
 | 
			
		||||
 | 
			
		||||
import models
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# Originally pinched from: https://github.com/django/django/blob/master/django/contrib/redirects/middleware.py
 | 
			
		||||
class RedirectMiddleware(object):
 | 
			
		||||
    def process_response(self, request, response):
 | 
			
		||||
        # No need to check for a redirect for non-404 responses.
 | 
			
		||||
        if response.status_code != 404:
 | 
			
		||||
            return response
 | 
			
		||||
 | 
			
		||||
        # Get the path
 | 
			
		||||
        path = models.Redirect.normalise_path(request.get_full_path())
 | 
			
		||||
 | 
			
		||||
        # Find redirect
 | 
			
		||||
        try:
 | 
			
		||||
            redirect = models.Redirect.get_for_site(request.site).get(old_path=path)
 | 
			
		||||
 | 
			
		||||
            if redirect.is_permanent:
 | 
			
		||||
                return http.HttpResponsePermanentRedirect(redirect.link)
 | 
			
		||||
            else:
 | 
			
		||||
                return http.HttpResponseTemporaryRedirect(redirect.link)
 | 
			
		||||
        except:
 | 
			
		||||
            pass
 | 
			
		||||
 | 
			
		||||
        return response
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,106 @@
 | 
			
		|||
# -*- coding: utf-8 -*-
 | 
			
		||||
import datetime
 | 
			
		||||
from south.db import db
 | 
			
		||||
from south.v2 import SchemaMigration
 | 
			
		||||
from django.db import models
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class Migration(SchemaMigration):
 | 
			
		||||
 | 
			
		||||
    depends_on = (
 | 
			
		||||
        ("wagtailcore", "0002_initial_data"),
 | 
			
		||||
    )
 | 
			
		||||
 | 
			
		||||
    def forwards(self, orm):
 | 
			
		||||
        # Adding model 'Redirect'
 | 
			
		||||
        db.create_table(u'wagtailredirects_redirect', (
 | 
			
		||||
            (u'id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
 | 
			
		||||
            ('old_path', self.gf('django.db.models.fields.CharField')(unique=True, max_length=255, db_index=True)),
 | 
			
		||||
            ('site', self.gf('django.db.models.fields.related.ForeignKey')(blank=True, related_name='redirects', null=True, to=orm['wagtailcore.Site'])),
 | 
			
		||||
            ('is_permanent', self.gf('django.db.models.fields.BooleanField')(default=True)),
 | 
			
		||||
            ('redirect_page', self.gf('django.db.models.fields.related.ForeignKey')(blank=True, related_name='+', null=True, to=orm['wagtailcore.Page'])),
 | 
			
		||||
            ('redirect_link', self.gf('django.db.models.fields.URLField')(max_length=200, blank=True)),
 | 
			
		||||
        ))
 | 
			
		||||
        db.send_create_signal(u'wagtailredirects', ['Redirect'])
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    def backwards(self, orm):
 | 
			
		||||
        # Deleting model 'Redirect'
 | 
			
		||||
        db.delete_table(u'wagtailredirects_redirect')
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    models = {
 | 
			
		||||
        u'contenttypes.contenttype': {
 | 
			
		||||
            'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
 | 
			
		||||
            'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
 | 
			
		||||
            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
 | 
			
		||||
            'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
 | 
			
		||||
            'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
 | 
			
		||||
        },
 | 
			
		||||
        u'wagtailcore.page': {
 | 
			
		||||
            'Meta': {'object_name': 'Page'},
 | 
			
		||||
            'content_type': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'pages'", 'to': u"orm['contenttypes.ContentType']"}),
 | 
			
		||||
            'depth': ('django.db.models.fields.PositiveIntegerField', [], {}),
 | 
			
		||||
            'feed_image': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'to': u"orm['rca.RcaImage']"}),
 | 
			
		||||
            'has_unpublished_changes': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
 | 
			
		||||
            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
 | 
			
		||||
            'live': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
 | 
			
		||||
            'numchild': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
 | 
			
		||||
            'path': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
 | 
			
		||||
            'seo_title': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
 | 
			
		||||
            'show_in_menus': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
 | 
			
		||||
            'slug': ('django.db.models.fields.SlugField', [], {'max_length': '50'}),
 | 
			
		||||
            'title': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
 | 
			
		||||
            'url_path': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'})
 | 
			
		||||
        },
 | 
			
		||||
        u'wagtailcore.site': {
 | 
			
		||||
            'Meta': {'object_name': 'Site'},
 | 
			
		||||
            'hostname': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255', 'db_index': 'True'}),
 | 
			
		||||
            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
 | 
			
		||||
            'is_default_site': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
 | 
			
		||||
            'port': ('django.db.models.fields.IntegerField', [], {'default': '80'}),
 | 
			
		||||
            'root_page': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'sites_rooted_here'", 'to': u"orm['wagtailcore.Page']"})
 | 
			
		||||
        },
 | 
			
		||||
        u'rca.rcaimage': {
 | 
			
		||||
            'Meta': {'object_name': 'RcaImage'},
 | 
			
		||||
            'alt': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
 | 
			
		||||
            'created_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
 | 
			
		||||
            'creator': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
 | 
			
		||||
            'dimensions': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
 | 
			
		||||
            'eprint_docid': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
 | 
			
		||||
            'file': ('django.db.models.fields.files.ImageField', [], {'max_length': '100'}),
 | 
			
		||||
            'height': ('django.db.models.fields.IntegerField', [], {}),
 | 
			
		||||
            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
 | 
			
		||||
            'medium': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
 | 
			
		||||
            'permission': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
 | 
			
		||||
            'photographer': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
 | 
			
		||||
            'rca_content_id': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
 | 
			
		||||
            'title': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
 | 
			
		||||
            'width': ('django.db.models.fields.IntegerField', [], {}),
 | 
			
		||||
            'year': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'})
 | 
			
		||||
        },
 | 
			
		||||
        u'taggit.tag': {
 | 
			
		||||
            'Meta': {'object_name': 'Tag'},
 | 
			
		||||
            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
 | 
			
		||||
            'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'}),
 | 
			
		||||
            'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '100'})
 | 
			
		||||
        },
 | 
			
		||||
        u'taggit.taggeditem': {
 | 
			
		||||
            'Meta': {'object_name': 'TaggedItem'},
 | 
			
		||||
            'content_type': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "u'taggit_taggeditem_tagged_items'", 'to': u"orm['contenttypes.ContentType']"}),
 | 
			
		||||
            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
 | 
			
		||||
            'object_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True'}),
 | 
			
		||||
            'tag': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "u'taggit_taggeditem_items'", 'to': u"orm['taggit.Tag']"})
 | 
			
		||||
        },
 | 
			
		||||
        u'wagtailredirects.redirect': {
 | 
			
		||||
            'Meta': {'object_name': 'Redirect'},
 | 
			
		||||
            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
 | 
			
		||||
            'is_permanent': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
 | 
			
		||||
            'old_path': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255', 'db_index': 'True'}),
 | 
			
		||||
            'redirect_link': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'}),
 | 
			
		||||
            'redirect_page': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'to': u"orm['wagtailcore.Page']"}),
 | 
			
		||||
            'site': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'redirects'", 'null': 'True', 'to': u"orm['wagtailcore.Site']"})
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    complete_apps = ['wagtailredirects']
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,72 @@
 | 
			
		|||
from django.db import models
 | 
			
		||||
from wagtail.wagtailadmin.edit_handlers import FieldPanel, MultiFieldPanel, PageChooserPanel
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class Redirect(models.Model):
 | 
			
		||||
    old_path = models.CharField("Redirect from",max_length=255, unique=True, db_index=True)
 | 
			
		||||
    site = models.ForeignKey('wagtailcore.Site', null=True, blank=True, related_name='redirects', db_index=True, editable=False)
 | 
			
		||||
    is_permanent = models.BooleanField("Permanent", default=True, help_text="Recommended. Permanent redirects ensure search engines forget the old page (the 'Redirect from') and index the new page instead.")
 | 
			
		||||
    redirect_page = models.ForeignKey('wagtailcore.Page', verbose_name="Redirect to a page", related_name='+', null=True, blank=True)
 | 
			
		||||
    redirect_link = models.URLField("Redirect to any URL", blank=True)
 | 
			
		||||
 | 
			
		||||
    @property
 | 
			
		||||
    def title(self):
 | 
			
		||||
        return self.old_path
 | 
			
		||||
 | 
			
		||||
    @property
 | 
			
		||||
    def link(self):
 | 
			
		||||
        if self.redirect_page:
 | 
			
		||||
            return self.redirect_page.url
 | 
			
		||||
        else:
 | 
			
		||||
            return self.redirect_link
 | 
			
		||||
 | 
			
		||||
    def get_is_permanent_display(self):
 | 
			
		||||
        if self.is_permanent:
 | 
			
		||||
            return "permanent"
 | 
			
		||||
        else:
 | 
			
		||||
            return "temporary"
 | 
			
		||||
 | 
			
		||||
    @classmethod
 | 
			
		||||
    def get_for_site(cls, site=None):
 | 
			
		||||
        if site:
 | 
			
		||||
            return cls.objects.filter(models.Q(site=site) | models.Q(site=None))
 | 
			
		||||
        else:
 | 
			
		||||
            return cls.objects.all()
 | 
			
		||||
 | 
			
		||||
    @staticmethod
 | 
			
		||||
    def normalise_path(full_path):
 | 
			
		||||
        # Split full_path into path and query_string
 | 
			
		||||
        try:
 | 
			
		||||
            question_mark = full_path.index('?')
 | 
			
		||||
            path = full_path[:question_mark]
 | 
			
		||||
            query_string = full_path[question_mark:]
 | 
			
		||||
        except ValueError:
 | 
			
		||||
            path = full_path
 | 
			
		||||
            query_string = ''
 | 
			
		||||
 | 
			
		||||
        # Check that the path has content before normalising
 | 
			
		||||
        if path is None or path == '':
 | 
			
		||||
            return query_string
 | 
			
		||||
 | 
			
		||||
        # Make sure theres a '/' at the beginning
 | 
			
		||||
        if path[0] != '/':
 | 
			
		||||
            path = '/' + path
 | 
			
		||||
 | 
			
		||||
        # Make sure theres not a '/' at the end
 | 
			
		||||
        if path[-1] == '/':
 | 
			
		||||
            path = path[:-1]
 | 
			
		||||
 | 
			
		||||
        return path + query_string
 | 
			
		||||
 | 
			
		||||
    def clean(self):
 | 
			
		||||
        # Normalise old path
 | 
			
		||||
        self.old_path = Redirect.normalise_path(self.old_path)
 | 
			
		||||
 | 
			
		||||
Redirect.content_panels = [
 | 
			
		||||
    MultiFieldPanel([
 | 
			
		||||
        FieldPanel('old_path'),
 | 
			
		||||
        FieldPanel('is_permanent'),
 | 
			
		||||
        PageChooserPanel('redirect_page'),
 | 
			
		||||
        FieldPanel('redirect_link'),
 | 
			
		||||
    ])
 | 
			
		||||
]
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,23 @@
 | 
			
		|||
{% extends "wagtailadmin/base.html" %}
 | 
			
		||||
{% block titletag %}Add redirect{% endblock %}
 | 
			
		||||
{% block content %}
 | 
			
		||||
    <header>
 | 
			
		||||
        <h1>Add redirect</h1>
 | 
			
		||||
    </header>
 | 
			
		||||
 | 
			
		||||
    <form action="{% url 'wagtailredirects_add_redirect' %}" method="POST">
 | 
			
		||||
        {% csrf_token %}
 | 
			
		||||
        {{ edit_handler.render_form_content }}
 | 
			
		||||
 | 
			
		||||
        <div class="nice-padding">
 | 
			
		||||
            <input type="submit" value="Save" />
 | 
			
		||||
        </div>
 | 
			
		||||
    </form>
 | 
			
		||||
{% endblock %}
 | 
			
		||||
 | 
			
		||||
{% block extra_css %}
 | 
			
		||||
    {% include "wagtailadmin/pages/_editor_css.html" %}
 | 
			
		||||
{% endblock %}
 | 
			
		||||
{% block extra_js %}
 | 
			
		||||
    {% include "wagtailadmin/pages/_editor_js.html" %}
 | 
			
		||||
{% endblock %}
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,15 @@
 | 
			
		|||
{% extends "wagtailadmin/base.html" %}
 | 
			
		||||
 | 
			
		||||
{% block titletag %}Delete redirect {{ redirect.title }}{% endblock %}
 | 
			
		||||
{% block content %}
 | 
			
		||||
    <header>
 | 
			
		||||
        <h1>Delete <span>{{ redirect.title }}</span></h1>
 | 
			
		||||
    </header>
 | 
			
		||||
    <div class="row row-flush nice-padding">       
 | 
			
		||||
        <p>Are you sure you want to delete this redirect?</p>
 | 
			
		||||
        <form action="{% url 'wagtailredirects_delete_redirect' redirect.id %}" method="POST">
 | 
			
		||||
            {% csrf_token %}
 | 
			
		||||
            <input type="submit" value="Yes, delete" class="serious" />
 | 
			
		||||
        </form>
 | 
			
		||||
    </div>
 | 
			
		||||
{% endblock %}
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,24 @@
 | 
			
		|||
{% extends "wagtailadmin/base.html" %}
 | 
			
		||||
{% block titletag %}Editing {{ redirect.title }}{% endblock %}
 | 
			
		||||
{% block content %}
 | 
			
		||||
    <header>
 | 
			
		||||
        <h1>Editing <span>{{ redirect.title }}</span></h1>
 | 
			
		||||
    </header>
 | 
			
		||||
 | 
			
		||||
    <form action="{% url 'wagtailredirects_edit_redirect' redirect.id %}" method="POST">
 | 
			
		||||
        {% csrf_token %}
 | 
			
		||||
        {{ edit_handler.render_form_content }}
 | 
			
		||||
 | 
			
		||||
        <div class="nice-padding">
 | 
			
		||||
            <input type="submit" value="Save" />
 | 
			
		||||
            <a href="{% url 'wagtailredirects_delete_redirect' redirect.id %}" class="button button-secondary no">Delete redirect</a>
 | 
			
		||||
        </div>
 | 
			
		||||
    </form>
 | 
			
		||||
{% endblock %}
 | 
			
		||||
 | 
			
		||||
{% block extra_css %}
 | 
			
		||||
    {% include "wagtailadmin/pages/_editor_css.html" %}
 | 
			
		||||
{% endblock %}
 | 
			
		||||
{% block extra_js %}
 | 
			
		||||
    {% include "wagtailadmin/pages/_editor_js.html" %}
 | 
			
		||||
{% endblock %}
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,50 @@
 | 
			
		|||
{% extends "wagtailadmin/base.html" %}
 | 
			
		||||
{% block titletag %}Redirects{% endblock %}
 | 
			
		||||
{% block bodyclass %}page-explorer{% endblock %}
 | 
			
		||||
 | 
			
		||||
{% block content %}
 | 
			
		||||
    <header>
 | 
			
		||||
        <div class="row row-flush">
 | 
			
		||||
            <div class="left col9">
 | 
			
		||||
                <h1>Redirects</h1>
 | 
			
		||||
            </div>
 | 
			
		||||
            <div class="right col3">
 | 
			
		||||
                <a href="{% url 'wagtailredirects_add_redirect' %}" class="button icon icon-plus-inverse">Add redirect</a>
 | 
			
		||||
            </div>
 | 
			
		||||
        </div>
 | 
			
		||||
    </header>
 | 
			
		||||
 | 
			
		||||
    <table class="listing full-width">
 | 
			
		||||
        <col />
 | 
			
		||||
        <col width="40%"/>
 | 
			
		||||
        <col />
 | 
			
		||||
        <thead>
 | 
			
		||||
            <tr>
 | 
			
		||||
                <th class="title">From</th>
 | 
			
		||||
                <th>To</th>
 | 
			
		||||
                <th class="type">Type</th>
 | 
			
		||||
            </tr>
 | 
			
		||||
        </thead>
 | 
			
		||||
        <tbody>
 | 
			
		||||
            {% if redirects %}
 | 
			
		||||
                {% for redirect in redirects %}
 | 
			
		||||
                    <tr>
 | 
			
		||||
                        <td class="title">
 | 
			
		||||
                            <h2><a href="{% url 'wagtailredirects_edit_redirect' redirect.id %}" title="Edit this redirect">{{ redirect.title }}</a></h2>
 | 
			
		||||
                        </td>
 | 
			
		||||
                        <td>
 | 
			
		||||
                            {% if redirect.redirect_page %}
 | 
			
		||||
                                <a href="{% url 'wagtailadmin_pages_edit' redirect.redirect_page.id %}" class="nolink">{{ redirect.redirect_page.title }}</a>
 | 
			
		||||
                            {% else %}
 | 
			
		||||
                                {{ redirect.link }}
 | 
			
		||||
                            {% endif %}
 | 
			
		||||
                        </td>
 | 
			
		||||
                        <td class="type"><div class="status-tag {% if redirect.get_is_permanent_display = "permanent" %}primary{% endif %}">{{ redirect.get_is_permanent_display }}</div></td>
 | 
			
		||||
                    </tr>
 | 
			
		||||
                {% endfor %}
 | 
			
		||||
            {% else %}
 | 
			
		||||
                <tr><td colspan="3" class="no-results-message"><p>No redirects have been added. Why not <a href="{% url 'wagtailredirects_add_redirect' %}">add one</a>?</td></tr>
 | 
			
		||||
            {% endif %}
 | 
			
		||||
        </tbody>
 | 
			
		||||
    </table>
 | 
			
		||||
{% endblock %}
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,16 @@
 | 
			
		|||
"""
 | 
			
		||||
This file demonstrates writing tests using the unittest module. These will pass
 | 
			
		||||
when you run "manage.py test".
 | 
			
		||||
 | 
			
		||||
Replace this with more appropriate tests for your application.
 | 
			
		||||
"""
 | 
			
		||||
 | 
			
		||||
from django.test import TestCase
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class SimpleTest(TestCase):
 | 
			
		||||
    def test_basic_addition(self):
 | 
			
		||||
        """
 | 
			
		||||
        Tests that 1 + 1 always equals 2.
 | 
			
		||||
        """
 | 
			
		||||
        self.assertEqual(1 + 1, 2)
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,9 @@
 | 
			
		|||
from django.conf.urls import patterns, url
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
urlpatterns = patterns('wagtail.wagtailredirects.views',
 | 
			
		||||
    url(r'^$', 'index', name='wagtailredirects_index'),
 | 
			
		||||
    url(r'^(\d+)/$', 'edit', name='wagtailredirects_edit_redirect'),
 | 
			
		||||
    url(r'^(\d+)/delete/$', 'delete', name='wagtailredirects_delete_redirect'),
 | 
			
		||||
    url(r'^add/$', 'add', name='wagtailredirects_add_redirect'),
 | 
			
		||||
)
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,85 @@
 | 
			
		|||
from django.shortcuts import render, redirect, get_object_or_404
 | 
			
		||||
from django.contrib import messages
 | 
			
		||||
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
 | 
			
		||||
from django.contrib.auth.decorators import permission_required
 | 
			
		||||
from wagtail.wagtailadmin.edit_handlers import ObjectList
 | 
			
		||||
 | 
			
		||||
import models
 | 
			
		||||
import forms
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
REDIRECT_EDIT_HANDLER = ObjectList(models.Redirect.content_panels)
 | 
			
		||||
 | 
			
		||||
@permission_required('wagtailredirects.change_redirect')
 | 
			
		||||
def index(request):
 | 
			
		||||
    # Get redirects
 | 
			
		||||
    redirects = models.Redirect.get_for_site(site=request.site)
 | 
			
		||||
 | 
			
		||||
    # Render template
 | 
			
		||||
    return render(request, "wagtailredirects/index.html", {
 | 
			
		||||
        'redirects': redirects,
 | 
			
		||||
    })
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@permission_required('wagtailredirects.change_redirect')
 | 
			
		||||
def edit(request, redirect_id):
 | 
			
		||||
    theredirect = get_object_or_404(models.Redirect, id=redirect_id)
 | 
			
		||||
 | 
			
		||||
    form_class = REDIRECT_EDIT_HANDLER.get_form_class(models.Redirect)
 | 
			
		||||
    if request.POST:
 | 
			
		||||
        form = form_class(request.POST, request.FILES, instance=theredirect)
 | 
			
		||||
        if form.is_valid():
 | 
			
		||||
            form.save()
 | 
			
		||||
            messages.success(request, "Redirect '%s' updated." % theredirect.title)
 | 
			
		||||
            return redirect('wagtailredirects_index')
 | 
			
		||||
        else:
 | 
			
		||||
            messages.error(request, "The redirect could not be saved due to errors.")
 | 
			
		||||
            edit_handler = REDIRECT_EDIT_HANDLER(instance=theredirect, form=form)
 | 
			
		||||
    else:
 | 
			
		||||
        form = form_class(instance=theredirect)
 | 
			
		||||
        edit_handler = REDIRECT_EDIT_HANDLER(instance=theredirect, form=form)
 | 
			
		||||
 | 
			
		||||
    return render(request, "wagtailredirects/edit.html", {
 | 
			
		||||
        'redirect': theredirect,
 | 
			
		||||
        'edit_handler': edit_handler,
 | 
			
		||||
    })
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@permission_required('wagtailredirects.change_redirect')
 | 
			
		||||
def delete(request, redirect_id):
 | 
			
		||||
    theredirect = get_object_or_404(models.Redirect, id=redirect_id)
 | 
			
		||||
 | 
			
		||||
    if request.POST:
 | 
			
		||||
        theredirect.delete()
 | 
			
		||||
        messages.success(request, "Redirect '%s' deleted." % theredirect.title)
 | 
			
		||||
        return redirect('wagtailredirects_index')
 | 
			
		||||
 | 
			
		||||
    return render(request, "wagtailredirects/confirm_delete.html", {
 | 
			
		||||
        'redirect': theredirect,
 | 
			
		||||
    })
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@permission_required('wagtailredirects.change_redirect')
 | 
			
		||||
def add(request):
 | 
			
		||||
    theredirect = models.Redirect()
 | 
			
		||||
 | 
			
		||||
    form_class = REDIRECT_EDIT_HANDLER.get_form_class(models.Redirect)
 | 
			
		||||
    if request.POST:
 | 
			
		||||
        form = form_class(request.POST, request.FILES)
 | 
			
		||||
        if form.is_valid():
 | 
			
		||||
            theredirect = form.save(commit=False)
 | 
			
		||||
            theredirect.site = request.site
 | 
			
		||||
            theredirect.save()
 | 
			
		||||
 | 
			
		||||
            messages.success(request, "Redirect '%s' added." % theredirect.title)
 | 
			
		||||
            return redirect('wagtailredirects_index')
 | 
			
		||||
        else:
 | 
			
		||||
            messages.error(request, "The redirect could not be created due to errors.")
 | 
			
		||||
            edit_handler = REDIRECT_EDIT_HANDLER(instance=theredirect, form=form)
 | 
			
		||||
    else:
 | 
			
		||||
        form = form_class()
 | 
			
		||||
        edit_handler = REDIRECT_EDIT_HANDLER(instance=theredirect, form=form)
 | 
			
		||||
 | 
			
		||||
    return render(request, "wagtailredirects/add.html", {
 | 
			
		||||
        'edit_handler': edit_handler,
 | 
			
		||||
    })
 | 
			
		||||
		Ładowanie…
	
		Reference in New Issue