Source code for yawf.allowed

# -*- coding: utf-8 -*-
from yawf import get_workflow_by_instance


[docs]def get_allowed(sender, obj): workflow = get_workflow_by_instance(obj) obj_state = getattr(obj, workflow.state_attr_name) check_result = dict( (c, c(obj, sender)) for c in workflow.get_checkers_by_state(obj_state)) messages = [] for checker, message in workflow.get_available_messages(obj_state): if checker(obj, sender, cache=check_result): spec = workflow.get_message_spec(message) messages.append({'id': spec.id, 'title': unicode(spec), 'rank': spec.rank}) resources = [] for resource in workflow.get_available_resources(obj_state): if resource.permission_checker(obj, sender, cache=check_result): resources.append( { 'id': resource.id, 'description': resource.description, 'slug': resource.slug, }) return {'allowed_messages': messages, 'allowed_resources': resources}