def set_context(id_or_username, context_id=0): """ user_id: user.id name: name of the current user id: context_id current_roles: {context1: { ctx: context_id, ctx_label: <context-label>, ctx_roles: ( {name: <role-name>, order: <role-order>, label: <role-label>}, {name: <role-name>, order: <role-order>, label: <role-label>}, .. ), role_names: (<role-name1>, <role-name2>, <role-name3>, ..) } context2: {..}, .. } """ if isinstance(id_or_username, basestring): user = user_store.get_one_by(dict(username=id_or_username)) else: user = user_store.get(id_or_username) env.context.user_id = user.id env.context.roles = rolelib.get_roles(user.id) current_roles = {} for role in env.context.roles: context = role['context'] current_roles[context] = commonlib.helpers.odict(ctx=context, ctx_label=role['label']) current_roles[context]['ctx_roles'] = \ tuple(dict(name=ctx_role['role'], order=ctx_role['order'], label=ctx_role['label']) for ctx_role in role['roles']) current_roles[context]['role_names'] = set(ctx_role['role'] for ctx_role in role['roles']) env.context.current_roles = current_roles env.context.current_perms = rolelib.permissions_by_current_roles() try: env.context.name = member_store.get(env.context.user_id, fields=['name']) except: env.context.name = user.username env.context.id = context_id
def test_assign_role(): role_data = get_role_data() rolelib.new_roles(**role_data) for role_dict in rolelib.get_roles(role_data['user_id']): if role_dict['context'] == role_data['context']: break assert set(role_data['roles']).issubset([role['role'] for role in role_dict['roles']]) == True env.context.pgcursor.connection.commit()
def list(self, owner=None): """ returns list of bizplace info dicts """ if not owner: owner = env.context.user_id roles = env.context.roles else: roles = rolelib.get_roles(owner) my_bizplace_ids = set(role.context for role in roles if role.context) result = dbaccess.list_bizplaces(my_bizplace_ids) #DB returns country numeric code, which needs to be replaced by label #before it is returned for rec in result: rec['country'] = static.countries_map[rec['country']] return result