16
16
from rest_framework .reverse import reverse
17
17
from rest_framework .compat import urlparse
18
18
from rest_framework .compat import smart_text
19
- import warnings
20
19
21
20
22
21
# Relational fields
@@ -320,11 +319,6 @@ class HyperlinkedRelatedField(RelatedField):
320
319
'incorrect_type' : _ ('Incorrect type. Expected url string, received %s.' ),
321
320
}
322
321
323
- # These are all deprecated
324
- pk_url_kwarg = 'pk'
325
- slug_field = 'slug'
326
- slug_url_kwarg = None # Defaults to same as `slug_field` unless overridden
327
-
328
322
def __init__ (self , * args , ** kwargs ):
329
323
try :
330
324
self .view_name = kwargs .pop ('view_name' )
@@ -334,22 +328,6 @@ def __init__(self, *args, **kwargs):
334
328
self .lookup_field = kwargs .pop ('lookup_field' , self .lookup_field )
335
329
self .format = kwargs .pop ('format' , None )
336
330
337
- # These are deprecated
338
- if 'pk_url_kwarg' in kwargs :
339
- msg = 'pk_url_kwarg is deprecated. Use lookup_field instead.'
340
- warnings .warn (msg , DeprecationWarning , stacklevel = 2 )
341
- if 'slug_url_kwarg' in kwargs :
342
- msg = 'slug_url_kwarg is deprecated. Use lookup_field instead.'
343
- warnings .warn (msg , DeprecationWarning , stacklevel = 2 )
344
- if 'slug_field' in kwargs :
345
- msg = 'slug_field is deprecated. Use lookup_field instead.'
346
- warnings .warn (msg , DeprecationWarning , stacklevel = 2 )
347
-
348
- self .pk_url_kwarg = kwargs .pop ('pk_url_kwarg' , self .pk_url_kwarg )
349
- self .slug_field = kwargs .pop ('slug_field' , self .slug_field )
350
- default_slug_kwarg = self .slug_url_kwarg or self .slug_field
351
- self .slug_url_kwarg = kwargs .pop ('slug_url_kwarg' , default_slug_kwarg )
352
-
353
331
super (HyperlinkedRelatedField , self ).__init__ (* args , ** kwargs )
354
332
355
333
def get_url (self , obj , view_name , request , format ):
@@ -361,39 +339,7 @@ def get_url(self, obj, view_name, request, format):
361
339
"""
362
340
lookup_field = getattr (obj , self .lookup_field )
363
341
kwargs = {self .lookup_field : lookup_field }
364
- try :
365
- return reverse (view_name , kwargs = kwargs , request = request , format = format )
366
- except NoReverseMatch :
367
- pass
368
-
369
- if self .pk_url_kwarg != 'pk' :
370
- # Only try pk if it has been explicitly set.
371
- # Otherwise, the default `lookup_field = 'pk'` has us covered.
372
- pk = obj .pk
373
- kwargs = {self .pk_url_kwarg : pk }
374
- try :
375
- return reverse (view_name , kwargs = kwargs , request = request , format = format )
376
- except NoReverseMatch :
377
- pass
378
-
379
- slug = getattr (obj , self .slug_field , None )
380
- if slug is not None :
381
- # Only try slug if it corresponds to an attribute on the object.
382
- kwargs = {self .slug_url_kwarg : slug }
383
- try :
384
- ret = reverse (view_name , kwargs = kwargs , request = request , format = format )
385
- if self .slug_field == 'slug' and self .slug_url_kwarg == 'slug' :
386
- # If the lookup succeeds using the default slug params,
387
- # then `slug_field` is being used implicitly, and we
388
- # we need to warn about the pending deprecation.
389
- msg = 'Implicit slug field hyperlinked fields are deprecated.' \
390
- 'You should set `lookup_field=slug` on the HyperlinkedRelatedField.'
391
- warnings .warn (msg , DeprecationWarning , stacklevel = 2 )
392
- return ret
393
- except NoReverseMatch :
394
- pass
395
-
396
- raise NoReverseMatch ()
342
+ return reverse (view_name , kwargs = kwargs , request = request , format = format )
397
343
398
344
def get_object (self , queryset , view_name , view_args , view_kwargs ):
399
345
"""
@@ -402,19 +348,8 @@ def get_object(self, queryset, view_name, view_args, view_kwargs):
402
348
Takes the matched URL conf arguments, and the queryset, and should
403
349
return an object instance, or raise an `ObjectDoesNotExist` exception.
404
350
"""
405
- lookup = view_kwargs .get (self .lookup_field , None )
406
- pk = view_kwargs .get (self .pk_url_kwarg , None )
407
- slug = view_kwargs .get (self .slug_url_kwarg , None )
408
-
409
- if lookup is not None :
410
- filter_kwargs = {self .lookup_field : lookup }
411
- elif pk is not None :
412
- filter_kwargs = {'pk' : pk }
413
- elif slug is not None :
414
- filter_kwargs = {self .slug_field : slug }
415
- else :
416
- raise ObjectDoesNotExist ()
417
-
351
+ lookup_value = view_kwargs [self .lookup_field ]
352
+ filter_kwargs = {self .lookup_field : lookup_value }
418
353
return queryset .get (** filter_kwargs )
419
354
420
355
def to_native (self , obj ):
@@ -486,11 +421,6 @@ class HyperlinkedIdentityField(Field):
486
421
lookup_field = 'pk'
487
422
read_only = True
488
423
489
- # These are all deprecated
490
- pk_url_kwarg = 'pk'
491
- slug_field = 'slug'
492
- slug_url_kwarg = None # Defaults to same as `slug_field` unless overridden
493
-
494
424
def __init__ (self , * args , ** kwargs ):
495
425
try :
496
426
self .view_name = kwargs .pop ('view_name' )
@@ -502,22 +432,6 @@ def __init__(self, *args, **kwargs):
502
432
lookup_field = kwargs .pop ('lookup_field' , None )
503
433
self .lookup_field = lookup_field or self .lookup_field
504
434
505
- # These are deprecated
506
- if 'pk_url_kwarg' in kwargs :
507
- msg = 'pk_url_kwarg is deprecated. Use lookup_field instead.'
508
- warnings .warn (msg , DeprecationWarning , stacklevel = 2 )
509
- if 'slug_url_kwarg' in kwargs :
510
- msg = 'slug_url_kwarg is deprecated. Use lookup_field instead.'
511
- warnings .warn (msg , DeprecationWarning , stacklevel = 2 )
512
- if 'slug_field' in kwargs :
513
- msg = 'slug_field is deprecated. Use lookup_field instead.'
514
- warnings .warn (msg , DeprecationWarning , stacklevel = 2 )
515
-
516
- self .slug_field = kwargs .pop ('slug_field' , self .slug_field )
517
- default_slug_kwarg = self .slug_url_kwarg or self .slug_field
518
- self .pk_url_kwarg = kwargs .pop ('pk_url_kwarg' , self .pk_url_kwarg )
519
- self .slug_url_kwarg = kwargs .pop ('slug_url_kwarg' , default_slug_kwarg )
520
-
521
435
super (HyperlinkedIdentityField , self ).__init__ (* args , ** kwargs )
522
436
523
437
def field_to_native (self , obj , field_name ):
@@ -569,27 +483,4 @@ def get_url(self, obj, view_name, request, format):
569
483
if lookup_field is None :
570
484
return None
571
485
572
- try :
573
- return reverse (view_name , kwargs = kwargs , request = request , format = format )
574
- except NoReverseMatch :
575
- pass
576
-
577
- if self .pk_url_kwarg != 'pk' :
578
- # Only try pk lookup if it has been explicitly set.
579
- # Otherwise, the default `lookup_field = 'pk'` has us covered.
580
- kwargs = {self .pk_url_kwarg : obj .pk }
581
- try :
582
- return reverse (view_name , kwargs = kwargs , request = request , format = format )
583
- except NoReverseMatch :
584
- pass
585
-
586
- slug = getattr (obj , self .slug_field , None )
587
- if slug :
588
- # Only use slug lookup if a slug field exists on the model
589
- kwargs = {self .slug_url_kwarg : slug }
590
- try :
591
- return reverse (view_name , kwargs = kwargs , request = request , format = format )
592
- except NoReverseMatch :
593
- pass
594
-
595
- raise NoReverseMatch ()
486
+ return reverse (view_name , kwargs = kwargs , request = request , format = format )
0 commit comments