Exemplo n.º 1
0
def edit_user(user_id):
    user = User.query.get_or_404(user_id)

    user_schema = User.from_json(json.loads(request.data.decode('utf-8')), partial=True)

    if user_schema.errors:
        return {'errors': user_schema.errors}, 400

    if 'group_id' in user_schema.data:
        group = Group.query.filter(Group.id == user_schema.data['group_id']).first()
        if not group:
            return {'errors': {'group': 'Group with this id does not exist'}}, 400

    if 'email' in user_schema.data:
        email_duplicate_user = User.query.filter(User.email == user_schema.data['email']).first()

        if email_duplicate_user:
            return {'errors': {'email': 'User with this email is already exists'}}, 400

    for field, value in user_schema.data.items():
        if hasattr(user, field):
            setattr(user, field, value)

    db.session.commit()

    return user, 200
Exemplo n.º 2
0
def add_user():
    user_schema = User.from_json(json.loads(request.data.decode('utf-8')))

    if user_schema.errors:
        return {'errors': user_schema.errors}, 400

    email_duplicate_user = User.query.filter(User.email == user_schema.data['email']).first()

    if email_duplicate_user:
        return {'errors': {'email': 'User with this email is already exists'}}, 400

    group = Group(name=str(uuid.uuid4()))
    db.session.add(group)
    db.session.commit()

    user = User(**user_schema.data)
    user.group = group
    db.session.add(user)
    db.session.commit()

    return user, 201