Merge branch 'kaedroho-issue-1168'

pull/1233/merge
Matt Westcott 2015-04-23 16:12:54 +01:00
commit 587349b83d
3 zmienionych plików z 22 dodań i 13 usunięć

Wyświetl plik

@ -52,6 +52,7 @@ Changelog
* Fix: wagtailfrontendcache no longer tries to purge pages that are not in a site
* Fix: The contents of <div> elements in the rich text editor were not being whitelisted
* Fix: Due to the above issue, embeds/images in a rich text field would sometimes be saved into the database in their editor representation
* Fix: RoutablePage now prevents subpage_urls from being defined as a property, which would cause a memory leak
0.8.6 (10.03.2015)

Wyświetl plik

@ -15,3 +15,4 @@ Bug fixes
* ``wagtailfrontendcache`` no longer tries to purge pages that are not in a site
* The contents of ``<div>`` elements in the rich text editor were not being whitelisted
* Due to the above issue, embeds/images in a rich text field would sometimes be saved into the database in their editor representation
* RoutablePage now prevents ``subpage_urls`` from being defined as a property, which would cause a memory leak

Wyświetl plik

@ -3,8 +3,7 @@ from __future__ import unicode_literals
from six import string_types
from django.http import Http404
from django.core.urlresolvers import get_resolver
from django.core.exceptions import ImproperlyConfigured
from django.core.urlresolvers import RegexURLResolver
from wagtail.wagtailcore.models import Page
from wagtail.wagtailcore.url_routing import RouteResult
@ -18,28 +17,36 @@ class RoutablePageMixin(object):
#: Set this to a tuple of ``django.conf.urls.url`` objects.
subpage_urls = None
@classmethod
def get_subpage_urls(cls):
if cls.subpage_urls:
return cls.subpage_urls
return ()
@classmethod
def get_resolver(cls):
if '_routablepage_urlresolver' not in cls.__dict__:
subpage_urls = cls.get_subpage_urls()
cls._routablepage_urlresolver = RegexURLResolver(r'^/', subpage_urls)
return cls._routablepage_urlresolver
def reverse_subpage(self, name, args=None, kwargs=None):
"""
This method does the same job as Djangos' built in "urlresolvers.reverse()" function for subpage urlconfs.
This method does the same job as Djangos' built in
"urlresolvers.reverse()" function for subpage urlconfs.
"""
args = args or []
kwargs = kwargs or {}
if self.subpage_urls is None:
raise ImproperlyConfigured("You must set 'subpage_urls' on " + type(self).__name__)
resolver = get_resolver(self.subpage_urls)
return resolver.reverse(name, *args, **kwargs)
return self.get_resolver().reverse(name, *args, **kwargs)
def resolve_subpage(self, path):
"""
This finds a view method/function from a URL path.
"""
if self.subpage_urls is None:
raise ImproperlyConfigured("You must set 'subpage_urls' on " + type(self).__name__)
resolver = get_resolver(self.subpage_urls)
view, args, kwargs = resolver.resolve(path)
view, args, kwargs = self.get_resolver().resolve(path)
# If view is a string, find it as an attribute of self
if isinstance(view, string_types):