Remove remaining Django 1.7 code and deprecate wagtail.utils.compat functions

pull/2086/merge
Matt Westcott 2016-01-05 19:30:28 +00:00 zatwierdzone przez Karl Hobley
rodzic 3e439b7bec
commit 4065bece78
14 zmienionych plików z 62 dodań i 91 usunięć

Wyświetl plik

@ -10,7 +10,6 @@ from rest_framework import serializers
from rest_framework.fields import Field
from rest_framework import relations
from wagtail.utils.compat import get_related_model
from wagtail.wagtailcore import fields as wagtailcore_fields
from .utils import get_full_url, pages_for_site
@ -265,7 +264,7 @@ class PageSerializer(BaseSerializer):
if relation_info.to_many:
model = getattr(self.Meta, 'model')
child_relations = {
child_relation.field.rel.related_name: get_related_model(child_relation)
child_relation.field.rel.related_name: child_relation.related_model
for child_relation in get_all_child_relations(model)
}

Wyświetl plik

@ -1,40 +1,37 @@
import django
import warnings
from django.template import loader
from wagtail.utils.deprecation import RemovedInWagtail16Warning
def get_related_model(rel):
# In Django 1.7 and under, the related model is accessed by doing: rel.model
# This was renamed in Django 1.8 to rel.related_model. rel.model now returns
# the base model.
if django.VERSION >= (1, 8):
return rel.related_model
else:
return rel.model
warnings.warn(
'wagtail.utils.compat.get_related_model(rel) is deprecated. '
'Use rel.related_model instead',
RemovedInWagtail16Warning, stacklevel=2
)
return rel.related_model
def get_related_parent_model(rel):
# In Django 1.7 and under, the parent model is accessed by doing: rel.parent_model
# This was renamed in Django 1.8 to rel.model.
if django.VERSION >= (1, 8):
return rel.model
else:
return rel.parent_model
warnings.warn(
'wagtail.utils.compat.get_related_parent_model(rel) is deprecated. '
'Use rel.model instead',
RemovedInWagtail16Warning, stacklevel=2
)
return rel.model
def render_to_string(template_name, context=None, request=None, **kwargs):
if django.VERSION >= (1, 8):
return loader.render_to_string(
template_name,
context=context,
request=request,
**kwargs
)
else:
# Backwards compatibility for Django 1.7 and below
from django.template.context import RequestContext
return loader.render_to_string(
template_name,
dictionary=context,
context_instance=RequestContext(request),
**kwargs
)
warnings.warn(
'wagtail.utils.compat.render_to_string is deprecated. '
'Use django.template.loader.render_to_string instead',
RemovedInWagtail16Warning, stacklevel=2
)
return loader.render_to_string(
template_name,
context=context,
request=request,
**kwargs
)

Wyświetl plik

@ -20,7 +20,6 @@ from taggit.managers import TaggableManager
from wagtail.wagtailadmin import widgets
from wagtail.wagtailcore.models import Page
from wagtail.wagtailcore.utils import camelcase_to_underscore, resolve_model_string
from wagtail.utils.compat import get_related_model, get_related_parent_model
# Form field properties to override whenever we encounter a model field
@ -526,7 +525,7 @@ class BaseChooserPanel(BaseFieldPanel):
def get_chosen_item(self):
field = self.instance._meta.get_field(self.field_name)
related_model = get_related_parent_model(field.related)
related_model = field.related.model
try:
return getattr(self.instance, self.field_name)
except related_model.DoesNotExist:
@ -617,7 +616,7 @@ class BaseInlinePanel(EditHandler):
# Failing that, get it from the model
else:
return extract_panel_definitions_from_model_class(
get_related_model(cls.related),
cls.related.related_model,
exclude=[cls.related.field.name]
)
@ -630,7 +629,7 @@ class BaseInlinePanel(EditHandler):
cls._child_edit_handler_class = MultiFieldPanel(
panels,
heading=cls.heading
).bind_to_model(get_related_model(cls.related))
).bind_to_model(cls.related.related_model)
return cls._child_edit_handler_class

