oioioi.base.menu

Module Contents

Classes

OrderedRegistry

Maintains a collection of values ordered by a separate key.

MenuItem

Used to store single menu entry.

MenuRegistry

Maintains a collection of menu items.

Attributes

class oioioi.base.menu.OrderedRegistry[source]

Bases: object

Maintains a collection of values ordered by a separate key.

register(value, order=sys.maxsize)[source]
unregister(value)[source]
__iter__()[source]
__len__()[source]
register_decorator(order=sys.maxsize)[source]
class oioioi.base.menu.MenuItem(name, text, url_generator, condition=None, attrs=None, order=sys.maxsize)[source]

Bases: object

Used to store single menu entry.

Parameters
  • name – a short identifier, for example used to find a matching icon etc.

  • text – text to display

  • url_generator (fun: request → str) – generates menu link URL

  • order (int) – value determining the order of items in menu

  • condition (oioioi.base.permissions.Condition) – decides if the item should be shown

class oioioi.base.menu.MenuRegistry(text=None, condition=None, show_icons=False)[source]

Bases: object

Maintains a collection of menu items.

Parameters
_get_all_registered_items(request)[source]
register(name, text, url_generator, condition=None, attrs=None, order=sys.maxsize)[source]

Registers a new menu item.

Menu items should be registered in views.py of Django apps.

register_decorator(text, url_generator, condition=None, attrs=None, order=sys.maxsize)[source]

Decorator for a view which registers a new menu item. It accepts the same arguments as the MenuRegistry.register(), except for name, which is inferred from the view function name (‘_view’ suffix is stripped). condition is combined with the condition taken from the view attribute of the same name (assigned for example by oioioi.base.permissions.enforce_condition()). condition parameter influences only on visibility of menu entry but not on permission to see the page.

register_generator(name, items_generator)[source]

Registers a new menu items generator.

Parameters
  • name – a short identifier

  • items_generator (fun: request → [MenuItem]) – generates list of menu items

unregister(name)[source]

Unregisters a menu item.

Does nothing if not found.

unregister_generator(name)[source]

Unregisters a menu items generator.

Does nothing if not found.

template_context(request)[source]

Returns a list of items to pass to a template for rendering.

is_anything_accessible(request)[source]

Returns whether any registered MenuItem is accessible in the given request

oioioi.base.menu.menu_registry[source]
oioioi.base.menu.account_menu_registry[source]
oioioi.base.menu.side_pane_menus_registry[source]
oioioi.base.menu.personal_menu_registry[source]