예제 #1
0
def create_dept(req, db, context):
    name = get_required_input(req, 'name')
    desc = get_required_input(req, 'desc')
    parent_id = int(get_required_input(req, 'parent_id'))
    
    if db.query(Dept).filter(Dept.name==name, Dept.deleted==0).count() > 0:
        raise DeptAlreadyExistError(name)

    if db.query(Dept).filter(Dept.id==parent_id, Dept.deleted==0).count() == 0:
        raise ParentDeptNotFoundError(parent_id)

    dept = Dept(name=name, desc=desc, parent_id=parent_id)
    db.add(dept)
    db.commit()
    log.debug(dept)
    return obj_to_json(dept, 'dept')
예제 #2
0
def create_dept(req, db, context):
    name = get_required_input(req, 'name')
    desc = get_required_input(req, 'desc')
    parent_id = int(get_required_input(req, 'parent_id'))

    if db.query(Dept).filter(Dept.name == name, Dept.deleted == 0).count() > 0:
        raise DeptAlreadyExistError(name)

    if db.query(Dept).filter(Dept.id == parent_id,
                             Dept.deleted == 0).count() == 0:
        raise ParentDeptNotFoundError(parent_id)

    dept = Dept(name=name, desc=desc, parent_id=parent_id)
    db.add(dept)
    db.commit()
    log.debug(dept)
    return obj_to_json(dept, 'dept')
예제 #3
0
def login(req, db):
    username = get_required_input(req, 'username')
    password = get_required_input(req, 'password')

    if check_login(db, username, password):
        user = db.query(User).filter(User.name==username).first()

        token = generate_token(db, user.id)

        user_role = db.query(UserRoleMembership).filter(UserRoleMembership.user_id==user.id).first()
        if user_role == None:
            raise RoleNotFoundError 
        role = db.query(Role).filter(Role.id==user_role.role_id).first()
        if role == None:
            raise RoleNotFoundError

        return {'success': {'token': token.id, 'role': role.to_dict()}}
예제 #4
0
def create_user(req, db, context):
    name = get_required_input(req, 'username')
    password = get_required_input(req, 'password')
    email = get_input(req, 'email')
    dept_id = int(get_required_input(req, 'dept_id'))
    role_id = get_input(req, 'role_id')

    if db.query(User).filter(User.name==name, User.deleted==0).count() > 0:
        raise UsernameAlreadyExistError(name)

    if db.query(User).filter(User.email==email, User.deleted==0).count() > 0:
        raise EmailAlreadyExistError(email)

    if is_dept_admin_of(context, dept_id) == False:
        raise NotDeptAdminError(dept_id)

    if role_id == None:
        user_role = db.query(Role).filter(Role.name=='普通用户').first()
        role_id = user_role.id
    else:
        role_id = int(role_id)
        operator_role_id = int(context['membership'].role_id)
        if role_id < operator_role_id:
            raise RolePermissionDenyError(role_id)

    try:
        user = User(name=name, password=password, email=email, dept_id=dept_id)
        db.add(user)
        db.flush()
        membership = UserRoleMembership(user_id=user.id, role_id=role_id)
        db.add(membership)
        db.commit()
        log.debug(user)
        return obj_to_json(user, 'user')
    except Exception, e:
        handle_db_error(db, e)