Add to_dict method to ResourceField

This allows to recursively convert ResourceFields to dicts.

Signed-off-by: Felix Matouschek <fmatouschek@redhat.com>
This commit is contained in:
Felix Matouschek 2022-09-12 16:36:39 +02:00
parent e36a91be6b
commit 2630bfaba7
2 changed files with 13 additions and 2 deletions

View File

@ -389,3 +389,15 @@ class ResourceField(object):
def __iter__(self):
for k, v in self.__dict__.items():
yield (k, v)
def to_dict(self):
return self.__serialize(self)
def __serialize(self, field):
if isinstance(field, ResourceField):
return {
k: self.__serialize(v) for k, v in field.__dict__.items()
}
if isinstance(field, (list, tuple)):
return [self.__serialize(item) for item in field]
return field

View File

@ -563,5 +563,4 @@ class TestDynamicClientSerialization(unittest.TestCase):
res = ResourceField(params=params)
self.assertEqual(res["foo"], params["foo"])
self.assertEqual(res["self"], params["self"])
# method will return original object when it doesn't know how to proceed
self.assertEqual(self.client.serialize_body(res), res)
self.assertEqual(self.client.serialize_body(res), params)