def auth(self, handler, request, action): ## ## If post, handle/reset perm changes if request.method == "POST": existing = RolePermission.assignments(self.instance) assignments = request.POST.getlist('assignment') for e in existing: if "{0}/{1}".format(e.permission, e.role) not in assignments: e.delete() for assignment in assignments: perm, role = assignment.split('/', 1) RolePermission.assign(self.instance, Role(role), Permission(perm)).save() ctx = {'spoke':self} roles = Role.all() permissions = [] ## order roles, permissions (alphabetically?) for perm in Permission.all(): d = dict(perm=perm, roles=[]) perms_per_role = RolePermission.assignments( self.instance).filter( permission=perm.id, ).values_list('role', flat=True) r = [] for role in roles: r.append(dict(role=role, checked=role.id in perms_per_role)) d['roles'] = r permissions.append(d) ctx['roles'] = roles ctx['permissions'] = permissions return handler.template("wheelcms_axle/edit_permissions.html", **ctx)
def Permission(id, name="", description=""): return drolePermission.create(id, name, description)