util.db

Database model utilities for Trustpoint.

Classes

CustomDeleteActionManager

Default manager for CustomDeleteActionModel.

CustomDeleteActionModel

Model that provides the pre_delete() and post_delete() methods to implement custom deletion logic.

CustomDeleteActionQuerySet

Overrides a model's queryset to invoke pre- and post-delete hooks.

Module Contents

class util.db.CustomDeleteActionManager[source]

Bases: django.db.models.Manager[CustomDeleteActionManager.T]

Default manager for CustomDeleteActionModel.

It ensures the CustomDeleteActionQuerySet is the default queryset.

get_queryset()[source]

Return the queryset with individual delete.

Return type:

CustomDeleteActionQuerySet[T, T]

class util.db.CustomDeleteActionModel(*args, **kwargs)[source]

Bases: django.db.models.Model

Model that provides the pre_delete() and post_delete() methods to implement custom deletion logic.

It uses a custom manager to ensure the methods are called both on individual and bulk (queryset) deletes.

objects[source]
class Meta[source]

Metaclass configuration.

abstract = True[source]
pre_delete()[source]

Pre-delete hook for custom logic before actual deletion.

This can for example be used to check if deletion prerequisites are met.

Return type:

None

post_delete()[source]

Post-delete hook for custom logic after actual deletion.

This can for example be used to clean up orphaned related objects. Keep in mind the model is no longer in the database at the time this function is called.

Return type:

None

delete(*args, **kwargs)[source]

Delete the object and run pre_delete() and post_delete() hooks.

Parameters:
  • args (Any)

  • kwargs (Any)

Return type:

tuple[int, dict[str, int]]

class util.db.CustomDeleteActionQuerySet(model=None, query=None, using=None, hints=None)[source]

Bases: django.db.models.QuerySet[CustomDeleteActionQuerySet.MDL, CustomDeleteActionQuerySet.ROW]

Overrides a model’s queryset to invoke pre- and post-delete hooks.

This ensures the pre_delete() and post_delete() methods are called on each object in the queryset.

delete(*args, **kwargs)[source]

Runs pre_delete() on each object, bulk deletes the queryset and runs post_delete() on each object.

Parameters:
  • *args (Any) – Positional arguments passed to super().delete().

  • **kwargs (Any) – Keyword arguments, for reference check, and passed to super().delete().

Returns:

A tuple of:
  1. the total number of objects deleted and

  2. a dictionary with the model name and the count.

Return type:

tuple[int, dict[str, int]]