Repository URL to install this package:
|
Version:
0.24.7.dev0 ▾
|
# Copyright (c) 2015 Docker, Inc. All rights reserved.
from rest_framework import routers
class LookupRegexPatchedSimpleRouter(routers.SimpleRouter):
"""
There's a bug in DRF's router when specifying the lookup_url_kwarg and the lookup_field
The router does not handle using both properly
"""
def get_lookup_regex(self, viewset, lookup_prefix=''):
"""
"""
base_regex = '(?P<{lookup_prefix}{lookup_field}>{lookup_value})'
# Use `pk` as default field, unset set. Default regex should not
# consume `.json` style suffixes and should break at '/' boundaries.
lookup_url_kwarg = getattr(viewset, 'lookup_url_kwarg')
if lookup_url_kwarg:
lookup_field = lookup_url_kwarg
else:
lookup_field = getattr(viewset, 'lookup_field', 'pk')
lookup_value = getattr(viewset, 'lookup_value_regex', '[^/.]+')
return base_regex.format(
lookup_prefix=lookup_prefix,
lookup_field=lookup_field,
lookup_value=lookup_value
)