websauna.system.core.traversal module

Traversing core logic.

class websauna.system.core.traversal.Resource(request)[source]

Bases: object

Traversable resource in a nested tree hierarchy with basic breadcrumbs support.

All traverable context classes should inherit from this class. Note that this is not a strict requirement, as often anything implementing pyramid.interfaces.ILocation and get_title() will work.

For more information see Traversal.

get_title()[source]

Return human-readable title of this resource.

This is viewed in admin breadcrumbs path, etc.

Return type:str
classmethod make_lineage(parent, child, name, allow_new_parent=False)[source]

Set traversing pointers between the child and the parent resources.

Builds __parent__ and __name__ pointer and sets it on the child resource.

  • If lineage relationship is not lazy and the referenced children is stored in the parent, the lineage must be set when the child is put into parent container.
  • If lineage relationship is lazy and child resource is constructed upon lookup in __item__, the lineage is constructed before the child is returned.
Parameters:
  • parent – Parent resource who children is become part to
  • child – Child resource mutated in place
  • name – Id of the child resource as it will appear in the URL traversing path
  • allow_new_parent – If the child has alraedy a parent assigned, allow override the parent… or basically move an existing resource. You don’t usually want this for in-memory resource and this is for catching bugs.
Return type:

Resource

Returns:

The mutated child resource