Exemplo n.º 1
0
def user_create(request):
    _ = get_localizer(request)
    
    user_model = UserModel(request.db_session)
    group_model = GroupModel(request.db_session)
    
    factory = FormFactory(_)
    UserCreateForm = factory.make_user_create_form()
    form = UserCreateForm(request.params)
    
    groups = group_model.get_list()
    form.groups.choices = [
        (str(g.group_id), '%s - %s' % (g.group_name, g.display_name)) 
        for g in groups
    ]
    
    if request.method == 'POST':
        check_csrf_token(request)
        
        validate_result = form.validate()
        user_name = request.params['user_name']
        display_name = request.params['display_name']
        password = request.params['password']
        email = request.params['email']
        groups = request.params.getall('groups')
        
        by_name = user_model.get_by_name(user_name)
        if by_name is not None:
            msg = _(u'Username %s already exists') % user_name
            form.user_name.errors.append(msg)
            validate_result = False
            
        by_email = user_model.get_by_email(email)
        if by_email is not None:
            msg = _(u'Email %s already exists') % email
            form.email.errors.append(msg)
            validate_result = False
        
        if validate_result:
            with transaction.manager:
                user_id = user_model.create(
                    user_name=user_name,
                    display_name=display_name,
                    password=password,
                    email=email,
                )
                user_model.update_groups(user_id, map(int, groups))
            
            msg = _(u"User ${user_name} has been created", 
                    mapping=dict(user_name=user_name))
            request.add_flash(msg, 'success')
            return HTTPFound(location=request.route_url('admin.user_list'))
    
    return dict(form=form)
Exemplo n.º 2
0
def group_list(request):
    group_model = GroupModel(request.db_session)
    groups = group_model.get_list()
    return dict(groups=groups)
Exemplo n.º 3
0
def user_edit(request):
    _ = get_localizer(request)
    
    user_model = UserModel(request.db_session)
    group_model = GroupModel(request.db_session)
    
    user_name = request.matchdict['user_name']
    user = user_model.get_by_name(user_name)
    if user is None:
        msg = _(u'User %s does not exists') % user_name
        return HTTPNotFound(msg)
    user_groups = [str(g.group_id) for g in user.groups]
    
    factory = FormFactory(_)
    UserEditForm = factory.make_user_edit_form()
    form = UserEditForm(
        request.params, 
        display_name=user.display_name,
        email=user.email,
        groups=user_groups
    )
    
    groups = group_model.get_list()
    form.groups.choices = [
        (str(g.group_id), '%s - %s' % (g.group_name, g.display_name), ) 
        for g in groups
    ]
    
    if request.method == 'POST':
        check_csrf_token(request)
        
        validate_result = form.validate()
        display_name = request.params['display_name']
        password = request.params['password']
        email = request.params['email']
        groups = request.params.getall('groups')
        
        by_email = user_model.get_by_email(email)
        if by_email is not None and email != user.email:
            msg = _(u'Email %s already exists') % email
            form.email.errors.append(msg)
            validate_result = False
        
        if validate_result:
            with transaction.manager:
                user_model.update_user(
                    user_id=user.user_id,
                    display_name=display_name,
                    email=email,
                )
                if password:
                    user_model.update_password(user.user_id, password)
                user_model.update_groups(user.user_id, map(int, groups))
            
            msg = _(u"User ${user_name} has been updated", 
                    mapping=dict(user_name=user_name))
            request.add_flash(msg, 'success')
            url = request.route_url('admin.user_edit', 
                                    user_name=user.user_name)
            return HTTPFound(location=url)
    
    return dict(form=form, user=user)