Wyświetl plik

@ -2,13 +2,11 @@ from __future__ import unicode_literals
from django.forms import MediaDefiningClass, Media
from django.forms.utils import flatatt
from django.template.loader import render_to_string
from django.utils.text import slugify
from django.utils.safestring import mark_safe
from django.utils.six import text_type
from django.utils.six import text_type, with_metaclass
from django.utils.six import with_metaclass
from wagtail.utils.compat import render_to_string
from wagtail.wagtailcore import hooks

Wyświetl plik

@ -1,8 +1,7 @@
import json
from django.http import HttpResponse
from wagtail.utils.compat import render_to_string
from django.template.loader import render_to_string
def render_modal_workflow(request, html_template, js_template, template_vars=None):

Wyświetl plik

@ -2,6 +2,7 @@ from __future__ import unicode_literals
from django.forms import MediaDefiningClass, Media
from django.forms.utils import flatatt
from django.template.loader import render_to_string
from django.utils.text import slugify
from django.utils.safestring import mark_safe
from django.utils.six import text_type
@ -9,7 +10,6 @@ from django.utils.functional import cached_property, total_ordering
from django.utils.six import with_metaclass
from wagtail.utils.compat import render_to_string
from wagtail.wagtailcore import hooks
from wagtail.wagtailadmin.forms import SearchForm

Wyświetl plik

@ -1,6 +1,7 @@
from django.template.loader import render_to_string
from wagtail.wagtailcore import hooks
from wagtail.wagtailcore.models import Page, Site
from wagtail.utils.compat import render_to_string
class SummaryItem(object):

Wyświetl plik

@ -1,4 +1,4 @@
from wagtail.utils.compat import render_to_string
from django.template.loader import render_to_string
class BaseItem(object):

Wyświetl plik

@ -12,7 +12,6 @@ from modelcluster.fields import ParentalKey
from wagtail.wagtailcore.models import Page, PageRevision, GroupPagePermission
from wagtail.wagtailusers.models import UserProfile
from wagtail.utils.compat import get_related_model
def get_object_usage(obj):
@ -26,7 +25,7 @@ def get_object_usage(obj):
include_proxy_eq=True
)
for relation in relations:
related_model = get_related_model(relation)
related_model = relation.related_model
# if the relation is between obj and a page, get the page
if issubclass(related_model, Page):

Wyświetl plik

@ -1,10 +1,10 @@
from django.shortcuts import render
from django.conf import settings
from django.db.models import F
from django.template.loader import render_to_string
from wagtail.wagtailcore import hooks
from wagtail.wagtailcore.models import PageRevision, UserPagePermissionsProxy
from wagtail.utils.compat import render_to_string
from wagtail.wagtailadmin.site_summary import SiteSummaryPanel

Wyświetl plik

