ucsschool.http_api package

ucsschool.http_api package#

Subpackages#

Submodules#

ucsschool.http_api.auth_backend module#

class ucsschool.http_api.auth_backend.UASImportPAMBackend[source]#

Bases: PAMBackend

Purpose: Make uas-import the default PAM service instead of login

authenticate(request, username=None, password=None, **extra_fields)[source]#

Authenticate using PAM then get the account if it exists else create a new account.

Note

The keyword arguments ‘service’, ‘encoding’, and ‘resetcreds’ can also be passed and will be pulled off the ‘extra_fields’ kwargs.

Parameters:
  • username (str) – The users username. This is a manditory field.

  • password (str) – The users password. This is a manditory field.

  • extra_fields (dict) – Additonal keyword options of any editable field in the user model or arguments in the PAM authenticate method.

Return type:

The Django user object or None if it fails.

ucsschool.http_api.client module#

HTTP API Client

ucsschool.http_api.client.register_resource_client_class(cls)[source]#
ucsschool.http_api.client.get_resource_client_classes()[source]#
ucsschool.http_api.client.register_resource_representation_class(resource_name, cls)[source]#
ucsschool.http_api.client.get_resource_representation_classes(resource_name)[source]#
ucsschool.http_api.client.invalidate_resource_representation_classes_cache()[source]#
exception ucsschool.http_api.client.ApiError(msg, status_code=None)[source]#

Bases: Exception

exception ucsschool.http_api.client.BadRequest(msg, status_code=None)[source]#

Bases: ApiError

HTTP 400

exception ucsschool.http_api.client.PermissionError(msg, status_code=None)[source]#

Bases: ApiError

HTTP 401|403

exception ucsschool.http_api.client.ObjectNotFound(msg, status_code=None)[source]#

Bases: ApiError

HTTP 404

exception ucsschool.http_api.client.ServerError(msg, status_code=None)[source]#

Bases: ApiError

HTTP 5xx

exception ucsschool.http_api.client.ConnectionError(msg, status_code=None)[source]#

Bases: ApiError

Cannot establish / lost connection to server.

exception ucsschool.http_api.client.IllegalURLError(msg, status_code=None)[source]#

Bases: ApiError

URLs returned from API root do not meet expectation.

class ucsschool.http_api.client.ResourceRepresentationIterator(resource_client, paginated_resource_list)[source]#

Bases: object

Iterator for paginated query results.

next()#
class ucsschool.http_api.client.ResourceRepresentation[source]#

Bases: object

Python representations of HTTP-API resources.

To add resources to the Python API create inner classes that 1. subclass _ResourceReprBase 2. use as meta class _ResourceRepresentationMetaClass 3. set a class attribute resource_name that matches the resource path in the HTTP-API

The meta class will register the resource representation class and make it available through Client objects.

client = Client(<username>, <password>, [log level]) client.school.list() # <– from SchoolResource client.userimportjob.create() # <– from UserImportJobResource

class SchoolResource(resource_client, resource)[source]#

Bases: _ResourceReprBase

resource_name = 'schools'#
property roles#

Roles the connected user has in this school.

Returns:

RoleResource objects

Return type:

ResourceRepresentationIterator

property user_imports#

UserImportJobs that ran for this school.

Returns:

UserImportJobResource objects

Return type:

ResourceRepresentationIterator

class RoleResource(resource_client, resource)[source]#

Bases: _ResourceReprBase

resource_name = 'roles'#
class ResultResource(resource_client, resource)[source]#

Bases: _ResourceReprBase

resource_name = 'result'#
class UserImportJobResource(resource_client, resource)[source]#

Bases: _ResourceReprBase

Representation of an import job resource.

job = client.userimportjob.get(job_id)

  • job.status

  • job.result

  • job.log_file

  • job.password_file

  • job.school

  • job.summary_file

resource_name = 'imports/users'#
property log_file#
property password_file#
property school#
property summary_file#
property result#
classmethod get_repr(resource_client, resource)[source]#
class ucsschool.http_api.client.Client(name, password, server=None, version=1, log_level=20, ssl_verify=True, *args, **kwargs)[source]#

Bases: object

HTTP-API import client.

client = Client(username, password) my_schools = client.school.list() my_roles_at_school1 = client.school.get(‘school1’).roles job_id = client.userimportjob.create() client.userimportjob.get(job_id)

UCS@school HTTP API client.

Parameters:
  • name (str) – username for connecting to HTTP-API

  • password (str) – password to use for connecting to HTTP-API

  • server (str) – FQDN of server running the HTTP-API

  • version (str) – HTTP-API version, omit to use latest version

  • log_level (int) – log level, use logging.{INFO,DEBUG,..} or Client.LOG_REQUEST to log API requests, Client.LOG_RESPONSE to log both requests and responses

LOG_REQUEST = 5#
LOG_RESPONSE = 4#
close()[source]#
invalidate_caches()[source]#
property resource_urls#
call_api(method, url_end, data=None, files=None, params=None, **kwargs)[source]#

Call HTTP-API.

Parameters:
  • method (str) – get, post etc

  • url_end (str) – URL path after base URL (https://<server>/api/<version>/<url_end>)

  • data (dict) – payload

  • files (dict) – {‘<key>’: (<filename>, <open file>, <mime type>)}

  • params (dict) – URL parameters

  • kwargs (dict) – additional arguments to pass to request

Returns:

server response

Return type:

dict

Raises:

ApiError

ucsschool.http_api.manage module#