Controllers

class djburger.controllers.List(only_data=True, **kwargs)[source]

Controller based on Django ListView

  1. Get list of objects
  2. Filter list by validated data from user
  3. Optional pagination
Parameters:
  • only_data (bool) – return only filtered queryset if True, all context data otherwise. Use only_data=False with TemplateSerializerFactory.
  • **kwargs – all arguments of ListView.
Returns:

filtered queryset.

Return type:

django.db.models.query.QuerySet

class djburger.controllers.Info(queryset=None, model=None)[source]

Return one object from queryset

  1. Return object filtered by params from URL kwargs (like pk or slug)
    if url-pattern have kwargs.
  2. Return object from validated data if data have key object
    or data have only one key.
  3. Raise exception otherwise.
Parameters:
  • queryset (django.db.models.query.QuerySet) – QuerySet for retrieving object.
  • model (django.db.models.Model) – Model for retrieving object.
Returns:

one object from queryset or model.

Return type:

django.db.models.Model

Raises:
  • ValueError – if can’t select params for queryset filtering.
  • django.http.Http404 – if object does not exist or multiple objects returned
class djburger.controllers.Add(model)[source]

Controller for adding object with validated data.

Parameters:model (django.db.models.Model) – Model for adding object.
Returns:created object.
Return type:django.db.models.Model
class djburger.controllers.Edit(queryset=None, model=None)[source]

Controller for editing objects.

  1. Get object of initialized model by URL’s kwargs.
  2. Set params from validated data.
  3. Update tuple into database.
Parameters:
  • queryset (django.db.models.query.QuerySet) – QuerySet for editing object.
  • model (django.db.models.Model) – Model for editing object.
Returns:

edited object.

Return type:

django.db.models.Model

Raises:

django.http.Http404 – if object does not exist or multiple objects returned

class djburger.controllers.Delete(queryset=None, model=None)[source]

Controller for deleting objects.

Delete object filtered by URL’s kwargs.

Parameters:
  • queryset (django.db.models.query.QuerySet) – QuerySet for deleting object.
  • model (django.db.models.Model) – Model for deleting object.
Returns:

count of deleted objects.

Return type:

int

Raises:

django.http.Http404 – if object does not exist or multiple objects returned

class djburger.controllers.ViewAsController(view, method=None)[source]

Allow use any django view as controller.

  1. For CBV with render_to_response method return context.
  2. Return rendered response otherwise.
Parameters:
  • view (callable) – view.
  • method (str) – optional method which will be forced for request
Returns:

if possible response context or content, response object otherwise.

static patch_view(view)[source]

Patch view for getting context instead of rendered response.

class djburger.controllers.pre(validator, **kwargs)[source]

Decorator for input data validation before subcontroller calling

Parameters:
Raises:

djburger.exceptions.SubValidationError – if pre-validation not passed

class djburger.controllers.post(validator, **kwargs)[source]

Decorator for output data validation before subcontroller calling

Parameters:
Raises:

djburger.exceptions.SubValidationError – if post-validation not passed

djburger.controllers.subcontroller(controller, prevalidator=None, postvalidator=None)[source]

Constructor for subcontrollers If any validation failed, immediately raise SubValidationError.

Parameters:
Raises:

djburger.exceptions.SubValidationError – if any validation not passed