Beispiel #1
0
def get_groups():
    """
    Returns a pageable JSON collection of Beaker groups.

    The following fields are supported for filtering and sorting:

    ``id``
        ID of the group.
    ``group_name``
        Symbolic name of the group.
    ``display_name``
        Human-friendly display name of the group.
    ``created``
        Timestamp at which the group was created.
    """
    query = Group.query.order_by(Group.group_name)
    # Eager load all group members as an optimisation to avoid N database roundtrips
    query = query.options(joinedload('user_group_assocs'),
                          joinedload('user_group_assocs.user'))
    json_result = json_collection(
        query,
        columns={
            'id': Group.id,
            'group_name': Group.group_name,
            'display_name': Group.display_name,
            'created': Group.created,
            'member.user_name': (Group.dyn_users, User.user_name),
            'member.display_name': (Group.dyn_users, User.display_name),
            'member.email_address': (Group.dyn_users, User.email_address),
            'owner.user_name': (Group.dyn_owners, User.user_name),
            'owner.display_name': (Group.dyn_owners, User.display_name),
            'owner.email_address': (Group.dyn_owners, User.email_address),
        })
    # Need to call .to_json() on the groups because the default __json__
    # representation is the minimal cut-down one, we want the complete
    # representation here (including members and owners etc).
    json_result['entries'] = [g.to_json() for g in json_result['entries']]
    if request_wants_json():
        return jsonify(json_result)
    if identity.current.user:
        grid_add_view_type = 'GroupCreateModal',
        grid_add_view_options = {
            'can_create_ldap': Group.can_create_ldap(identity.current.user),
        }
    else:
        grid_add_view_type = 'null'
        grid_add_view_options = {}
    return render_tg_template(
        'bkr.server.templates.backgrid', {
            'title': u'Groups',
            'grid_collection_type': 'Groups',
            'grid_collection_data': json_result,
            'grid_collection_url': request.path,
            'grid_view_type': 'GroupsView',
            'grid_add_label': 'Create',
            'grid_add_view_type': grid_add_view_type,
            'grid_add_view_options': grid_add_view_options,
        })
Beispiel #2
0
def get_groups():
    """
    Returns a pageable JSON collection of Beaker groups.

    The following fields are supported for filtering and sorting:

    ``group_name``
        Symbolic name of the group.
    ``display_name``
        Human-friendly display name of the group.
    ``created``
        Timestamp at which the group was created.
    """
    query = Group.query.order_by(Group.group_name)
    # Eager load all group members as an optimisation to avoid N database roundtrips
    query = query.options(joinedload('user_group_assocs'),
            joinedload('user_group_assocs.user'))
    json_result = json_collection(query, columns={
        'group_name': Group.group_name,
        'display_name': Group.display_name,
        'created': Group.created,
        'member.user_name': (Group.dyn_users, User.user_name),
        'member.display_name': (Group.dyn_users, User.display_name),
        'member.email_address': (Group.dyn_users, User.email_address),
        'owner.user_name': (Group.dyn_owners, User.user_name),
        'owner.display_name': (Group.dyn_owners, User.display_name),
        'owner.email_address': (Group.dyn_owners, User.email_address),
    })
    # Need to call .to_json() on the groups because the default __json__ 
    # representation is the minimal cut-down one, we want the complete 
    # representation here (including members and owners etc).
    json_result['entries'] = [g.to_json() for g in json_result['entries']]
    if request_wants_json():
        return jsonify(json_result)
    if identity.current.user:
        grid_add_view_type = 'GroupCreateModal',
        grid_add_view_options = {
            'can_create_ldap': Group.can_create_ldap(identity.current.user),
        }
    else:
        grid_add_view_type = 'null'
        grid_add_view_options = {}
    return render_tg_template('bkr.server.templates.backgrid', {
        'title': u'Groups',
        'grid_collection_type': 'Groups',
        'grid_collection_data': json_result,
        'grid_collection_url': request.path,
        'grid_view_type': 'GroupsView',
        'grid_add_label': 'Create',
        'grid_add_view_type': grid_add_view_type,
        'grid_add_view_options': grid_add_view_options,
    })