From 0ba69294887a93bdb2a6372c4e8a59443433ca3e Mon Sep 17 00:00:00 2001 From: zebuline Date: Thu, 27 Feb 2014 10:46:24 +0100 Subject: [PATCH 1/2] fix get_db_prep_value when value is unicode --- uuidfield/fields.py | 4 ++-- uuidfield/tests/tests.py | 10 ++++++++++ 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/uuidfield/fields.py b/uuidfield/fields.py index 08eb269..6210749 100644 --- a/uuidfield/fields.py +++ b/uuidfield/fields.py @@ -111,9 +111,9 @@ def get_db_prep_value(self, value, connection, prepared=False): """ if isinstance(value, uuid.UUID): value = str(value) - if isinstance(value, str): + if isinstance(value, basestring): if '-' in value: - return value.replace('-', '') + value = value.replace('-', '') return value def value_to_string(self, obj): diff --git a/uuidfield/tests/tests.py b/uuidfield/tests/tests.py index 40992da..376e58c 100644 --- a/uuidfield/tests/tests.py +++ b/uuidfield/tests/tests.py @@ -63,3 +63,13 @@ def test_can_use_hyphenated_uuids_in_filter_and_get(self): filtered_obj = AutoUUIDField.objects.filter(uuid=obj_uuid)[0] self.assertEqual(inserted_obj.uuid, obj_uuid) self.assertEqual(filtered_obj.uuid, obj_uuid) + + inserted_obj = AutoUUIDField.objects.get(uuid=str(obj_uuid)) + filtered_obj = AutoUUIDField.objects.filter(uuid=str(obj_uuid))[0] + self.assertEqual(inserted_obj.uuid, obj_uuid) + self.assertEqual(filtered_obj.uuid, obj_uuid) + + inserted_obj = AutoUUIDField.objects.get(uuid=unicode(obj_uuid)) + filtered_obj = AutoUUIDField.objects.filter(uuid=unicode(obj_uuid))[0] + self.assertEqual(inserted_obj.uuid, obj_uuid) + self.assertEqual(filtered_obj.uuid, obj_uuid) From e72d93da3d88cea9b8f0345c4fb5395bad455fcc Mon Sep 17 00:00:00 2001 From: hobbestigrou Date: Wed, 15 Oct 2014 16:55:02 +0200 Subject: [PATCH 2/2] [Core] A correct support of hyphenate option. --- uuidfield/fields.py | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/uuidfield/fields.py b/uuidfield/fields.py index 6210749..1baf0f5 100644 --- a/uuidfield/fields.py +++ b/uuidfield/fields.py @@ -46,13 +46,21 @@ class UUIDField(Field): __metaclass__ = SubfieldBase def __init__(self, version=4, node=None, clock_seq=None, - namespace=None, name=None, auto=False, hyphenate=False, *args, **kwargs): - assert version in (1, 3, 4, 5), "UUID version %s is not supported." % version + namespace=None, name=None, auto=False, hyphenate=False, + *args, **kwargs): + assert version in (1, 3, 4, 5), "UUID version {ver} is not supported."\ + .format(ver=version) self.auto = auto self.version = version self.hyphenate = hyphenate - # We store UUIDs in hex format, which is fixed at 32 characters. - kwargs['max_length'] = 32 + + if hyphenate: + # We store UUIDs in string format, which is fixed at 36 characters. + kwargs['max_length'] = 36 + else: + # We store UUIDs in hex format, which is fixed at 32 characters. + kwargs['max_length'] = 32 + if auto: # Do not let the user edit UUIDs if they are auto-assigned. kwargs['editable'] = False