def get_object(self):
queryset = self.get_queryset()
queryset = self.filter_queryset(queryset)
pk = self.kwargs.get("pk")
try:
uuid = UUIDField().to_internal_value(data=pk)
obj = Sources.objects.get(source_uuid=uuid)
if obj:
return obj
except (ValidationError, Sources.DoesNotExist):
pass
try:
int(pk)
obj = get_object_or_404(queryset, **{"pk": pk})
self.check_object_permissions(self.request, obj)
except ValueError:
raise Http404
return obj
def test_should_uuid_convert_string():
if hasattr(serializers, "UUIDField"):
assert_conversion(serializers.UUIDField, graphene.String)
def make_string_validator(cls, settings: ParamSettings):
if settings.regex:
return serializers.RegexField(
settings.regex,
default=settings.default,
max_length=settings.max_length,
min_length=settings.min_length,
)
if settings.format is None:
return serializers.CharField(
default=settings.default,
max_length=settings.max_length,
min_length=settings.min_length,
trim_whitespace=settings.trim_whitespace,
)
if settings.format == "email":
return serializers.EmailField(
default=settings.default,
max_length=settings.max_length,
min_length=settings.min_length,
)
if settings.format == "slug":
return serializers.SlugField(
default=settings.default,
max_length=settings.max_length,
min_length=settings.min_length,
)
if settings.format == "url":
return serializers.URLField(
default=settings.default,
max_length=settings.max_length,
min_length=settings.min_length,
)
if settings.format == "uuid":
return serializers.UUIDField(default=settings.default)
if settings.format == "file_path":
return serializers.FilePathField(
default=settings.default,
path=settings.path,
match=settings.match,
recursive=settings.recursive,
allow_files=settings.allow_files,
allow_folders=settings.allow_folders,
)
if settings.format == "ipv6":
return serializers.IPAddressField(default=settings.default, protocol="IPv6")
if settings.format == "ipv4":
return serializers.IPAddressField(default=settings.default, protocol="IPv4")
if settings.format == "ip":
return serializers.IPAddressField(default=settings.default, protocol="both")