Preparers¶
restless.preparers¶
-
class
restless.preparers.
FieldsPreparer
(fields)¶ A more complex preparation object, this will return a given set of fields.
This takes a
fields
parameter, which should be a dictionary of keys (fieldnames to expose to the user) & values (a dotted lookup path to the desired attribute/key on the object).Example:
preparer = FieldsPreparer(fields={ # ``user`` is the key the client will see. # ``author.pk`` is the dotted path lookup ``FieldsPreparer`` # will traverse on the data to return a value. 'user': 'author.pk', })
-
lookup_data
(lookup, data)¶ Given a lookup string, attempts to descend through nested data looking for the value.
Can work with either dictionary-alikes or objects (or any combination of those).
Lookups should be a string. If it is a dotted path, it will be split on
.
& it will traverse through to find the final value. If not, it will simply attempt to find either a key or attribute of that name & return it.Example:
>>> data = { ... 'type': 'message', ... 'greeting': { ... 'en': 'hello', ... 'fr': 'bonjour', ... 'es': 'hola', ... }, ... 'person': Person( ... name='daniel' ... ) ... } >>> lookup_data('type', data) 'message' >>> lookup_data('greeting.en', data) 'hello' >>> lookup_data('person.name', data) 'daniel'
-
prepare
(data)¶ Handles transforming the provided data into the fielded data that should be exposed to the end user.
Uses the
lookup_data
method to traverse dotted paths.Returns a dictionary of data as the response.
-
-
class
restless.preparers.
Preparer
¶ A plain preparation object which just passes through data.
It also is relevant as the protocol subclasses should implement to work with Restless.
-
prepare
(data)¶ Handles actually transforming the data.
By default, this does nothing & simply returns the data passed to it.
-