Source code for pymangal.helpers

import requests as re

# TODO Documentation -- docstrings

[docs]def uri_from_username(api, username): """Returns a URI from a username :param api: An API object :param username: The username for which you want the URI, as a string :returns: The URI as a string, and raises ``ValueError`` if there is no known user, ``TypeError`` if the arguments are not in the correct type. """ # TODO CHECKS!!! if not type(username) in [str, unicode]: raise TypeError("The username should be given as a string.") user_url = api.url + 'user' + "?username__exact=" + username user_request = re.get(user_url, params=api.params) if user_request.status_code == 200 : user_objects = user_request.json()['objects'] if len(user_objects) == 0 : raise ValueError("No user with this name") user_uri = api.suffix + 'user/' + str(user_objects[0]['id']) + '/' # FIXME else what? return user_uri
[docs]def prepare_data_for_patching(api, resource, data): original_owner = data['owner'] data["owner"] = uri_from_username(api, original_owner) return data
[docs]def check_data_from_api(api, resource, data): for k in data.keys(): if api.schemes[resource]['properties'][k]['type'] == 'integer': if not data[k] == None: data[k] = int(data[k]) return data
[docs]def keys_to_uri(api, resource, data): for k in [x for x in data.keys() if not x == 'owner']: if api.field_names.has_key(k): fname = api.field_names[k] else : fname = k if 'URI' in api.schemes[resource]['properties'][k]['description']: if api.schemes[resource]['properties'][k]['type'] == 'array': data[k] = map(lambda x: api.suffix + fname + '/' + x + '/', data[k]) else : data[k] = api.suffix + fname + '/' + data[k] + '/' return data