Source code for wagtailapproval.approvalitem

import itertools

from .models import ApprovalStep

[docs]class ApprovalItem: """An Approval menu item, used for building the munu list, including links and all. Objects of this type should be added through the :func:`build_approval_item_list <build_approval_item_list>` signal.""" def __init__(self, title, view_url, edit_url, delete_url, obj, step, typename, uuid): """ :param str title: The title as displayed in the list :param str view_url: The URL to view the item. :param str edit_url: The URL to edit the item. :param str delete_url: The URL to delete the item. :param obj: The item itself. :param ApprovalStep step: The step for this item. :param str typename: The type name of the item. :param uuid.UUID uuid: The UUID for this item, the pk for :class:`ApprovalTicket <wagtailapproval.models.ApprovalTicket>` """ self._title = title self._view_url = view_url self._edit_url = edit_url self._delete_url = delete_url self._obj = obj self._step = step self._typename = typename self._uuid = uuid @property def title(self): return self._title @property def view_url(self): return self._view_url @property def edit_url(self): return self._edit_url @property def delete_url(self): return self._delete_url @property def obj(self): return self._obj @property def step(self): return self._step @property def typename(self): return self._typename @property def uuid(self): return self._uuid
[docs]def get_user_approval_items(user): '''Get an iterable of all items pending for a user's approval. :param User user: A user object whose groups are to be checked for appropriate steps :rtype: Iterable[ApprovalItem] :returns: All the items that this user can approve or reject.''' groups = user.groups.all() steps = ApprovalStep.objects.filter(group__in=groups) return itertools.chain.from_iterable( step.get_items(user) for step in steps)