From 8889ff979b0b7d60e5ac7303c8a62f37453a5a8a Mon Sep 17 00:00:00 2001 From: Thomas Pollet Date: Thu, 22 Aug 2024 15:16:36 +0200 Subject: [PATCH] Fix for unicode PK --- safrs/jsonapi_formatting.py | 5 +++-- safrs/safrs_types.py | 6 +++++- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/safrs/jsonapi_formatting.py b/safrs/jsonapi_formatting.py index ff04eaf..6550321 100755 --- a/safrs/jsonapi_formatting.py +++ b/safrs/jsonapi_formatting.py @@ -72,8 +72,9 @@ def jsonapi_sort(object_query, safrs_object): if sort_attr == "id": if attr is None: if safrs_object.id_type.primary_keys: - attr = getattr(safrs_object, safrs_object.id_type.primary_keys[0]) # todo: composite keys edge case - sort_attr = attr.name + attr = getattr(safrs_object, safrs_object.id_type.primary_keys[0], None) # todo: composite keys edge case + if attr is not None: # might be the case if pk is unicode + sort_attr = attr.name else: continue elif attr is None or sort_attr not in safrs_object._s_jsonapi_attrs: diff --git a/safrs/safrs_types.py b/safrs/safrs_types.py index 5a03364..941f961 100755 --- a/safrs/safrs_types.py +++ b/safrs/safrs_types.py @@ -80,7 +80,11 @@ def get_id(cls, obj): values = [str(getattr(obj, pk.name)) for pk in cls.columns] return cls.delimiter.join(values) - return getattr(obj, cls.primary_keys[0]) + pk = getattr(obj, cls.primary_keys[0], None) + if pk is None: + pks = [ c.name for c in cls.columns[0].table.columns if c.primary_key ] + return cls.delimiter.join(pks) + return pk @classmethod def get_pks(cls, jsonapi_id):