| 1 | diff --git a/django/contrib/admin/options.py b/django/contrib/admin/options.py
|
|---|
| 2 | index 8de3112..f429af5 100644
|
|---|
| 3 | --- a/django/contrib/admin/options.py
|
|---|
| 4 | +++ b/django/contrib/admin/options.py
|
|---|
| 5 | @@ -222,7 +222,7 @@ class BaseModelAdmin(six.with_metaclass(forms.MediaDefiningClass)):
|
|---|
| 6 | Returns a QuerySet of all model instances that can be edited by the
|
|---|
| 7 | admin site. This is used by changelist_view.
|
|---|
| 8 | """
|
|---|
| 9 | - qs = self.model._default_manager.get_query_set()
|
|---|
| 10 | + qs = self.model._default_manager.get_queryset()
|
|---|
| 11 | # TODO: this should be handled by some parameter to the ChangeList.
|
|---|
| 12 | ordering = self.get_ordering(request)
|
|---|
| 13 | if ordering:
|
|---|
| 14 | @@ -1187,7 +1187,7 @@ class ModelAdmin(BaseModelAdmin):
|
|---|
| 15 | if (actions and request.method == 'POST' and
|
|---|
| 16 | 'index' in request.POST and '_save' not in request.POST):
|
|---|
| 17 | if selected:
|
|---|
| 18 | - response = self.response_action(request, queryset=cl.get_query_set(request))
|
|---|
| 19 | + response = self.response_action(request, queryset=cl.get_queryset(request))
|
|---|
| 20 | if response:
|
|---|
| 21 | return response
|
|---|
| 22 | else:
|
|---|
| 23 | @@ -1203,7 +1203,7 @@ class ModelAdmin(BaseModelAdmin):
|
|---|
| 24 | helpers.ACTION_CHECKBOX_NAME in request.POST and
|
|---|
| 25 | 'index' not in request.POST and '_save' not in request.POST):
|
|---|
| 26 | if selected:
|
|---|
| 27 | - response = self.response_action(request, queryset=cl.get_query_set(request))
|
|---|
| 28 | + response = self.response_action(request, queryset=cl.get_queryset(request))
|
|---|
| 29 | if response:
|
|---|
| 30 | return response
|
|---|
| 31 | else:
|
|---|
| 32 | diff --git a/django/contrib/admin/views/main.py b/django/contrib/admin/views/main.py
|
|---|
| 33 | index 4b296b3..c45d5d8 100644
|
|---|
| 34 | --- a/django/contrib/admin/views/main.py
|
|---|
| 35 | +++ b/django/contrib/admin/views/main.py
|
|---|
| 36 | @@ -6,7 +6,9 @@ from django.core.paginator import InvalidPage
|
|---|
| 37 | from django.core.urlresolvers import reverse
|
|---|
| 38 | from django.db import models
|
|---|
| 39 | from django.db.models.fields import FieldDoesNotExist
|
|---|
| 40 | +from django.utils import six
|
|---|
| 41 | from django.utils.datastructures import SortedDict
|
|---|
| 42 | +from django.utils.deprecation import DeprecatedGetQuerySet
|
|---|
| 43 | from django.utils.encoding import force_str, force_text
|
|---|
| 44 | from django.utils.translation import ugettext, ugettext_lazy
|
|---|
| 45 | from django.utils.http import urlencode
|
|---|
| 46 | @@ -33,7 +35,7 @@ IGNORED_PARAMS = (
|
|---|
| 47 | EMPTY_CHANGELIST_VALUE = ugettext_lazy('(None)')
|
|---|
| 48 |
|
|---|
| 49 |
|
|---|
| 50 | -class ChangeList(object):
|
|---|
| 51 | +class ChangeList(six.with_metaclass(DeprecatedGetQuerySet)):
|
|---|
| 52 | def __init__(self, request, model, list_display, list_display_links,
|
|---|
| 53 | list_filter, date_hierarchy, search_fields, list_select_related,
|
|---|
| 54 | list_per_page, list_max_show_all, list_editable, model_admin):
|
|---|
| 55 | @@ -70,7 +72,7 @@ class ChangeList(object):
|
|---|
| 56 | else:
|
|---|
| 57 | self.list_editable = list_editable
|
|---|
| 58 | self.query = request.GET.get(SEARCH_VAR, '')
|
|---|
| 59 | - self.query_set = self.get_query_set(request)
|
|---|
| 60 | + self.query_set = self.get_queryset(request)
|
|---|
| 61 | self.get_results(request)
|
|---|
| 62 | if self.is_popup:
|
|---|
| 63 | title = ugettext('Select %s')
|
|---|
| 64 | @@ -297,7 +299,7 @@ class ChangeList(object):
|
|---|
| 65 | ordering_fields[idx] = 'desc' if pfx == '-' else 'asc'
|
|---|
| 66 | return ordering_fields
|
|---|
| 67 |
|
|---|
| 68 | - def get_query_set(self, request):
|
|---|
| 69 | + def get_queryset(self, request):
|
|---|
| 70 | # First, we collect all the declared list filters.
|
|---|
| 71 | (self.filter_specs, self.has_filters, remaining_lookup_params,
|
|---|
| 72 | use_distinct) = self.get_filters(request)
|
|---|
| 73 | diff --git a/django/contrib/comments/managers.py b/django/contrib/comments/managers.py
|
|---|
| 74 | index bc0fc5f..6562004 100644
|
|---|
| 75 | --- a/django/contrib/comments/managers.py
|
|---|
| 76 | +++ b/django/contrib/comments/managers.py
|
|---|
| 77 | @@ -8,7 +8,7 @@ class CommentManager(models.Manager):
|
|---|
| 78 | """
|
|---|
| 79 | QuerySet for all comments currently in the moderation queue.
|
|---|
| 80 | """
|
|---|
| 81 | - return self.get_query_set().filter(is_public=False, is_removed=False)
|
|---|
| 82 | + return self.get_queryset().filter(is_public=False, is_removed=False)
|
|---|
| 83 |
|
|---|
| 84 | def for_model(self, model):
|
|---|
| 85 | """
|
|---|
| 86 | @@ -16,7 +16,7 @@ class CommentManager(models.Manager):
|
|---|
| 87 | a class).
|
|---|
| 88 | """
|
|---|
| 89 | ct = ContentType.objects.get_for_model(model)
|
|---|
| 90 | - qs = self.get_query_set().filter(content_type=ct)
|
|---|
| 91 | + qs = self.get_queryset().filter(content_type=ct)
|
|---|
| 92 | if isinstance(model, models.Model):
|
|---|
| 93 | qs = qs.filter(object_pk=force_text(model._get_pk_val()))
|
|---|
| 94 | return qs
|
|---|
| 95 | diff --git a/django/contrib/comments/templatetags/comments.py b/django/contrib/comments/templatetags/comments.py
|
|---|
| 96 | index 4d4eb23..900c08f 100644
|
|---|
| 97 | --- a/django/contrib/comments/templatetags/comments.py
|
|---|
| 98 | +++ b/django/contrib/comments/templatetags/comments.py
|
|---|
| 99 | @@ -3,11 +3,14 @@ from django.template.loader import render_to_string
|
|---|
| 100 | from django.conf import settings
|
|---|
| 101 | from django.contrib.contenttypes.models import ContentType
|
|---|
| 102 | from django.contrib import comments
|
|---|
| 103 | +from django.utils import six
|
|---|
| 104 | +from django.utils.deprecation import DeprecatedGetQuerySet
|
|---|
| 105 | from django.utils.encoding import smart_text
|
|---|
| 106 |
|
|---|
| 107 | register = template.Library()
|
|---|
| 108 |
|
|---|
| 109 | -class BaseCommentNode(template.Node):
|
|---|
| 110 | +
|
|---|
| 111 | +class BaseCommentNode(six.with_metaclass(DeprecatedGetQuerySet, template.Node)):
|
|---|
| 112 | """
|
|---|
| 113 | Base helper class (abstract) for handling the get_comment_* template tags.
|
|---|
| 114 | Looks a bit strange, but the subclasses below should make this a bit more
|
|---|
| 115 | @@ -64,11 +67,11 @@ class BaseCommentNode(template.Node):
|
|---|
| 116 | self.comment = comment
|
|---|
| 117 |
|
|---|
| 118 | def render(self, context):
|
|---|
| 119 | - qs = self.get_query_set(context)
|
|---|
| 120 | + qs = self.get_queryset(context)
|
|---|
| 121 | context[self.as_varname] = self.get_context_value_from_queryset(context, qs)
|
|---|
| 122 | return ''
|
|---|
| 123 |
|
|---|
| 124 | - def get_query_set(self, context):
|
|---|
| 125 | + def get_queryset(self, context):
|
|---|
| 126 | ctype, object_pk = self.get_target_ctype_pk(context)
|
|---|
| 127 | if not object_pk:
|
|---|
| 128 | return self.comment_model.objects.none()
|
|---|
| 129 | @@ -205,7 +208,7 @@ class RenderCommentListNode(CommentListNode):
|
|---|
| 130 | "comments/%s/list.html" % ctype.app_label,
|
|---|
| 131 | "comments/list.html"
|
|---|
| 132 | ]
|
|---|
| 133 | - qs = self.get_query_set(context)
|
|---|
| 134 | + qs = self.get_queryset(context)
|
|---|
| 135 | context.push()
|
|---|
| 136 | liststr = render_to_string(template_search_list, {
|
|---|
| 137 | "comment_list" : self.get_context_value_from_queryset(context, qs)
|
|---|
| 138 | diff --git a/django/contrib/contenttypes/generic.py b/django/contrib/contenttypes/generic.py
|
|---|
| 139 | index 20ff704..9624964 100644
|
|---|
| 140 | --- a/django/contrib/contenttypes/generic.py
|
|---|
| 141 | +++ b/django/contrib/contenttypes/generic.py
|
|---|
| 142 | @@ -316,12 +316,12 @@ def create_generic_related_manager(superclass):
|
|---|
| 143 | '%s__exact' % object_id_field_name: instance._get_pk_val(),
|
|---|
| 144 | }
|
|---|
| 145 |
|
|---|
| 146 | - def get_query_set(self):
|
|---|
| 147 | + def get_queryset(self):
|
|---|
| 148 | try:
|
|---|
| 149 | return self.instance._prefetched_objects_cache[self.prefetch_cache_name]
|
|---|
| 150 | except (AttributeError, KeyError):
|
|---|
| 151 | db = self._db or router.db_for_read(self.model, instance=self.instance)
|
|---|
| 152 | - return super(GenericRelatedObjectManager, self).get_query_set().using(db).filter(**self.core_filters)
|
|---|
| 153 | + return super(GenericRelatedObjectManager, self).get_queryset().using(db).filter(**self.core_filters)
|
|---|
| 154 |
|
|---|
| 155 | def get_prefetch_query_set(self, instances):
|
|---|
| 156 | db = self._db or router.db_for_read(self.model, instance=instances[0])
|
|---|
| 157 | @@ -330,7 +330,7 @@ def create_generic_related_manager(superclass):
|
|---|
| 158 | '%s__in' % self.object_id_field_name:
|
|---|
| 159 | set(obj._get_pk_val() for obj in instances)
|
|---|
| 160 | }
|
|---|
| 161 | - qs = super(GenericRelatedObjectManager, self).get_query_set().using(db).filter(**query)
|
|---|
| 162 | + qs = super(GenericRelatedObjectManager, self).get_queryset().using(db).filter(**query)
|
|---|
| 163 | # We (possibly) need to convert object IDs to the type of the
|
|---|
| 164 | # instances' PK in order to match up instances:
|
|---|
| 165 | object_id_converter = instances[0]._meta.pk.to_python
|
|---|
| 166 | diff --git a/django/contrib/gis/db/models/manager.py b/django/contrib/gis/db/models/manager.py
|
|---|
| 167 | index 61fb821..bbcbb57 100644
|
|---|
| 168 | --- a/django/contrib/gis/db/models/manager.py
|
|---|
| 169 | +++ b/django/contrib/gis/db/models/manager.py
|
|---|
| 170 | @@ -1,6 +1,7 @@
|
|---|
| 171 | from django.db.models.manager import Manager
|
|---|
| 172 | from django.contrib.gis.db.models.query import GeoQuerySet
|
|---|
| 173 |
|
|---|
| 174 | +
|
|---|
| 175 | class GeoManager(Manager):
|
|---|
| 176 | "Overrides Manager to return Geographic QuerySets."
|
|---|
| 177 |
|
|---|
| 178 | @@ -9,95 +10,95 @@ class GeoManager(Manager):
|
|---|
| 179 | # properly.
|
|---|
| 180 | use_for_related_fields = True
|
|---|
| 181 |
|
|---|
| 182 | - def get_query_set(self):
|
|---|
| 183 | + def get_queryset(self):
|
|---|
| 184 | return GeoQuerySet(self.model, using=self._db)
|
|---|
| 185 |
|
|---|
| 186 | def area(self, *args, **kwargs):
|
|---|
| 187 | - return self.get_query_set().area(*args, **kwargs)
|
|---|
| 188 | + return self.get_queryset().area(*args, **kwargs)
|
|---|
| 189 |
|
|---|
| 190 | def centroid(self, *args, **kwargs):
|
|---|
| 191 | - return self.get_query_set().centroid(*args, **kwargs)
|
|---|
| 192 | + return self.get_queryset().centroid(*args, **kwargs)
|
|---|
| 193 |
|
|---|
| 194 | def collect(self, *args, **kwargs):
|
|---|
| 195 | - return self.get_query_set().collect(*args, **kwargs)
|
|---|
| 196 | + return self.get_queryset().collect(*args, **kwargs)
|
|---|
| 197 |
|
|---|
| 198 | def difference(self, *args, **kwargs):
|
|---|
| 199 | - return self.get_query_set().difference(*args, **kwargs)
|
|---|
| 200 | + return self.get_queryset().difference(*args, **kwargs)
|
|---|
| 201 |
|
|---|
| 202 | def distance(self, *args, **kwargs):
|
|---|
| 203 | - return self.get_query_set().distance(*args, **kwargs)
|
|---|
| 204 | + return self.get_queryset().distance(*args, **kwargs)
|
|---|
| 205 |
|
|---|
| 206 | def envelope(self, *args, **kwargs):
|
|---|
| 207 | - return self.get_query_set().envelope(*args, **kwargs)
|
|---|
| 208 | + return self.get_queryset().envelope(*args, **kwargs)
|
|---|
| 209 |
|
|---|
| 210 | def extent(self, *args, **kwargs):
|
|---|
| 211 | - return self.get_query_set().extent(*args, **kwargs)
|
|---|
| 212 | + return self.get_queryset().extent(*args, **kwargs)
|
|---|
| 213 |
|
|---|
| 214 | def extent3d(self, *args, **kwargs):
|
|---|
| 215 | - return self.get_query_set().extent3d(*args, **kwargs)
|
|---|
| 216 | + return self.get_queryset().extent3d(*args, **kwargs)
|
|---|
| 217 |
|
|---|
| 218 | def force_rhr(self, *args, **kwargs):
|
|---|
| 219 | - return self.get_query_set().force_rhr(*args, **kwargs)
|
|---|
| 220 | + return self.get_queryset().force_rhr(*args, **kwargs)
|
|---|
| 221 |
|
|---|
| 222 | def geohash(self, *args, **kwargs):
|
|---|
| 223 | - return self.get_query_set().geohash(*args, **kwargs)
|
|---|
| 224 | + return self.get_queryset().geohash(*args, **kwargs)
|
|---|
| 225 |
|
|---|
| 226 | def geojson(self, *args, **kwargs):
|
|---|
| 227 | - return self.get_query_set().geojson(*args, **kwargs)
|
|---|
| 228 | + return self.get_queryset().geojson(*args, **kwargs)
|
|---|
| 229 |
|
|---|
| 230 | def gml(self, *args, **kwargs):
|
|---|
| 231 | - return self.get_query_set().gml(*args, **kwargs)
|
|---|
| 232 | + return self.get_queryset().gml(*args, **kwargs)
|
|---|
| 233 |
|
|---|
| 234 | def intersection(self, *args, **kwargs):
|
|---|
| 235 | - return self.get_query_set().intersection(*args, **kwargs)
|
|---|
| 236 | + return self.get_queryset().intersection(*args, **kwargs)
|
|---|
| 237 |
|
|---|
| 238 | def kml(self, *args, **kwargs):
|
|---|
| 239 | - return self.get_query_set().kml(*args, **kwargs)
|
|---|
| 240 | + return self.get_queryset().kml(*args, **kwargs)
|
|---|
| 241 |
|
|---|
| 242 | def length(self, *args, **kwargs):
|
|---|
| 243 | - return self.get_query_set().length(*args, **kwargs)
|
|---|
| 244 | + return self.get_queryset().length(*args, **kwargs)
|
|---|
| 245 |
|
|---|
| 246 | def make_line(self, *args, **kwargs):
|
|---|
| 247 | - return self.get_query_set().make_line(*args, **kwargs)
|
|---|
| 248 | + return self.get_queryset().make_line(*args, **kwargs)
|
|---|
| 249 |
|
|---|
| 250 | def mem_size(self, *args, **kwargs):
|
|---|
| 251 | - return self.get_query_set().mem_size(*args, **kwargs)
|
|---|
| 252 | + return self.get_queryset().mem_size(*args, **kwargs)
|
|---|
| 253 |
|
|---|
| 254 | def num_geom(self, *args, **kwargs):
|
|---|
| 255 | - return self.get_query_set().num_geom(*args, **kwargs)
|
|---|
| 256 | + return self.get_queryset().num_geom(*args, **kwargs)
|
|---|
| 257 |
|
|---|
| 258 | def num_points(self, *args, **kwargs):
|
|---|
| 259 | - return self.get_query_set().num_points(*args, **kwargs)
|
|---|
| 260 | + return self.get_queryset().num_points(*args, **kwargs)
|
|---|
| 261 |
|
|---|
| 262 | def perimeter(self, *args, **kwargs):
|
|---|
| 263 | - return self.get_query_set().perimeter(*args, **kwargs)
|
|---|
| 264 | + return self.get_queryset().perimeter(*args, **kwargs)
|
|---|
| 265 |
|
|---|
| 266 | def point_on_surface(self, *args, **kwargs):
|
|---|
| 267 | - return self.get_query_set().point_on_surface(*args, **kwargs)
|
|---|
| 268 | + return self.get_queryset().point_on_surface(*args, **kwargs)
|
|---|
| 269 |
|
|---|
| 270 | def reverse_geom(self, *args, **kwargs):
|
|---|
| 271 | - return self.get_query_set().reverse_geom(*args, **kwargs)
|
|---|
| 272 | + return self.get_queryset().reverse_geom(*args, **kwargs)
|
|---|
| 273 |
|
|---|
| 274 | def scale(self, *args, **kwargs):
|
|---|
| 275 | - return self.get_query_set().scale(*args, **kwargs)
|
|---|
| 276 | + return self.get_queryset().scale(*args, **kwargs)
|
|---|
| 277 |
|
|---|
| 278 | def snap_to_grid(self, *args, **kwargs):
|
|---|
| 279 | - return self.get_query_set().snap_to_grid(*args, **kwargs)
|
|---|
| 280 | + return self.get_queryset().snap_to_grid(*args, **kwargs)
|
|---|
| 281 |
|
|---|
| 282 | def svg(self, *args, **kwargs):
|
|---|
| 283 | - return self.get_query_set().svg(*args, **kwargs)
|
|---|
| 284 | + return self.get_queryset().svg(*args, **kwargs)
|
|---|
| 285 |
|
|---|
| 286 | def sym_difference(self, *args, **kwargs):
|
|---|
| 287 | - return self.get_query_set().sym_difference(*args, **kwargs)
|
|---|
| 288 | + return self.get_queryset().sym_difference(*args, **kwargs)
|
|---|
| 289 |
|
|---|
| 290 | def transform(self, *args, **kwargs):
|
|---|
| 291 | - return self.get_query_set().transform(*args, **kwargs)
|
|---|
| 292 | + return self.get_queryset().transform(*args, **kwargs)
|
|---|
| 293 |
|
|---|
| 294 | def translate(self, *args, **kwargs):
|
|---|
| 295 | - return self.get_query_set().translate(*args, **kwargs)
|
|---|
| 296 | + return self.get_queryset().translate(*args, **kwargs)
|
|---|
| 297 |
|
|---|
| 298 | def union(self, *args, **kwargs):
|
|---|
| 299 | - return self.get_query_set().union(*args, **kwargs)
|
|---|
| 300 | + return self.get_queryset().union(*args, **kwargs)
|
|---|
| 301 |
|
|---|
| 302 | def unionagg(self, *args, **kwargs):
|
|---|
| 303 | - return self.get_query_set().unionagg(*args, **kwargs)
|
|---|
| 304 | + return self.get_queryset().unionagg(*args, **kwargs)
|
|---|
| 305 | diff --git a/django/contrib/sites/managers.py b/django/contrib/sites/managers.py
|
|---|
| 306 | index 3df485a..449e081 100644
|
|---|
| 307 | --- a/django/contrib/sites/managers.py
|
|---|
| 308 | +++ b/django/contrib/sites/managers.py
|
|---|
| 309 | @@ -2,6 +2,7 @@ from django.conf import settings
|
|---|
| 310 | from django.db import models
|
|---|
| 311 | from django.db.models.fields import FieldDoesNotExist
|
|---|
| 312 |
|
|---|
| 313 | +
|
|---|
| 314 | class CurrentSiteManager(models.Manager):
|
|---|
| 315 | "Use this to limit objects to those associated with the current site."
|
|---|
| 316 | def __init__(self, field_name=None):
|
|---|
| 317 | @@ -35,7 +36,7 @@ class CurrentSiteManager(models.Manager):
|
|---|
| 318 | (self.__class__.__name__, self.__field_name, self.model._meta.object_name))
|
|---|
| 319 | self.__is_validated = True
|
|---|
| 320 |
|
|---|
| 321 | - def get_query_set(self):
|
|---|
| 322 | + def get_queryset(self):
|
|---|
| 323 | if not self.__is_validated:
|
|---|
| 324 | self._validate_field_name()
|
|---|
| 325 | - return super(CurrentSiteManager, self).get_query_set().filter(**{self.__field_name + '__id__exact': settings.SITE_ID})
|
|---|
| 326 | + return super(CurrentSiteManager, self).get_queryset().filter(**{self.__field_name + '__id__exact': settings.SITE_ID})
|
|---|
| 327 | diff --git a/django/db/models/fields/related.py b/django/db/models/fields/related.py
|
|---|
| 328 | index bd2e288..7f2e81c 100644
|
|---|
| 329 | --- a/django/db/models/fields/related.py
|
|---|
| 330 | +++ b/django/db/models/fields/related.py
|
|---|
| 331 | @@ -1,5 +1,7 @@
|
|---|
| 332 | from operator import attrgetter
|
|---|
| 333 |
|
|---|
| 334 | +from django import forms
|
|---|
| 335 | +from django.core import exceptions
|
|---|
| 336 | from django.db import connection, router
|
|---|
| 337 | from django.db.backends import util
|
|---|
| 338 | from django.db.models import signals, get_model
|
|---|
| 339 | @@ -11,10 +13,10 @@ from django.db.models.query_utils import QueryWrapper
|
|---|
| 340 | from django.db.models.deletion import CASCADE
|
|---|
| 341 | from django.utils.encoding import smart_text
|
|---|
| 342 | from django.utils import six
|
|---|
| 343 | +from django.utils.deprecation import DeprecatedGetQuerySet
|
|---|
| 344 | from django.utils.translation import ugettext_lazy as _, string_concat
|
|---|
| 345 | from django.utils.functional import curry, cached_property
|
|---|
| 346 | -from django.core import exceptions
|
|---|
| 347 | -from django import forms
|
|---|
| 348 | +
|
|---|
| 349 |
|
|---|
| 350 | RECURSIVE_RELATIONSHIP_CONSTANT = 'self'
|
|---|
| 351 |
|
|---|
| 352 | @@ -225,7 +227,7 @@ class RelatedField(object):
|
|---|
| 353 | return self.rel.related_name or self.opts.model_name
|
|---|
| 354 |
|
|---|
| 355 |
|
|---|
| 356 | -class SingleRelatedObjectDescriptor(object):
|
|---|
| 357 | +class SingleRelatedObjectDescriptor(six.with_metaclass(DeprecatedGetQuerySet)):
|
|---|
| 358 | # This class provides the functionality that makes the related-object
|
|---|
| 359 | # managers available as attributes on a model class, for fields that have
|
|---|
| 360 | # a single "remote" value, on the class pointed to by a related field.
|
|---|
| 361 | @@ -238,7 +240,7 @@ class SingleRelatedObjectDescriptor(object):
|
|---|
| 362 | def is_cached(self, instance):
|
|---|
| 363 | return hasattr(instance, self.cache_name)
|
|---|
| 364 |
|
|---|
| 365 | - def get_query_set(self, **db_hints):
|
|---|
| 366 | + def get_queryset(self, **db_hints):
|
|---|
| 367 | db = router.db_for_read(self.related.model, **db_hints)
|
|---|
| 368 | return self.related.model._base_manager.using(db)
|
|---|
| 369 |
|
|---|
| 370 | @@ -247,7 +249,7 @@ class SingleRelatedObjectDescriptor(object):
|
|---|
| 371 | instance_attr = lambda obj: obj._get_pk_val()
|
|---|
| 372 | instances_dict = dict((instance_attr(inst), inst) for inst in instances)
|
|---|
| 373 | params = {'%s__pk__in' % self.related.field.name: list(instances_dict)}
|
|---|
| 374 | - qs = self.get_query_set(instance=instances[0]).filter(**params)
|
|---|
| 375 | + qs = self.get_queryset(instance=instances[0]).filter(**params)
|
|---|
| 376 | # Since we're going to assign directly in the cache,
|
|---|
| 377 | # we must manage the reverse relation cache manually.
|
|---|
| 378 | rel_obj_cache_name = self.related.field.get_cache_name()
|
|---|
| 379 | @@ -268,7 +270,7 @@ class SingleRelatedObjectDescriptor(object):
|
|---|
| 380 | else:
|
|---|
| 381 | params = {'%s__pk' % self.related.field.name: related_pk}
|
|---|
| 382 | try:
|
|---|
| 383 | - rel_obj = self.get_query_set(instance=instance).get(**params)
|
|---|
| 384 | + rel_obj = self.get_queryset(instance=instance).get(**params)
|
|---|
| 385 | except self.related.model.DoesNotExist:
|
|---|
| 386 | rel_obj = None
|
|---|
| 387 | else:
|
|---|
| 388 | @@ -321,7 +323,7 @@ class SingleRelatedObjectDescriptor(object):
|
|---|
| 389 | setattr(value, self.related.field.get_cache_name(), instance)
|
|---|
| 390 |
|
|---|
| 391 |
|
|---|
| 392 | -class ReverseSingleRelatedObjectDescriptor(object):
|
|---|
| 393 | +class ReverseSingleRelatedObjectDescriptor(six.with_metaclass(DeprecatedGetQuerySet)):
|
|---|
| 394 | # This class provides the functionality that makes the related-object
|
|---|
| 395 | # managers available as attributes on a model class, for fields that have
|
|---|
| 396 | # a single "remote" value, on the class that defines the related field.
|
|---|
| 397 | @@ -334,7 +336,7 @@ class ReverseSingleRelatedObjectDescriptor(object):
|
|---|
| 398 | def is_cached(self, instance):
|
|---|
| 399 | return hasattr(instance, self.cache_name)
|
|---|
| 400 |
|
|---|
| 401 | - def get_query_set(self, **db_hints):
|
|---|
| 402 | + def get_queryset(self, **db_hints):
|
|---|
| 403 | db = router.db_for_read(self.field.rel.to, **db_hints)
|
|---|
| 404 | rel_mgr = self.field.rel.to._default_manager
|
|---|
| 405 | # If the related manager indicates that it should be used for
|
|---|
| 406 | @@ -353,7 +355,7 @@ class ReverseSingleRelatedObjectDescriptor(object):
|
|---|
| 407 | params = {'%s__pk__in' % self.field.rel.field_name: list(instances_dict)}
|
|---|
| 408 | else:
|
|---|
| 409 | params = {'%s__in' % self.field.rel.field_name: list(instances_dict)}
|
|---|
| 410 | - qs = self.get_query_set(instance=instances[0]).filter(**params)
|
|---|
| 411 | + qs = self.get_queryset(instance=instances[0]).filter(**params)
|
|---|
| 412 | # Since we're going to assign directly in the cache,
|
|---|
| 413 | # we must manage the reverse relation cache manually.
|
|---|
| 414 | if not self.field.rel.multiple:
|
|---|
| 415 | @@ -378,7 +380,7 @@ class ReverseSingleRelatedObjectDescriptor(object):
|
|---|
| 416 | params = {'%s__%s' % (self.field.rel.field_name, other_field.rel.field_name): val}
|
|---|
| 417 | else:
|
|---|
| 418 | params = {'%s__exact' % self.field.rel.field_name: val}
|
|---|
| 419 | - qs = self.get_query_set(instance=instance)
|
|---|
| 420 | + qs = self.get_queryset(instance=instance)
|
|---|
| 421 | # Assuming the database enforces foreign keys, this won't fail.
|
|---|
| 422 | rel_obj = qs.get(**params)
|
|---|
| 423 | if not self.field.rel.multiple:
|
|---|
| 424 | @@ -490,12 +492,12 @@ class ForeignRelatedObjectsDescriptor(object):
|
|---|
| 425 | }
|
|---|
| 426 | self.model = rel_model
|
|---|
| 427 |
|
|---|
| 428 | - def get_query_set(self):
|
|---|
| 429 | + def get_queryset(self):
|
|---|
| 430 | try:
|
|---|
| 431 | return self.instance._prefetched_objects_cache[rel_field.related_query_name()]
|
|---|
| 432 | except (AttributeError, KeyError):
|
|---|
| 433 | db = self._db or router.db_for_read(self.model, instance=self.instance)
|
|---|
| 434 | - qs = super(RelatedManager, self).get_query_set().using(db).filter(**self.core_filters)
|
|---|
| 435 | + qs = super(RelatedManager, self).get_queryset().using(db).filter(**self.core_filters)
|
|---|
| 436 | if getattr(self.instance, attname) is None:
|
|---|
| 437 | return qs.none()
|
|---|
| 438 | qs._known_related_objects = {rel_field: {self.instance.pk: self.instance}}
|
|---|
| 439 | @@ -507,7 +509,7 @@ class ForeignRelatedObjectsDescriptor(object):
|
|---|
| 440 | instances_dict = dict((instance_attr(inst), inst) for inst in instances)
|
|---|
| 441 | db = self._db or router.db_for_read(self.model, instance=instances[0])
|
|---|
| 442 | query = {'%s__%s__in' % (rel_field.name, attname): list(instances_dict)}
|
|---|
| 443 | - qs = super(RelatedManager, self).get_query_set().using(db).filter(**query)
|
|---|
| 444 | + qs = super(RelatedManager, self).get_queryset().using(db).filter(**query)
|
|---|
| 445 | # Since we just bypassed this class' get_query_set(), we must manage
|
|---|
| 446 | # the reverse relation manually.
|
|---|
| 447 | for rel_obj in qs:
|
|---|
| 448 | @@ -602,12 +604,12 @@ def create_many_related_manager(superclass, rel):
|
|---|
| 449 | else:
|
|---|
| 450 | return obj.pk
|
|---|
| 451 |
|
|---|
| 452 | - def get_query_set(self):
|
|---|
| 453 | + def get_queryset(self):
|
|---|
| 454 | try:
|
|---|
| 455 | return self.instance._prefetched_objects_cache[self.prefetch_cache_name]
|
|---|
| 456 | except (AttributeError, KeyError):
|
|---|
| 457 | db = self._db or router.db_for_read(self.instance.__class__, instance=self.instance)
|
|---|
| 458 | - return super(ManyRelatedManager, self).get_query_set().using(db)._next_is_sticky().filter(**self.core_filters)
|
|---|
| 459 | + return super(ManyRelatedManager, self).get_queryset().using(db)._next_is_sticky().filter(**self.core_filters)
|
|---|
| 460 |
|
|---|
| 461 | def get_prefetch_query_set(self, instances):
|
|---|
| 462 | instance = instances[0]
|
|---|
| 463 | @@ -615,7 +617,7 @@ def create_many_related_manager(superclass, rel):
|
|---|
| 464 | db = self._db or router.db_for_read(instance.__class__, instance=instance)
|
|---|
| 465 | query = {'%s__pk__in' % self.query_field_name:
|
|---|
| 466 | set(obj._get_pk_val() for obj in instances)}
|
|---|
| 467 | - qs = super(ManyRelatedManager, self).get_query_set().using(db)._next_is_sticky().filter(**query)
|
|---|
| 468 | + qs = super(ManyRelatedManager, self).get_queryset().using(db)._next_is_sticky().filter(**query)
|
|---|
| 469 |
|
|---|
| 470 | # M2M: need to annotate the query in order to get the primary model
|
|---|
| 471 | # that the secondary model was actually related to. We know that
|
|---|
| 472 | diff --git a/django/db/models/manager.py b/django/db/models/manager.py
|
|---|
| 473 | index cee2131..bc1724c 100644
|
|---|
| 474 | --- a/django/db/models/manager.py
|
|---|
| 475 | +++ b/django/db/models/manager.py
|
|---|
| 476 | @@ -3,6 +3,8 @@ from django.db import router
|
|---|
| 477 | from django.db.models.query import QuerySet, insert_query, RawQuerySet
|
|---|
| 478 | from django.db.models import signals
|
|---|
| 479 | from django.db.models.fields import FieldDoesNotExist
|
|---|
| 480 | +from django.utils import six
|
|---|
| 481 | +from django.utils.deprecation import DeprecatedGetQuerySet
|
|---|
| 482 |
|
|---|
| 483 |
|
|---|
| 484 | def ensure_default_manager(sender, **kwargs):
|
|---|
| 485 | @@ -47,7 +49,7 @@ def ensure_default_manager(sender, **kwargs):
|
|---|
| 486 | signals.class_prepared.connect(ensure_default_manager)
|
|---|
| 487 |
|
|---|
| 488 |
|
|---|
| 489 | -class Manager(object):
|
|---|
| 490 | +class Manager(six.with_metaclass(DeprecatedGetQuerySet)):
|
|---|
| 491 | # Tracks each time a Manager instance is created. Used to retain order.
|
|---|
| 492 | creation_counter = 0
|
|---|
| 493 |
|
|---|
| 494 | @@ -112,110 +114,110 @@ class Manager(object):
|
|---|
| 495 | # PROXIES TO QUERYSET #
|
|---|
| 496 | #######################
|
|---|
| 497 |
|
|---|
| 498 | - def get_query_set(self):
|
|---|
| 499 | + def get_queryset(self):
|
|---|
| 500 | """Returns a new QuerySet object. Subclasses can override this method
|
|---|
| 501 | to easily customize the behavior of the Manager.
|
|---|
| 502 | """
|
|---|
| 503 | return QuerySet(self.model, using=self._db)
|
|---|
| 504 |
|
|---|
| 505 | def none(self):
|
|---|
| 506 | - return self.get_query_set().none()
|
|---|
| 507 | + return self.get_queryset().none()
|
|---|
| 508 |
|
|---|
| 509 | def all(self):
|
|---|
| 510 | - return self.get_query_set()
|
|---|
| 511 | + return self.get_queryset()
|
|---|
| 512 |
|
|---|
| 513 | def count(self):
|
|---|
| 514 | - return self.get_query_set().count()
|
|---|
| 515 | + return self.get_queryset().count()
|
|---|
| 516 |
|
|---|
| 517 | def dates(self, *args, **kwargs):
|
|---|
| 518 | - return self.get_query_set().dates(*args, **kwargs)
|
|---|
| 519 | + return self.get_queryset().dates(*args, **kwargs)
|
|---|
| 520 |
|
|---|
| 521 | def distinct(self, *args, **kwargs):
|
|---|
| 522 | - return self.get_query_set().distinct(*args, **kwargs)
|
|---|
| 523 | + return self.get_queryset().distinct(*args, **kwargs)
|
|---|
| 524 |
|
|---|
| 525 | def extra(self, *args, **kwargs):
|
|---|
| 526 | - return self.get_query_set().extra(*args, **kwargs)
|
|---|
| 527 | + return self.get_queryset().extra(*args, **kwargs)
|
|---|
| 528 |
|
|---|
| 529 | def get(self, *args, **kwargs):
|
|---|
| 530 | - return self.get_query_set().get(*args, **kwargs)
|
|---|
| 531 | + return self.get_queryset().get(*args, **kwargs)
|
|---|
| 532 |
|
|---|
| 533 | def get_or_create(self, **kwargs):
|
|---|
| 534 | - return self.get_query_set().get_or_create(**kwargs)
|
|---|
| 535 | + return self.get_queryset().get_or_create(**kwargs)
|
|---|
| 536 |
|
|---|
| 537 | def create(self, **kwargs):
|
|---|
| 538 | - return self.get_query_set().create(**kwargs)
|
|---|
| 539 | + return self.get_queryset().create(**kwargs)
|
|---|
| 540 |
|
|---|
| 541 | def bulk_create(self, *args, **kwargs):
|
|---|
| 542 | - return self.get_query_set().bulk_create(*args, **kwargs)
|
|---|
| 543 | + return self.get_queryset().bulk_create(*args, **kwargs)
|
|---|
| 544 |
|
|---|
| 545 | def filter(self, *args, **kwargs):
|
|---|
| 546 | - return self.get_query_set().filter(*args, **kwargs)
|
|---|
| 547 | + return self.get_queryset().filter(*args, **kwargs)
|
|---|
| 548 |
|
|---|
| 549 | def aggregate(self, *args, **kwargs):
|
|---|
| 550 | - return self.get_query_set().aggregate(*args, **kwargs)
|
|---|
| 551 | + return self.get_queryset().aggregate(*args, **kwargs)
|
|---|
| 552 |
|
|---|
| 553 | def annotate(self, *args, **kwargs):
|
|---|
| 554 | - return self.get_query_set().annotate(*args, **kwargs)
|
|---|
| 555 | + return self.get_queryset().annotate(*args, **kwargs)
|
|---|
| 556 |
|
|---|
| 557 | def complex_filter(self, *args, **kwargs):
|
|---|
| 558 | - return self.get_query_set().complex_filter(*args, **kwargs)
|
|---|
| 559 | + return self.get_queryset().complex_filter(*args, **kwargs)
|
|---|
| 560 |
|
|---|
| 561 | def exclude(self, *args, **kwargs):
|
|---|
| 562 | - return self.get_query_set().exclude(*args, **kwargs)
|
|---|
| 563 | + return self.get_queryset().exclude(*args, **kwargs)
|
|---|
| 564 |
|
|---|
| 565 | def in_bulk(self, *args, **kwargs):
|
|---|
| 566 | - return self.get_query_set().in_bulk(*args, **kwargs)
|
|---|
| 567 | + return self.get_queryset().in_bulk(*args, **kwargs)
|
|---|
| 568 |
|
|---|
| 569 | def iterator(self, *args, **kwargs):
|
|---|
| 570 | - return self.get_query_set().iterator(*args, **kwargs)
|
|---|
| 571 | + return self.get_queryset().iterator(*args, **kwargs)
|
|---|
| 572 |
|
|---|
| 573 | def earliest(self, *args, **kwargs):
|
|---|
| 574 | - return self.get_query_set().earliest(*args, **kwargs)
|
|---|
| 575 | + return self.get_queryset().earliest(*args, **kwargs)
|
|---|
| 576 |
|
|---|
| 577 | def latest(self, *args, **kwargs):
|
|---|
| 578 | - return self.get_query_set().latest(*args, **kwargs)
|
|---|
| 579 | + return self.get_queryset().latest(*args, **kwargs)
|
|---|
| 580 |
|
|---|
| 581 | def order_by(self, *args, **kwargs):
|
|---|
| 582 | - return self.get_query_set().order_by(*args, **kwargs)
|
|---|
| 583 | + return self.get_queryset().order_by(*args, **kwargs)
|
|---|
| 584 |
|
|---|
| 585 | def select_for_update(self, *args, **kwargs):
|
|---|
| 586 | - return self.get_query_set().select_for_update(*args, **kwargs)
|
|---|
| 587 | + return self.get_queryset().select_for_update(*args, **kwargs)
|
|---|
| 588 |
|
|---|
| 589 | def select_related(self, *args, **kwargs):
|
|---|
| 590 | - return self.get_query_set().select_related(*args, **kwargs)
|
|---|
| 591 | + return self.get_queryset().select_related(*args, **kwargs)
|
|---|
| 592 |
|
|---|
| 593 | def prefetch_related(self, *args, **kwargs):
|
|---|
| 594 | - return self.get_query_set().prefetch_related(*args, **kwargs)
|
|---|
| 595 | + return self.get_queryset().prefetch_related(*args, **kwargs)
|
|---|
| 596 |
|
|---|
| 597 | def values(self, *args, **kwargs):
|
|---|
| 598 | - return self.get_query_set().values(*args, **kwargs)
|
|---|
| 599 | + return self.get_queryset().values(*args, **kwargs)
|
|---|
| 600 |
|
|---|
| 601 | def values_list(self, *args, **kwargs):
|
|---|
| 602 | - return self.get_query_set().values_list(*args, **kwargs)
|
|---|
| 603 | + return self.get_queryset().values_list(*args, **kwargs)
|
|---|
| 604 |
|
|---|
| 605 | def update(self, *args, **kwargs):
|
|---|
| 606 | - return self.get_query_set().update(*args, **kwargs)
|
|---|
| 607 | + return self.get_queryset().update(*args, **kwargs)
|
|---|
| 608 |
|
|---|
| 609 | def reverse(self, *args, **kwargs):
|
|---|
| 610 | - return self.get_query_set().reverse(*args, **kwargs)
|
|---|
| 611 | + return self.get_queryset().reverse(*args, **kwargs)
|
|---|
| 612 |
|
|---|
| 613 | def defer(self, *args, **kwargs):
|
|---|
| 614 | - return self.get_query_set().defer(*args, **kwargs)
|
|---|
| 615 | + return self.get_queryset().defer(*args, **kwargs)
|
|---|
| 616 |
|
|---|
| 617 | def only(self, *args, **kwargs):
|
|---|
| 618 | - return self.get_query_set().only(*args, **kwargs)
|
|---|
| 619 | + return self.get_queryset().only(*args, **kwargs)
|
|---|
| 620 |
|
|---|
| 621 | def using(self, *args, **kwargs):
|
|---|
| 622 | - return self.get_query_set().using(*args, **kwargs)
|
|---|
| 623 | + return self.get_queryset().using(*args, **kwargs)
|
|---|
| 624 |
|
|---|
| 625 | def exists(self, *args, **kwargs):
|
|---|
| 626 | - return self.get_query_set().exists(*args, **kwargs)
|
|---|
| 627 | + return self.get_queryset().exists(*args, **kwargs)
|
|---|
| 628 |
|
|---|
| 629 | def _insert(self, objs, fields, **kwargs):
|
|---|
| 630 | return insert_query(self.model, objs, fields, **kwargs)
|
|---|
| 631 |
|
|---|
| 632 | def _update(self, values, **kwargs):
|
|---|
| 633 | - return self.get_query_set()._update(values, **kwargs)
|
|---|
| 634 | + return self.get_queryset()._update(values, **kwargs)
|
|---|
| 635 |
|
|---|
| 636 | def raw(self, raw_query, params=None, *args, **kwargs):
|
|---|
| 637 | return RawQuerySet(raw_query=raw_query, model=self.model, params=params, using=self._db, *args, **kwargs)
|
|---|
| 638 | @@ -262,5 +264,5 @@ class EmptyManager(Manager):
|
|---|
| 639 | super(EmptyManager, self).__init__()
|
|---|
| 640 | self.model = model
|
|---|
| 641 |
|
|---|
| 642 | - def get_query_set(self):
|
|---|
| 643 | - return super(EmptyManager, self).get_query_set().none()
|
|---|
| 644 | + def get_queryset(self):
|
|---|
| 645 | + return super(EmptyManager, self).get_queryset().none()
|
|---|
| 646 | diff --git a/django/forms/models.py b/django/forms/models.py
|
|---|
| 647 | index e2d739f..3948780 100644
|
|---|
| 648 | --- a/django/forms/models.py
|
|---|
| 649 | +++ b/django/forms/models.py
|
|---|
| 650 | @@ -479,7 +479,7 @@ class BaseModelFormSet(BaseFormSet):
|
|---|
| 651 | if self.queryset is not None:
|
|---|
| 652 | qs = self.queryset
|
|---|
| 653 | else:
|
|---|
| 654 | - qs = self.model._default_manager.get_query_set()
|
|---|
| 655 | + qs = self.model._default_manager.get_queryset()
|
|---|
| 656 |
|
|---|
| 657 | # If the queryset isn't already ordered we need to add an
|
|---|
| 658 | # artificial ordering here to make sure that all formsets
|
|---|
| 659 | @@ -674,9 +674,9 @@ class BaseModelFormSet(BaseFormSet):
|
|---|
| 660 | except IndexError:
|
|---|
| 661 | pk_value = None
|
|---|
| 662 | if isinstance(pk, OneToOneField) or isinstance(pk, ForeignKey):
|
|---|
| 663 | - qs = pk.rel.to._default_manager.get_query_set()
|
|---|
| 664 | + qs = pk.rel.to._default_manager.get_queryset()
|
|---|
| 665 | else:
|
|---|
| 666 | - qs = self.model._default_manager.get_query_set()
|
|---|
| 667 | + qs = self.model._default_manager.get_queryset()
|
|---|
| 668 | qs = qs.using(form.instance._state.db)
|
|---|
| 669 | if form._meta.widgets:
|
|---|
| 670 | widget = form._meta.widgets.get(self._pk_field.name, HiddenInput)
|
|---|
| 671 | diff --git a/django/utils/deprecation.py b/django/utils/deprecation.py
|
|---|
| 672 | new file mode 100644
|
|---|
| 673 | index 0000000..96cefb4
|
|---|
| 674 | --- /dev/null
|
|---|
| 675 | +++ b/django/utils/deprecation.py
|
|---|
| 676 | @@ -0,0 +1,57 @@
|
|---|
| 677 | +from __future__ import unicode_literals
|
|---|
| 678 | +import warnings
|
|---|
| 679 | +
|
|---|
| 680 | +from django.core.exceptions import ImproperlyConfigured
|
|---|
| 681 | +from django.utils.unittest.compatibility import wraps
|
|---|
| 682 | +
|
|---|
| 683 | +
|
|---|
| 684 | +def renamed_method_factory(old, new, warning=PendingDeprecationWarning):
|
|---|
| 685 | + """
|
|---|
| 686 | + Create a type to handle the deprecation path of a renamed method.
|
|---|
| 687 | +
|
|---|
| 688 | + Does the following:
|
|---|
| 689 | + 1) Issue a warning on class creation if `old` is defined.
|
|---|
| 690 | + 2) Raise an `ImproperlyConfigured` error if both `old` and
|
|---|
| 691 | + `new` are defined.
|
|---|
| 692 | + 3) Define a `new` method if not present.
|
|---|
| 693 | + 4) Define or wrap the existing `old` to complain when called.
|
|---|
| 694 | + """
|
|---|
| 695 | + def renamed_method_complain(name, deprecated):
|
|---|
| 696 | + @wraps(deprecated)
|
|---|
| 697 | + def complain(*args, **kwargs):
|
|---|
| 698 | + warnings.warn(
|
|---|
| 699 | + "`%s.%s` is deprecated, use "
|
|---|
| 700 | + "`%s` instead." % (name, old, new),
|
|---|
| 701 | + warning, 2)
|
|---|
| 702 | + return deprecated(*args, **kwargs)
|
|---|
| 703 | + return complain
|
|---|
| 704 | + class RenamedMethod(type):
|
|---|
| 705 | + def __new__(cls, name, bases, attrs):
|
|---|
| 706 | + deprecated = attrs.get(old)
|
|---|
| 707 | + renamed = attrs.get(new)
|
|---|
| 708 | + if deprecated:
|
|---|
| 709 | + if renamed:
|
|---|
| 710 | + raise ImproperlyConfigured(
|
|---|
| 711 | + "'Class `%s` should either define `%s` or "
|
|---|
| 712 | + "`%s` not both.'" % (name, new, old))
|
|---|
| 713 | + else:
|
|---|
| 714 | + attrs[new] = deprecated
|
|---|
| 715 | + warnings.warn(
|
|---|
| 716 | + "`%s.%s` method should be "
|
|---|
| 717 | + "renamed `%s`." % (name, old, new),
|
|---|
| 718 | + warning, 2)
|
|---|
| 719 | + deprecated = renamed_method_complain(name, deprecated)
|
|---|
| 720 | + elif renamed:
|
|---|
| 721 | + deprecated = renamed_method_complain(name, renamed)
|
|---|
| 722 | + if deprecated:
|
|---|
| 723 | + attrs[old] = deprecated
|
|---|
| 724 | + type_ = type.__new__(cls, name, bases, attrs)
|
|---|
| 725 | + # TODO: Handle type_.__mro__ to look for possible mixins
|
|---|
| 726 | + return type_
|
|---|
| 727 | + return RenamedMethod
|
|---|
| 728 | +
|
|---|
| 729 | +
|
|---|
| 730 | +# See #15363 for more details.
|
|---|
| 731 | +DeprecatedGetQuerySet = renamed_method_factory('get_query_set', 'get_queryset')
|
|---|
| 732 | +#DeprecatedGetPrefetchQuerySet = renamed_method_factory('get_prefetch_query_set', 'get_prefetch_queryset')
|
|---|
| 733 | +#DeprecatedQueryset = renamed_method_factory('queryset', 'get_queryset')
|
|---|
| 734 | diff --git a/tests/modeltests/custom_managers/models.py b/tests/modeltests/custom_managers/models.py
|
|---|
| 735 | index de7c177..2f5e62f 100644
|
|---|
| 736 | --- a/tests/modeltests/custom_managers/models.py
|
|---|
| 737 | +++ b/tests/modeltests/custom_managers/models.py
|
|---|
| 738 | @@ -30,11 +30,11 @@ class Person(models.Model):
|
|---|
| 739 | def __str__(self):
|
|---|
| 740 | return "%s %s" % (self.first_name, self.last_name)
|
|---|
| 741 |
|
|---|
| 742 | -# An example of a custom manager that sets get_query_set().
|
|---|
| 743 | +# An example of a custom manager that sets get_queryset().
|
|---|
| 744 |
|
|---|
| 745 | class PublishedBookManager(models.Manager):
|
|---|
| 746 | - def get_query_set(self):
|
|---|
| 747 | - return super(PublishedBookManager, self).get_query_set().filter(is_published=True)
|
|---|
| 748 | + def get_queryset(self):
|
|---|
| 749 | + return super(PublishedBookManager, self).get_queryset().filter(is_published=True)
|
|---|
| 750 |
|
|---|
| 751 | @python_2_unicode_compatible
|
|---|
| 752 | class Book(models.Model):
|
|---|
| 753 | @@ -50,8 +50,8 @@ class Book(models.Model):
|
|---|
| 754 | # An example of providing multiple custom managers.
|
|---|
| 755 |
|
|---|
| 756 | class FastCarManager(models.Manager):
|
|---|
| 757 | - def get_query_set(self):
|
|---|
| 758 | - return super(FastCarManager, self).get_query_set().filter(top_speed__gt=150)
|
|---|
| 759 | + def get_queryset(self):
|
|---|
| 760 | + return super(FastCarManager, self).get_queryset().filter(top_speed__gt=150)
|
|---|
| 761 |
|
|---|
| 762 | @python_2_unicode_compatible
|
|---|
| 763 | class Car(models.Model):
|
|---|
| 764 | diff --git a/tests/modeltests/fixtures/models.py b/tests/modeltests/fixtures/models.py
|
|---|
| 765 | index 8bd3501..976716f 100644
|
|---|
| 766 | --- a/tests/modeltests/fixtures/models.py
|
|---|
| 767 | +++ b/tests/modeltests/fixtures/models.py
|
|---|
| 768 | @@ -78,8 +78,8 @@ class Person(models.Model):
|
|---|
| 769 | return (self.name,)
|
|---|
| 770 |
|
|---|
| 771 | class SpyManager(PersonManager):
|
|---|
| 772 | - def get_query_set(self):
|
|---|
| 773 | - return super(SpyManager, self).get_query_set().filter(cover_blown=False)
|
|---|
| 774 | + def get_queryset(self):
|
|---|
| 775 | + return super(SpyManager, self).get_queryset().filter(cover_blown=False)
|
|---|
| 776 |
|
|---|
| 777 | class Spy(Person):
|
|---|
| 778 | objects = SpyManager()
|
|---|
| 779 | diff --git a/tests/modeltests/generic_relations/models.py b/tests/modeltests/generic_relations/models.py
|
|---|
| 780 | index 18d7623..34dc8d3 100644
|
|---|
| 781 | --- a/tests/modeltests/generic_relations/models.py
|
|---|
| 782 | +++ b/tests/modeltests/generic_relations/models.py
|
|---|
| 783 | @@ -88,8 +88,8 @@ class Mineral(models.Model):
|
|---|
| 784 | return self.name
|
|---|
| 785 |
|
|---|
| 786 | class GeckoManager(models.Manager):
|
|---|
| 787 | - def get_query_set(self):
|
|---|
| 788 | - return super(GeckoManager, self).get_query_set().filter(has_tail=True)
|
|---|
| 789 | + def get_queryset(self):
|
|---|
| 790 | + return super(GeckoManager, self).get_queryset().filter(has_tail=True)
|
|---|
| 791 |
|
|---|
| 792 | class Gecko(models.Model):
|
|---|
| 793 | has_tail = models.BooleanField()
|
|---|
| 794 | diff --git a/tests/modeltests/get_object_or_404/models.py b/tests/modeltests/get_object_or_404/models.py
|
|---|
| 795 | index bda0605..bb9aa60 100644
|
|---|
| 796 | --- a/tests/modeltests/get_object_or_404/models.py
|
|---|
| 797 | +++ b/tests/modeltests/get_object_or_404/models.py
|
|---|
| 798 | @@ -22,8 +22,8 @@ class Author(models.Model):
|
|---|
| 799 | return self.name
|
|---|
| 800 |
|
|---|
| 801 | class ArticleManager(models.Manager):
|
|---|
| 802 | - def get_query_set(self):
|
|---|
| 803 | - return super(ArticleManager, self).get_query_set().filter(authors__name__icontains='sir')
|
|---|
| 804 | + def get_queryset(self):
|
|---|
| 805 | + return super(ArticleManager, self).get_queryset().filter(authors__name__icontains='sir')
|
|---|
| 806 |
|
|---|
| 807 | @python_2_unicode_compatible
|
|---|
| 808 | class Article(models.Model):
|
|---|
| 809 | diff --git a/tests/modeltests/prefetch_related/models.py b/tests/modeltests/prefetch_related/models.py
|
|---|
| 810 | index e58997d..81c5698 100644
|
|---|
| 811 | --- a/tests/modeltests/prefetch_related/models.py
|
|---|
| 812 | +++ b/tests/modeltests/prefetch_related/models.py
|
|---|
| 813 | @@ -87,8 +87,8 @@ class Qualification(models.Model):
|
|---|
| 814 |
|
|---|
| 815 |
|
|---|
| 816 | class TeacherManager(models.Manager):
|
|---|
| 817 | - def get_query_set(self):
|
|---|
| 818 | - return super(TeacherManager, self).get_query_set().prefetch_related('qualifications')
|
|---|
| 819 | + def get_queryset(self):
|
|---|
| 820 | + return super(TeacherManager, self).get_queryset().prefetch_related('qualifications')
|
|---|
| 821 |
|
|---|
| 822 |
|
|---|
| 823 | @python_2_unicode_compatible
|
|---|
| 824 | diff --git a/tests/modeltests/proxy_models/models.py b/tests/modeltests/proxy_models/models.py
|
|---|
| 825 | index 6c962aa..ffb3665 100644
|
|---|
| 826 | --- a/tests/modeltests/proxy_models/models.py
|
|---|
| 827 | +++ b/tests/modeltests/proxy_models/models.py
|
|---|
| 828 | @@ -10,12 +10,12 @@ from django.utils.encoding import python_2_unicode_compatible
|
|---|
| 829 | # A couple of managers for testing managing overriding in proxy model cases.
|
|---|
| 830 |
|
|---|
| 831 | class PersonManager(models.Manager):
|
|---|
| 832 | - def get_query_set(self):
|
|---|
| 833 | - return super(PersonManager, self).get_query_set().exclude(name="fred")
|
|---|
| 834 | + def get_queryset(self):
|
|---|
| 835 | + return super(PersonManager, self).get_queryset().exclude(name="fred")
|
|---|
| 836 |
|
|---|
| 837 | class SubManager(models.Manager):
|
|---|
| 838 | - def get_query_set(self):
|
|---|
| 839 | - return super(SubManager, self).get_query_set().exclude(name="wilma")
|
|---|
| 840 | + def get_queryset(self):
|
|---|
| 841 | + return super(SubManager, self).get_queryset().exclude(name="wilma")
|
|---|
| 842 |
|
|---|
| 843 | @python_2_unicode_compatible
|
|---|
| 844 | class Person(models.Model):
|
|---|
| 845 | diff --git a/tests/regressiontests/admin_changelist/models.py b/tests/regressiontests/admin_changelist/models.py
|
|---|
| 846 | index 4ba2f9c..786b438 100644
|
|---|
| 847 | --- a/tests/regressiontests/admin_changelist/models.py
|
|---|
| 848 | +++ b/tests/regressiontests/admin_changelist/models.py
|
|---|
| 849 | @@ -74,8 +74,8 @@ class UnorderedObject(models.Model):
|
|---|
| 850 |
|
|---|
| 851 |
|
|---|
| 852 | class OrderedObjectManager(models.Manager):
|
|---|
| 853 | - def get_query_set(self):
|
|---|
| 854 | - return super(OrderedObjectManager, self).get_query_set().order_by('number')
|
|---|
| 855 | + def get_queryset(self):
|
|---|
| 856 | + return super(OrderedObjectManager, self).get_queryset().order_by('number')
|
|---|
| 857 |
|
|---|
| 858 | class OrderedObject(models.Model):
|
|---|
| 859 | """
|
|---|
| 860 | diff --git a/tests/regressiontests/admin_changelist/tests.py b/tests/regressiontests/admin_changelist/tests.py
|
|---|
| 861 | index 7a3a5c0..2f94cc7 100644
|
|---|
| 862 | --- a/tests/regressiontests/admin_changelist/tests.py
|
|---|
| 863 | +++ b/tests/regressiontests/admin_changelist/tests.py
|
|---|
| 864 | @@ -39,7 +39,7 @@ class ChangeListTests(TestCase):
|
|---|
| 865 |
|
|---|
| 866 | def test_select_related_preserved(self):
|
|---|
| 867 | """
|
|---|
| 868 | - Regression test for #10348: ChangeList.get_query_set() shouldn't
|
|---|
| 869 | + Regression test for #10348: ChangeList.get_queryset() shouldn't
|
|---|
| 870 | overwrite a custom select_related provided by ModelAdmin.queryset().
|
|---|
| 871 | """
|
|---|
| 872 | m = ChildAdmin(Child, admin.site)
|
|---|
| 873 | diff --git a/tests/regressiontests/admin_filters/tests.py b/tests/regressiontests/admin_filters/tests.py
|
|---|
| 874 | index 11f792e..d25c8f4 100644
|
|---|
| 875 | --- a/tests/regressiontests/admin_filters/tests.py
|
|---|
| 876 | +++ b/tests/regressiontests/admin_filters/tests.py
|
|---|
| 877 | @@ -183,7 +183,7 @@ class ListFiltersTests(TestCase):
|
|---|
| 878 | changelist = self.get_changelist(request, Book, modeladmin)
|
|---|
| 879 |
|
|---|
| 880 | # Make sure the correct queryset is returned
|
|---|
| 881 | - queryset = changelist.get_query_set(request)
|
|---|
| 882 | + queryset = changelist.get_queryset(request)
|
|---|
| 883 | self.assertEqual(list(queryset), [self.django_book, self.djangonaut_book])
|
|---|
| 884 |
|
|---|
| 885 | # Make sure the correct choice is selected
|
|---|
| 886 | @@ -200,7 +200,7 @@ class ListFiltersTests(TestCase):
|
|---|
| 887 | changelist = self.get_changelist(request, Book, modeladmin)
|
|---|
| 888 |
|
|---|
| 889 | # Make sure the correct queryset is returned
|
|---|
| 890 | - queryset = changelist.get_query_set(request)
|
|---|
| 891 | + queryset = changelist.get_queryset(request)
|
|---|
| 892 | if (self.today.year, self.today.month) == (self.one_week_ago.year, self.one_week_ago.month):
|
|---|
| 893 | # In case one week ago is in the same month.
|
|---|
| 894 | self.assertEqual(list(queryset), [self.gipsy_book, self.django_book, self.djangonaut_book])
|
|---|
| 895 | @@ -221,7 +221,7 @@ class ListFiltersTests(TestCase):
|
|---|
| 896 | changelist = self.get_changelist(request, Book, modeladmin)
|
|---|
| 897 |
|
|---|
| 898 | # Make sure the correct queryset is returned
|
|---|
| 899 | - queryset = changelist.get_query_set(request)
|
|---|
| 900 | + queryset = changelist.get_queryset(request)
|
|---|
| 901 | if self.today.year == self.one_week_ago.year:
|
|---|
| 902 | # In case one week ago is in the same year.
|
|---|
| 903 | self.assertEqual(list(queryset), [self.gipsy_book, self.django_book, self.djangonaut_book])
|
|---|
| 904 | @@ -242,7 +242,7 @@ class ListFiltersTests(TestCase):
|
|---|
| 905 | changelist = self.get_changelist(request, Book, modeladmin)
|
|---|
| 906 |
|
|---|
| 907 | # Make sure the correct queryset is returned
|
|---|
| 908 | - queryset = changelist.get_query_set(request)
|
|---|
| 909 | + queryset = changelist.get_queryset(request)
|
|---|
| 910 | self.assertEqual(list(queryset), [self.gipsy_book, self.django_book, self.djangonaut_book])
|
|---|
| 911 |
|
|---|
| 912 | # Make sure the correct choice is selected
|
|---|
| 913 | @@ -266,7 +266,7 @@ class ListFiltersTests(TestCase):
|
|---|
| 914 | changelist = self.get_changelist(request, Book, modeladmin)
|
|---|
| 915 |
|
|---|
| 916 | # Make sure the correct queryset is returned
|
|---|
| 917 | - queryset = changelist.get_query_set(request)
|
|---|
| 918 | + queryset = changelist.get_queryset(request)
|
|---|
| 919 | self.assertEqual(list(queryset), [self.django_book])
|
|---|
| 920 |
|
|---|
| 921 | # Make sure the last choice is None and is selected
|
|---|
| 922 | @@ -293,7 +293,7 @@ class ListFiltersTests(TestCase):
|
|---|
| 923 | changelist = self.get_changelist(request, Book, modeladmin)
|
|---|
| 924 |
|
|---|
| 925 | # Make sure the correct queryset is returned
|
|---|
| 926 | - queryset = changelist.get_query_set(request)
|
|---|
| 927 | + queryset = changelist.get_queryset(request)
|
|---|
| 928 | self.assertEqual(list(queryset), [self.gipsy_book])
|
|---|
| 929 |
|
|---|
| 930 | # Make sure the last choice is None and is selected
|
|---|
| 931 | @@ -321,7 +321,7 @@ class ListFiltersTests(TestCase):
|
|---|
| 932 | changelist = self.get_changelist(request, Book, modeladmin)
|
|---|
| 933 |
|
|---|
| 934 | # Make sure the correct queryset is returned
|
|---|
| 935 | - queryset = changelist.get_query_set(request)
|
|---|
| 936 | + queryset = changelist.get_queryset(request)
|
|---|
| 937 | self.assertEqual(list(queryset), [self.django_book, self.bio_book, self.djangonaut_book])
|
|---|
| 938 |
|
|---|
| 939 | # Make sure the last choice is None and is selected
|
|---|
| 940 | @@ -349,7 +349,7 @@ class ListFiltersTests(TestCase):
|
|---|
| 941 | changelist = self.get_changelist(request, User, modeladmin)
|
|---|
| 942 |
|
|---|
| 943 | # Make sure the correct queryset is returned
|
|---|
| 944 | - queryset = changelist.get_query_set(request)
|
|---|
| 945 | + queryset = changelist.get_queryset(request)
|
|---|
| 946 | self.assertEqual(list(queryset), [self.lisa])
|
|---|
| 947 |
|
|---|
| 948 | # Make sure the last choice is None and is selected
|
|---|
| 949 | @@ -374,7 +374,7 @@ class ListFiltersTests(TestCase):
|
|---|
| 950 | changelist = self.get_changelist(request, User, modeladmin)
|
|---|
| 951 |
|
|---|
| 952 | # Make sure the correct queryset is returned
|
|---|
| 953 | - queryset = changelist.get_query_set(request)
|
|---|
| 954 | + queryset = changelist.get_queryset(request)
|
|---|
| 955 | self.assertEqual(list(queryset), [self.alfred])
|
|---|
| 956 |
|
|---|
| 957 | # Make sure the last choice is None and is selected
|
|---|
| 958 | @@ -410,7 +410,7 @@ class ListFiltersTests(TestCase):
|
|---|
| 959 | changelist = self.get_changelist(request, Book, modeladmin)
|
|---|
| 960 |
|
|---|
| 961 | # Make sure the correct queryset is returned
|
|---|
| 962 | - queryset = changelist.get_query_set(request)
|
|---|
| 963 | + queryset = changelist.get_queryset(request)
|
|---|
| 964 | self.assertEqual(list(queryset), [self.bio_book])
|
|---|
| 965 |
|
|---|
| 966 | # Make sure the correct choice is selected
|
|---|
| 967 | @@ -424,7 +424,7 @@ class ListFiltersTests(TestCase):
|
|---|
| 968 | changelist = self.get_changelist(request, Book, modeladmin)
|
|---|
| 969 |
|
|---|
| 970 | # Make sure the correct queryset is returned
|
|---|
| 971 | - queryset = changelist.get_query_set(request)
|
|---|
| 972 | + queryset = changelist.get_queryset(request)
|
|---|
| 973 | self.assertEqual(list(queryset), [self.gipsy_book, self.djangonaut_book])
|
|---|
| 974 |
|
|---|
| 975 | # Make sure the correct choice is selected
|
|---|
| 976 | @@ -438,7 +438,7 @@ class ListFiltersTests(TestCase):
|
|---|
| 977 | changelist = self.get_changelist(request, Book, modeladmin)
|
|---|
| 978 |
|
|---|
| 979 | # Make sure the correct queryset is returned
|
|---|
| 980 | - queryset = changelist.get_query_set(request)
|
|---|
| 981 | + queryset = changelist.get_queryset(request)
|
|---|
| 982 | self.assertEqual(list(queryset), [self.django_book])
|
|---|
| 983 |
|
|---|
| 984 | # Make sure the correct choice is selected
|
|---|
| 985 | @@ -457,7 +457,7 @@ class ListFiltersTests(TestCase):
|
|---|
| 986 | changelist = self.get_changelist(request, Book, modeladmin)
|
|---|
| 987 |
|
|---|
| 988 | # Make sure the correct queryset is returned
|
|---|
| 989 | - queryset = changelist.get_query_set(request)
|
|---|
| 990 | + queryset = changelist.get_queryset(request)
|
|---|
| 991 | self.assertEqual(list(queryset), list(Book.objects.all().order_by('-id')))
|
|---|
| 992 |
|
|---|
| 993 | # Make sure the correct choice is selected
|
|---|
| 994 | @@ -474,7 +474,7 @@ class ListFiltersTests(TestCase):
|
|---|
| 995 | changelist = self.get_changelist(request, Book, modeladmin)
|
|---|
| 996 |
|
|---|
| 997 | # Make sure the correct queryset is returned
|
|---|
| 998 | - queryset = changelist.get_query_set(request)
|
|---|
| 999 | + queryset = changelist.get_queryset(request)
|
|---|
| 1000 | self.assertEqual(list(queryset), [])
|
|---|
| 1001 |
|
|---|
| 1002 | # Make sure the correct choice is selected
|
|---|
| 1003 | @@ -491,7 +491,7 @@ class ListFiltersTests(TestCase):
|
|---|
| 1004 | changelist = self.get_changelist(request, Book, modeladmin)
|
|---|
| 1005 |
|
|---|
| 1006 | # Make sure the correct queryset is returned
|
|---|
| 1007 | - queryset = changelist.get_query_set(request)
|
|---|
| 1008 | + queryset = changelist.get_queryset(request)
|
|---|
| 1009 | self.assertEqual(list(queryset), [self.bio_book])
|
|---|
| 1010 |
|
|---|
| 1011 | # Make sure the correct choice is selected
|
|---|
| 1012 | @@ -508,7 +508,7 @@ class ListFiltersTests(TestCase):
|
|---|
| 1013 | changelist = self.get_changelist(request, Book, modeladmin)
|
|---|
| 1014 |
|
|---|
| 1015 | # Make sure the correct queryset is returned
|
|---|
| 1016 | - queryset = changelist.get_query_set(request)
|
|---|
| 1017 | + queryset = changelist.get_queryset(request)
|
|---|
| 1018 | self.assertEqual(list(queryset), [self.gipsy_book, self.djangonaut_book])
|
|---|
| 1019 |
|
|---|
| 1020 | # Make sure the correct choice is selected
|
|---|
| 1021 | @@ -525,7 +525,7 @@ class ListFiltersTests(TestCase):
|
|---|
| 1022 | changelist = self.get_changelist(request, Book, modeladmin)
|
|---|
| 1023 |
|
|---|
| 1024 | # Make sure the correct queryset is returned
|
|---|
| 1025 | - queryset = changelist.get_query_set(request)
|
|---|
| 1026 | + queryset = changelist.get_queryset(request)
|
|---|
| 1027 | self.assertEqual(list(queryset), [self.djangonaut_book])
|
|---|
| 1028 |
|
|---|
| 1029 | # Make sure the correct choices are selected
|
|---|
| 1030 | @@ -615,7 +615,7 @@ class ListFiltersTests(TestCase):
|
|---|
| 1031 | changelist = self.get_changelist(request, Book, modeladmin)
|
|---|
| 1032 |
|
|---|
| 1033 | # Make sure the correct queryset is returned
|
|---|
| 1034 | - queryset = changelist.get_query_set(request)
|
|---|
| 1035 | + queryset = changelist.get_queryset(request)
|
|---|
| 1036 | self.assertEqual(list(queryset), [self.bio_book])
|
|---|
| 1037 |
|
|---|
| 1038 | filterspec = changelist.get_filters(request)[0][-1]
|
|---|
| 1039 | @@ -637,7 +637,7 @@ class ListFiltersTests(TestCase):
|
|---|
| 1040 | changelist = self.get_changelist(request, Book, modeladmin)
|
|---|
| 1041 |
|
|---|
| 1042 | # Make sure the correct queryset is returned
|
|---|
| 1043 | - queryset = changelist.get_query_set(request)
|
|---|
| 1044 | + queryset = changelist.get_queryset(request)
|
|---|
| 1045 | self.assertEqual(list(queryset), [self.bio_book])
|
|---|
| 1046 |
|
|---|
| 1047 | # Make sure the correct choice is selected
|
|---|
| 1048 | @@ -654,7 +654,7 @@ class ListFiltersTests(TestCase):
|
|---|
| 1049 | changelist = self.get_changelist(request, Book, modeladmin)
|
|---|
| 1050 |
|
|---|
| 1051 | # Make sure the correct queryset is returned
|
|---|
| 1052 | - queryset = changelist.get_query_set(request)
|
|---|
| 1053 | + queryset = changelist.get_queryset(request)
|
|---|
| 1054 | self.assertEqual(list(queryset), [self.bio_book])
|
|---|
| 1055 |
|
|---|
| 1056 | # Make sure the correct choice is selected
|
|---|
| 1057 | @@ -676,7 +676,7 @@ class ListFiltersTests(TestCase):
|
|---|
| 1058 | request = self.request_factory.get('/', {'department': self.john.pk})
|
|---|
| 1059 | changelist = self.get_changelist(request, Employee, modeladmin)
|
|---|
| 1060 |
|
|---|
| 1061 | - queryset = changelist.get_query_set(request)
|
|---|
| 1062 | + queryset = changelist.get_queryset(request)
|
|---|
| 1063 |
|
|---|
| 1064 | self.assertEqual(list(queryset), [self.john])
|
|---|
| 1065 |
|
|---|
| 1066 | @@ -698,7 +698,7 @@ class ListFiltersTests(TestCase):
|
|---|
| 1067 | changelist = self.get_changelist(request, Employee, modeladmin)
|
|---|
| 1068 |
|
|---|
| 1069 | # Make sure the correct queryset is returned
|
|---|
| 1070 | - queryset = changelist.get_query_set(request)
|
|---|
| 1071 | + queryset = changelist.get_queryset(request)
|
|---|
| 1072 | self.assertEqual(list(queryset), [self.jack, self.john])
|
|---|
| 1073 |
|
|---|
| 1074 | filterspec = changelist.get_filters(request)[0][-1]
|
|---|
| 1075 | @@ -723,7 +723,7 @@ class ListFiltersTests(TestCase):
|
|---|
| 1076 | changelist = self.get_changelist(request, Employee, modeladmin)
|
|---|
| 1077 |
|
|---|
| 1078 | # Make sure the correct queryset is returned
|
|---|
| 1079 | - queryset = changelist.get_query_set(request)
|
|---|
| 1080 | + queryset = changelist.get_queryset(request)
|
|---|
| 1081 | self.assertEqual(list(queryset), [self.john])
|
|---|
| 1082 |
|
|---|
| 1083 | filterspec = changelist.get_filters(request)[0][-1]
|
|---|
| 1084 | diff --git a/tests/regressiontests/admin_views/admin.py b/tests/regressiontests/admin_views/admin.py
|
|---|
| 1085 | index 435883e..2d85e54 100644
|
|---|
| 1086 | --- a/tests/regressiontests/admin_views/admin.py
|
|---|
| 1087 | +++ b/tests/regressiontests/admin_views/admin.py
|
|---|
| 1088 | @@ -417,7 +417,7 @@ class PostAdmin(admin.ModelAdmin):
|
|---|
| 1089 |
|
|---|
| 1090 |
|
|---|
| 1091 | class CustomChangeList(ChangeList):
|
|---|
| 1092 | - def get_query_set(self, request):
|
|---|
| 1093 | + def get_queryset(self, request):
|
|---|
| 1094 | return self.root_query_set.filter(pk=9999) # Does not exist
|
|---|
| 1095 |
|
|---|
| 1096 |
|
|---|
| 1097 | diff --git a/tests/regressiontests/admin_widgets/models.py b/tests/regressiontests/admin_widgets/models.py
|
|---|
| 1098 | index 2977b86..ae19d58 100644
|
|---|
| 1099 | --- a/tests/regressiontests/admin_widgets/models.py
|
|---|
| 1100 | +++ b/tests/regressiontests/admin_widgets/models.py
|
|---|
| 1101 | @@ -37,8 +37,8 @@ class Album(models.Model):
|
|---|
| 1102 | return self.name
|
|---|
| 1103 |
|
|---|
| 1104 | class HiddenInventoryManager(models.Manager):
|
|---|
| 1105 | - def get_query_set(self):
|
|---|
| 1106 | - return super(HiddenInventoryManager, self).get_query_set().filter(hidden=False)
|
|---|
| 1107 | + def get_queryset(self):
|
|---|
| 1108 | + return super(HiddenInventoryManager, self).get_queryset().filter(hidden=False)
|
|---|
| 1109 |
|
|---|
| 1110 | @python_2_unicode_compatible
|
|---|
| 1111 | class Inventory(models.Model):
|
|---|
| 1112 | diff --git a/tests/regressiontests/custom_managers_regress/models.py b/tests/regressiontests/custom_managers_regress/models.py
|
|---|
| 1113 | index 71073f0..95cf6e8 100644
|
|---|
| 1114 | --- a/tests/regressiontests/custom_managers_regress/models.py
|
|---|
| 1115 | +++ b/tests/regressiontests/custom_managers_regress/models.py
|
|---|
| 1116 | @@ -10,8 +10,8 @@ class RestrictedManager(models.Manager):
|
|---|
| 1117 | """
|
|---|
| 1118 | A manager that filters out non-public instances.
|
|---|
| 1119 | """
|
|---|
| 1120 | - def get_query_set(self):
|
|---|
| 1121 | - return super(RestrictedManager, self).get_query_set().filter(is_public=True)
|
|---|
| 1122 | + def get_queryset(self):
|
|---|
| 1123 | + return super(RestrictedManager, self).get_queryset().filter(is_public=True)
|
|---|
| 1124 |
|
|---|
| 1125 | @python_2_unicode_compatible
|
|---|
| 1126 | class RelatedModel(models.Model):
|
|---|
| 1127 | diff --git a/tests/regressiontests/deprecation/__init__.py b/tests/regressiontests/deprecation/__init__.py
|
|---|
| 1128 | new file mode 100644
|
|---|
| 1129 | index 0000000..e69de29
|
|---|
| 1130 | diff --git a/tests/regressiontests/deprecation/models.py b/tests/regressiontests/deprecation/models.py
|
|---|
| 1131 | new file mode 100644
|
|---|
| 1132 | index 0000000..e69de29
|
|---|
| 1133 | diff --git a/tests/regressiontests/deprecation/tests.py b/tests/regressiontests/deprecation/tests.py
|
|---|
| 1134 | new file mode 100644
|
|---|
| 1135 | index 0000000..32d5a8a
|
|---|
| 1136 | --- /dev/null
|
|---|
| 1137 | +++ b/tests/regressiontests/deprecation/tests.py
|
|---|
| 1138 | @@ -0,0 +1,130 @@
|
|---|
| 1139 | +from __future__ import unicode_literals
|
|---|
| 1140 | +import warnings
|
|---|
| 1141 | +
|
|---|
| 1142 | +from django.test.testcases import SimpleTestCase
|
|---|
| 1143 | +from django.utils import six
|
|---|
| 1144 | +from django.utils.deprecation import renamed_method_factory
|
|---|
| 1145 | +from django.core.exceptions import ImproperlyConfigured
|
|---|
| 1146 | +
|
|---|
| 1147 | +
|
|---|
| 1148 | +RenamedMethod = renamed_method_factory('old', 'new')
|
|---|
| 1149 | +
|
|---|
| 1150 | +
|
|---|
| 1151 | +class RenamedMethodTest(SimpleTestCase):
|
|---|
| 1152 | + def test_class_definition_warnings(self):
|
|---|
| 1153 | + """
|
|---|
| 1154 | + Ensure a warning is raised upon class definition to suggest renaming
|
|---|
| 1155 | + the faulty method.
|
|---|
| 1156 | + """
|
|---|
| 1157 | + with warnings.catch_warnings(record=True) as recorded:
|
|---|
| 1158 | + warnings.simplefilter('always')
|
|---|
| 1159 | + class Manager(six.with_metaclass(RenamedMethod)):
|
|---|
| 1160 | + def old(self):
|
|---|
| 1161 | + pass
|
|---|
| 1162 | + self.assertEqual(len(recorded), 1)
|
|---|
| 1163 | + msg = str(recorded[0].message)
|
|---|
| 1164 | + self.assertEqual(msg,
|
|---|
| 1165 | + '`Manager.old` method should be renamed `new`.')
|
|---|
| 1166 | +
|
|---|
| 1167 | + def test_new_defined(self):
|
|---|
| 1168 | + """
|
|---|
| 1169 | + Ensure `old` complains and not `new` when only
|
|---|
| 1170 | + `new` is defined.
|
|---|
| 1171 | + """
|
|---|
| 1172 | + with warnings.catch_warnings(record=True) as recorded:
|
|---|
| 1173 | + warnings.simplefilter('ignore')
|
|---|
| 1174 | + class Manager(six.with_metaclass(RenamedMethod)):
|
|---|
| 1175 | + def new(self):
|
|---|
| 1176 | + pass
|
|---|
| 1177 | + warnings.simplefilter('always')
|
|---|
| 1178 | + manager = Manager()
|
|---|
| 1179 | + manager.new()
|
|---|
| 1180 | + self.assertEqual(len(recorded), 0)
|
|---|
| 1181 | + manager.old()
|
|---|
| 1182 | + self.assertEqual(len(recorded), 1)
|
|---|
| 1183 | + msg = str(recorded.pop().message)
|
|---|
| 1184 | + self.assertEqual(msg,
|
|---|
| 1185 | + '`Manager.old` is deprecated, use `new` instead.')
|
|---|
| 1186 | +
|
|---|
| 1187 | + def test_old_defined(self):
|
|---|
| 1188 | + """
|
|---|
| 1189 | + Ensure `old` complains and not `new` when only
|
|---|
| 1190 | + `old` is defined.
|
|---|
| 1191 | + """
|
|---|
| 1192 | + with warnings.catch_warnings(record=True) as recorded:
|
|---|
| 1193 | + warnings.simplefilter('ignore')
|
|---|
| 1194 | + class Manager(six.with_metaclass(RenamedMethod)):
|
|---|
| 1195 | + def old(self):
|
|---|
| 1196 | + pass
|
|---|
| 1197 | + warnings.simplefilter('always')
|
|---|
| 1198 | + manager = Manager()
|
|---|
| 1199 | + manager.new()
|
|---|
| 1200 | + self.assertEqual(len(recorded), 0)
|
|---|
| 1201 | + manager.old()
|
|---|
| 1202 | + self.assertEqual(len(recorded), 1)
|
|---|
| 1203 | + msg = str(recorded.pop().message)
|
|---|
| 1204 | + self.assertEqual(msg,
|
|---|
| 1205 | + '`Manager.old` is deprecated, use `new` instead.')
|
|---|
| 1206 | +
|
|---|
| 1207 | + def test_deprecated_subclass_renamed(self):
|
|---|
| 1208 | + """
|
|---|
| 1209 | + Ensure the correct warnings are raised when a class that didn't rename
|
|---|
| 1210 | + `old` subclass one that did.
|
|---|
| 1211 | + """
|
|---|
| 1212 | + with warnings.catch_warnings(record=True) as recorded:
|
|---|
| 1213 | + warnings.simplefilter('ignore')
|
|---|
| 1214 | + class Renamed(six.with_metaclass(RenamedMethod)):
|
|---|
| 1215 | + def new(self):
|
|---|
| 1216 | + pass
|
|---|
| 1217 | + class Deprecated(Renamed):
|
|---|
| 1218 | + def old(self):
|
|---|
| 1219 | + super(Deprecated, self).old()
|
|---|
| 1220 | + warnings.simplefilter('always')
|
|---|
| 1221 | + deprecated = Deprecated()
|
|---|
| 1222 | + deprecated.new()
|
|---|
| 1223 | + self.assertEqual(len(recorded), 1)
|
|---|
| 1224 | + msg = str(recorded.pop().message)
|
|---|
| 1225 | + self.assertEqual(msg,
|
|---|
| 1226 | + '`Renamed.old` is deprecated, use `new` instead.')
|
|---|
| 1227 | + deprecated.old()
|
|---|
| 1228 | + self.assertEqual(len(recorded), 2)
|
|---|
| 1229 | + msgs = [str(warning.message) for warning in recorded]
|
|---|
| 1230 | + self.assertEqual(msgs, [
|
|---|
| 1231 | + '`Deprecated.old` is deprecated, use `new` instead.',
|
|---|
| 1232 | + '`Renamed.old` is deprecated, use `new` instead.'])
|
|---|
| 1233 | +
|
|---|
| 1234 | + def test_renamed_subclass_deprecated(self):
|
|---|
| 1235 | + """
|
|---|
| 1236 | + Ensure the correct warnings are raised when a class that renamed
|
|---|
| 1237 | + `old` subclass one that didn't.
|
|---|
| 1238 | + """
|
|---|
| 1239 | + with warnings.catch_warnings(record=True) as recorded:
|
|---|
| 1240 | + warnings.simplefilter('ignore')
|
|---|
| 1241 | + class Deprecated(six.with_metaclass(RenamedMethod)):
|
|---|
| 1242 | + def old(self):
|
|---|
| 1243 | + pass
|
|---|
| 1244 | + class Renamed(Deprecated):
|
|---|
| 1245 | + def new(self):
|
|---|
| 1246 | + super(Renamed, self).new()
|
|---|
| 1247 | + warnings.simplefilter('always')
|
|---|
| 1248 | + renamed = Renamed()
|
|---|
| 1249 | + renamed.new()
|
|---|
| 1250 | + self.assertEqual(len(recorded), 0)
|
|---|
| 1251 | + renamed.old()
|
|---|
| 1252 | + self.assertEqual(len(recorded), 1)
|
|---|
| 1253 | + msg = str(recorded.pop().message)
|
|---|
| 1254 | + self.assertEqual(msg,
|
|---|
| 1255 | + '`Renamed.old` is deprecated, use `new` instead.')
|
|---|
| 1256 | +
|
|---|
| 1257 | + def test_improperly_configured(self):
|
|---|
| 1258 | + """
|
|---|
| 1259 | + Ensure a significant `ImproperlyConfigured` error is raised when
|
|---|
| 1260 | + both `new` and `old` are defined.
|
|---|
| 1261 | + """
|
|---|
| 1262 | + msg = 'Class `Manager` should either define `new` or `old` not both.'
|
|---|
| 1263 | + with self.assertRaisesMessage(ImproperlyConfigured, msg):
|
|---|
| 1264 | + class Manager(six.with_metaclass(RenamedMethod)):
|
|---|
| 1265 | + def new(self):
|
|---|
| 1266 | + pass
|
|---|
| 1267 | + def old(self):
|
|---|
| 1268 | + pass
|
|---|
| 1269 | \ No newline at end of file
|
|---|
| 1270 | diff --git a/tests/regressiontests/managers_regress/models.py b/tests/regressiontests/managers_regress/models.py
|
|---|
| 1271 | index d72970d..d8dd22e 100644
|
|---|
| 1272 | --- a/tests/regressiontests/managers_regress/models.py
|
|---|
| 1273 | +++ b/tests/regressiontests/managers_regress/models.py
|
|---|
| 1274 | @@ -7,18 +7,18 @@ from django.utils.encoding import python_2_unicode_compatible
|
|---|
| 1275 |
|
|---|
| 1276 |
|
|---|
| 1277 | class OnlyFred(models.Manager):
|
|---|
| 1278 | - def get_query_set(self):
|
|---|
| 1279 | - return super(OnlyFred, self).get_query_set().filter(name='fred')
|
|---|
| 1280 | + def get_queryset(self):
|
|---|
| 1281 | + return super(OnlyFred, self).get_queryset().filter(name='fred')
|
|---|
| 1282 |
|
|---|
| 1283 |
|
|---|
| 1284 | class OnlyBarney(models.Manager):
|
|---|
| 1285 | - def get_query_set(self):
|
|---|
| 1286 | - return super(OnlyBarney, self).get_query_set().filter(name='barney')
|
|---|
| 1287 | + def get_queryset(self):
|
|---|
| 1288 | + return super(OnlyBarney, self).get_queryset().filter(name='barney')
|
|---|
| 1289 |
|
|---|
| 1290 |
|
|---|
| 1291 | class Value42(models.Manager):
|
|---|
| 1292 | - def get_query_set(self):
|
|---|
| 1293 | - return super(Value42, self).get_query_set().filter(value=42)
|
|---|
| 1294 | + def get_queryset(self):
|
|---|
| 1295 | + return super(Value42, self).get_queryset().filter(value=42)
|
|---|
| 1296 |
|
|---|
| 1297 |
|
|---|
| 1298 | class AbstractBase1(models.Model):
|
|---|
| 1299 | diff --git a/tests/regressiontests/modeladmin/tests.py b/tests/regressiontests/modeladmin/tests.py
|
|---|
| 1300 | index b0a1812..2f3eddd 100644
|
|---|
| 1301 | --- a/tests/regressiontests/modeladmin/tests.py
|
|---|
| 1302 | +++ b/tests/regressiontests/modeladmin/tests.py
|
|---|
| 1303 | @@ -1074,7 +1074,7 @@ class ValidationTests(unittest.TestCase):
|
|---|
| 1304 | return 'awesomeness'
|
|---|
| 1305 | def get_choices(self, request):
|
|---|
| 1306 | return (('bit', 'A bit awesome'), ('very', 'Very awesome'), )
|
|---|
| 1307 | - def get_query_set(self, cl, qs):
|
|---|
| 1308 | + def get_queryset(self, cl, qs):
|
|---|
| 1309 | return qs
|
|---|
| 1310 |
|
|---|
| 1311 | class ValidationTestModelAdmin(ModelAdmin):
|
|---|
| 1312 | diff --git a/tests/regressiontests/queries/models.py b/tests/regressiontests/queries/models.py
|
|---|
| 1313 | index 16583e8..7489aeb 100644
|
|---|
| 1314 | --- a/tests/regressiontests/queries/models.py
|
|---|
| 1315 | +++ b/tests/regressiontests/queries/models.py
|
|---|
| 1316 | @@ -175,8 +175,8 @@ class LoopZ(models.Model):
|
|---|
| 1317 |
|
|---|
| 1318 | # A model and custom default manager combination.
|
|---|
| 1319 | class CustomManager(models.Manager):
|
|---|
| 1320 | - def get_query_set(self):
|
|---|
| 1321 | - qs = super(CustomManager, self).get_query_set()
|
|---|
| 1322 | + def get_queryset(self):
|
|---|
| 1323 | + qs = super(CustomManager, self).get_queryset()
|
|---|
| 1324 | return qs.filter(public=True, tag__name='t1')
|
|---|
| 1325 |
|
|---|
| 1326 | @python_2_unicode_compatible
|
|---|
| 1327 | @@ -196,8 +196,8 @@ class Detail(models.Model):
|
|---|
| 1328 | data = models.CharField(max_length=10)
|
|---|
| 1329 |
|
|---|
| 1330 | class MemberManager(models.Manager):
|
|---|
| 1331 | - def get_query_set(self):
|
|---|
| 1332 | - return super(MemberManager, self).get_query_set().select_related("details")
|
|---|
| 1333 | + def get_queryset(self):
|
|---|
| 1334 | + return super(MemberManager, self).get_queryset().select_related("details")
|
|---|
| 1335 |
|
|---|
| 1336 | class Member(models.Model):
|
|---|
| 1337 | name = models.CharField(max_length=10)
|
|---|
| 1338 | diff --git a/tests/regressiontests/reverse_single_related/models.py b/tests/regressiontests/reverse_single_related/models.py
|
|---|
| 1339 | index 898be84..30ba345 100644
|
|---|
| 1340 | --- a/tests/regressiontests/reverse_single_related/models.py
|
|---|
| 1341 | +++ b/tests/regressiontests/reverse_single_related/models.py
|
|---|
| 1342 | @@ -2,8 +2,8 @@ from django.db import models
|
|---|
| 1343 |
|
|---|
| 1344 |
|
|---|
| 1345 | class SourceManager(models.Manager):
|
|---|
| 1346 | - def get_query_set(self):
|
|---|
| 1347 | - return super(SourceManager, self).get_query_set().filter(is_public=True)
|
|---|
| 1348 | + def get_queryset(self):
|
|---|
| 1349 | + return super(SourceManager, self).get_queryset().filter(is_public=True)
|
|---|
| 1350 |
|
|---|
| 1351 | class Source(models.Model):
|
|---|
| 1352 | is_public = models.BooleanField()
|
|---|