kopia lustrzana https://github.com/wagtail/wagtail
Remove remaining Django 1.7 code and deprecate wagtail.utils.compat functions
rodzic
3e439b7bec
commit
4065bece78
|
@ -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)
|
||||
}
|
||||
|
||||
|
|
|
@ -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
|
||||
)
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
||||
|
|
|
@ -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):
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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):
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
from wagtail.utils.compat import render_to_string
|
||||
from django.template.loader import render_to_string
|
||||
|
||||
|
||||
class BaseItem(object):
|
||||
|
|
|
@ -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):
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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):
|
||||
|
|
|
@ -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):
|
||||
|
|
|
@ -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
|
||||
|
|
Ładowanie…
Reference in New Issue