Example #1
0
 def details(self, member_id, bizplace_ids=[]):
     member = member_store.get(member_id, ['type', 'number'])
     profile = profile_store.get_by(dict(member=member_id))[0]
     contact = contact_store.get_by(dict(id=member_id))[0]
     account = dict(username=user_store.get(member_id, ['username']), password="") if member.type == "individual" else []
     preferences = memberpref_store.get_by(dict(member=member_id), ['theme', 'language'])[0] if member.type == "individual" else []
     memberships = dbaccess.get_member_current_memberships(member_id, bizplace_ids)
     return dict(number=member.number, mtype=member.type, profile=profile, contact=contact, account=account, preferences=preferences, memberships=memberships)
Example #2
0
def get_roles(user_id=None, role_filter=[]):
    """
    role_filter: eg. ['host', 'director']
    returns [{context: 1, label: '<name>', roles: [{role:'<role1>', label:<label1>, order: <int>}, {role:'<role2>', ..}, ...], ...]
    order: <int> higher the order value lower are the permissions to that role
    """
    if user_id is None:
        user_id = env.context.user_id
    ctx_roles = collections.defaultdict(list)
    # TODO : roles should be list dicts containing role names and role labels
    memberships = dbaccess.get_member_current_memberships(user_id)
    member_roles = [('member', membership.bizplace_id) for membership in memberships]
    team_roles = dbaccess.userrole_store.get_by(dict(user_id=user_id), ['role', 'context'], False)
    all_roles = team_roles + member_roles
    for (role, context) in all_roles:
        if not role_filter or role in role_filter:
            label = roledefs.all_roles[role].label
            order = roledefs.ordered_roles.index(role)
            ctx_roles[context].append(dict(label=label, role=role, order=order))
    sorter = lambda d: d['label']
    role_sorter = lambda d: d['order']
    return sorted((dict(label=dbaccess.oid2name(ctx), context=ctx, roles=sorted(roles, key=role_sorter)) \
        for ctx, roles in ctx_roles.items()), key=sorter)