@ -7,7 +7,6 @@ import warnings
from collections import defaultdict
from modelcluster.models import ClusterableModel, get_all_child_relations
import django
from django.db import models, connection, transaction
from django.db.models import Q
from django.db.models.signals import post_save, pre_delete, post_delete
@ -941,31 +940,25 @@ class Page(six.with_metaclass(PageBase, MP_Node, ClusterableModel, index.Indexed
specific_self = self.specific
specific_dict = {}
if django.VERSION >= (1, 8):
for field in specific_self._meta.get_fields():
# Ignore explicitly excluded fields
if field.name in exclude_fields:
continue
for field in specific_self._meta.get_fields():
# Ignore explicitly excluded fields
if field.name in exclude_fields:
continue
# Ignore reverse relations
if field.auto_created:
continue
# Ignore reverse relations
if field.auto_created:
continue
# Ignore m2m relations - they will be copied as child objects
# if modelcluster supports them at all (as it does for tags)
if field.many_to_many:
continue
# Ignore m2m relations - they will be copied as child objects
# if modelcluster supports them at all (as it does for tags)
if field.many_to_many:
continue
# Ignore parent links (page_ptr)
if isinstance(field, models.OneToOneField) and field.parent_link:
continue
# Ignore parent links (page_ptr)
if isinstance(field, models.OneToOneField) and field.parent_link:
continue
specific_dict[field.name] = getattr(specific_self, field.name)
else:
# Django 1.7
for field in specific_self._meta.fields:
if field.name not in exclude_fields and not (field.rel is not None and field.rel.parent_link):
specific_dict[field.name] = getattr(specific_self, field.name)
specific_dict[field.name] = getattr(specific_self, field.name)
# New instance from prepared dict values, in case the instance class implements multiple levels inheritance
page_copy = self.specific_class(**specific_dict)

Wyświetl plik

@ -33,7 +33,6 @@ from wagtail.wagtailsearch.queryset import SearchableQuerySetMixin
from wagtail.wagtailimages.rect import Rect
from wagtail.wagtailimages.exceptions import InvalidFilterSpecError
from wagtail.wagtailadmin.utils import get_object_usage
from wagtail.utils.compat import get_related_model
class SourceImageIOError(IOError):
@ -231,9 +230,9 @@ class AbstractImage(models.Model, TagSearchable):
def get_rendition_model(cls):
""" Get the Rendition model for this Image model """
if django.VERSION >= (1, 9):
return get_related_model(cls.renditions.rel)
return cls.renditions.rel.related_model
else:
return get_related_model(cls.renditions.related)
return cls.renditions.related.related_model
def get_rendition(self, filter):
if isinstance(filter, string_types):

Wyświetl plik

@ -3,6 +3,7 @@ from django.views.decorators.http import require_POST
from django.core.exceptions import PermissionDenied
from django.views.decorators.vary import vary_on_headers
from django.http import JsonResponse, HttpResponseBadRequest
from django.template.loader import render_to_string
from django.utils.encoding import force_text
from wagtail.wagtailadmin.utils import permission_required
@ -12,7 +13,6 @@ from wagtail.wagtailsearch.backends import get_search_backends
from wagtail.wagtailimages.models import get_image_model
from wagtail.wagtailimages.forms import get_image_form
from wagtail.wagtailimages.fields import ALLOWED_EXTENSIONS
from wagtail.utils.compat import render_to_string
def get_image_edit_form(ImageModel):

Wyświetl plik

@ -1,4 +1,3 @@
import django
from django.db import models
from django.db.models.fields import FieldDoesNotExist
from django.db.models.fields.related import RelatedField, ForeignObjectRel, OneToOneRel
@ -173,8 +172,6 @@ class RelatedFields(object):
It decides which method to call based on the number of related objects:
- single (eg ForeignKey, OneToOne), it runs select_related
- multiple (eg ManyToMany, reverse ForeignKey) it runs prefetch_related
This optimisation currently doesn't support reverse relations on Django 1.7.
"""
try:
field = self.get_field(queryset.model)
@ -182,20 +179,10 @@ class RelatedFields(object):
return queryset
if isinstance(field, RelatedField):
if django.VERSION >= (1, 8):
if field.many_to_one or field.one_to_one:
queryset = queryset.select_related(self.field_name)
elif field.one_to_many or field.many_to_many:
queryset = queryset.prefetch_related(self.field_name)
else:
from django.db.models.fields.related import ForeignKey
if isinstance(field, ForeignKey):
# select_related for ForeignKey and OneToOneField
queryset = queryset.select_related(self.field_name)
else:
# prefetch_related for anything else (ManyToManyField, tags)
queryset = queryset.prefetch_related(self.field_name)
if field.many_to_one or field.one_to_one:
queryset = queryset.select_related(self.field_name)
elif field.one_to_many or field.many_to_many:
queryset = queryset.prefetch_related(self.field_name)
elif isinstance(field, ForeignObjectRel):
# Reverse relation