Esempio n. 1
0
def action_post(request):

    method = request.params.get('_method', None)
    dbh = get_dbhandler()

    if method == 'delete':

        group_ids = [ int(x) for x in request.params.getall('group-ids') ]
        groups = dbh.get_group( group_ids )

        if len(groups) == 0:
            return Response(modal_error)

        return Response(
            modal_delete(
                title = 'Deleting Group(s)',
                content = literal(
                    'You are going to delete the following group(s):'
                    '<ul>' +
                    ''.join( '<li>%s | %s</li>' % (g.name, len(g.users))
                                        for g in groups ) +
                    '</ul>'
                ),
                request = request
            ),
            request = request
        )

    elif method == 'delete/confirm':

        group_ids = [ int(x) for x in request.params.getall('group-ids') ]
        group_names = []
        for group in dbh.get_group( group_ids ):
            group_names.append( group.name )
            dbh.session().delete(group)

        dbh.session().flush()
        request.session.flash(
            ('success', 'Group %s has been deleted successfully' % ','.join( group_names )))

        return HTTPFound( location = request.referrer or request.route_url( 'rhombus.group'))

    raise RuntimeError('FATAL - programming ERROR')
Esempio n. 2
0
def role_action(request):

    method = request.params.get('_method', None)
    dbh = get_dbhandler()

    if request.POST and method == 'add-role':

        roleadd_id = int(request.params.get('roleadd_id'))
        group_id = int(request.params.get('group_id'))

        ek = dbh.EK.get(roleadd_id, dbh.session())
        group = dbh.get_group(group_id)
        ek_key = ek.key
        group_name = group.name

        try:
            group.roles.append( ek )
            dbh.session().flush( [group] )
            request.session.flash(
                ('success', 'Role %s has been added to group %s.' %
                    (ek_key, group_name))
            )


        except exc.IntegrityError:
            request.session.flash(
                ('warning', 'Role %s is already in the group %s.' %
                    (ek_key, group_name))
            )

        return HTTPFound(
                location = request.referrer or request.route_url('rhombus.group'))

    elif request.POST and method == 'delete':

        role_ids = [ int(x) for x in request.params.getall('role-ids') ]
        group_id = int(request.params.get('group_id'))

        eks = [ dbh.EK.get(role_id, dbh.session()) for role_id in role_ids ]


        if len(eks) == 0:
            return Response(modal_error)

        return Response(
            modal_delete(
                title = 'Removing Role(s)',
                content = literal(
                    'You are going to remove the following role(s) from group:'
                    '<ul>' +
                    ''.join( '<li>%s</li>' % ek.key for ek in eks ) +
                    '</ul>'
                ),
                request = request
            ),
            request = request
        )

    elif request.POST and method == 'delete/confirm':

        role_ids = [ int(x) for x in request.params.getall('role-ids') ]
        group_id = int(request.params.get('group_id'))

        eks = [ dbh.EK.get(role_id, dbh.session()) for role_id in role_ids ]
        group = dbh.get_group(group_id)

        removes = []
        for ek in eks:
            group.roles.remove( ek )
            removes.append( ek.key )

        dbh.session.flush([group])
        request.session.flash(
            ('success', 'Role(s) %s has been removed successfully' % '; '.join( removes )))

        return HTTPFound( location = request.referrer or request.route_url( 'rhombus.group'))


    raise RuntimeError('FATAL - programming ERROR')
Esempio n. 3
0
def user_action(request):

    method = request.params.get('_method', None)
    dbh = get_dbhandler()

    if request.POST and method == 'add-member':

        useradd_id = int(request.params.get('useradd_id'))
        group_id = int(request.params.get('group_id'))
        role = request.params.get('useradd_role').upper()

        user = dbh.get_user(useradd_id)
        group = dbh.get_group(group_id)
        user_login = user.login
        group_name = group.name

        try:
            ug = dbh.UserGroup(user, group, role)
            dbh.session().flush( [ug] )
            request.session.flash(
                ('success', 'User %s has been added to group %s as %s.' %
                (user_login, group_name, { 'A': 'an admin', 'M': 'a member'}[role]) )
            )


        except exc.IntegrityError:
            request.session.flash(
                ('warning', 'User %s is already in the group %s.' %
                    (user_login, group_name))
            )

        return HTTPFound(
                location = request.referrer or request.route_url('rhombus.group'))

    elif request.POST and method == 'delete':

        user_ids = [ int(x) for x in request.params.getall('user-ids') ]
        group_id = int(request.params.get('group_id'))

        usergroups = dbh.UserGroup.query(dbh.session()).filter(
            dbh.UserGroup.user_id.in_( user_ids), dbh.UserGroup.group_id == group_id)


        if usergroups.count() == 0:
            return Response(modal_error)

        return Response(
            modal_delete(
                title = 'Removing Member(s)',
                content = literal(
                    'You are going to remove the following user(s) from group:'
                    '<ul>' +
                    ''.join( '<li>%s</li>' % ug.user.render() for ug in usergroups ) +
                    '</ul>'
                ),
                request = request
            ),
            request = request
        )

    elif request.POST and method == 'delete/confirm':

        user_ids = [ int(x) for x in request.params.getall('user-ids') ]
        group_id = int(request.params.get('group_id'))

        usergroups = dbh.UserGroup.query(dbh.session()).filter(
            dbh.UserGroup.user_id.in_( user_ids), dbh.UserGroup.group_id == group_id)

        logins = []
        for ug in usergroups:
            logins.append( ug.user.render() )
            dbh.session().delete( ug )

        dbh.session.flush()
        request.session.flash(
            ('success', 'User(s) %s has been removed successfully' % '; '.join( logins )))

        return HTTPFound( location = request.referrer or request.route_url( 'rhombus.group'))

    raise RuntimeError('FATAL - programming ERROR')