Exemplo n.º 1
0
def update(user_id, user):
    """
    This function updates an existing person in the people structure

    :param person_id:   Id of the person to update in the people structure
    :param person:      person to update
    :return:            updated person structure
    """
    # Get the person requested from the db into session
    update_user = User.query.filter(User.user_id == user_id).one_or_none()

    # Did we find an existing person?
    if update_user is not None:

        # turn the passed in person into a db object
        schema = UserSchema()
        update = schema.load(user, session=db.session).data

        # Set the id to the person we want to update
        update.user_id = update_user.user_id

        # merge the new object into the old and commit it to the db
        db.session.merge(update)
        db.session.commit()

        # return updated person in the response
        data = schema.dump(update_user).data

        return data, 200

    # Otherwise, nope, didn't find that person
    else:
        abort(404, "User not found for Id: {user_id}".format(user_id=user_id))
Exemplo n.º 2
0
def create(user):
    user_name = user.get("user_name")
    email = user.get("email")
    token = user.get("user_token")
    timezone = user.get("timezone")

    existing_user = (User.query.filter(User.user_name == user_name).filter(
        User.email == email).one_or_none())

    if existing_user is None:
        new_user = User(user_name, email, token, timezone)

        db.session.add(new_user)
        db.session.commit()

        dump_schema = UserSchema(exclude=["user_token"])

        data = dump_schema.dump(new_user)

        return data, 201

    else:
        abort(
            409, "User {user_name} at {email} already exists.".format(
                user_name=user_name, email=email))
Exemplo n.º 3
0
    def post(self):
        # register user endpoint
        data = validate_user(request.get_json())
        if data['ok']:
            data = data['data']

            # check if user exists
            user = User.query.filter_by(email=data['email']).first()
            if user:
                return { "message" : "Email has already been taken"}, 400

            # get password
            data['password'] = flask_bcrypt.generate_password_hash(data['password'])

            # find the role of the user
            role = Role.query.filter_by(name=data['role']).first()
            del data['role']
            
            # Add a new patient to db
            user_schema = UserSchema()
            new_user = user_schema.load(data, session=db.session)

            role.users.append(new_user) # add new user to their role

            db.session.add(role) # add user and role
            db.session.commit()

            return {}, 200
        else:
            return {'message': 'Please check the fields'}, 400
Exemplo n.º 4
0
def cant_play_on_saturdays():
    email = request.json['email']
    weeks = int(request.json['weeks'])
    future = bool(request.json['future'])

    if weeks <= 0 or weeks > 520:
        abort(400)

    user = User.query.get(email)
    if not user:
        abort(404)

    if user.group is not current_user.group:
        abort(404)

    if user.email is not email and not current_user.isGroupOwner:
        abort(401)

    if future:
        user.futureSaturdayAbsentWeeks = weeks
    else:
        user.isSaturdayAbsent = True
        user.saturdayAbsentWeeks = weeks
    db.session.commit()

    """"Insert a log"""
    description = 'Successfully registered Saturday absence for - ' + str(weeks) + ' weeks' + \
        ' for user - ' + user.firstname + ' ' + user.lastname
    log = Log(current_user.email, description)
    db.session.add(log)
    db.session.commit()

    schema = UserSchema()
    json_result = schema.dumps(user)
    return json_result.data
Exemplo n.º 5
0
def want_to_play_on_sundays(email):
    user = User.query.get(email)

    if not user:
        abort(404)

    if user.group is not current_user.group:
        abort(404)

    if user.email is not email and not current_user.isGroupOwner:
        abort(401)

    user.isSundayAbsent = False
    user.sundayAbsentWeeks = 0
    user.futureSundayAbsentWeeks = 0
    db.session.commit()

    """"Insert a log"""
    description = 'Successfully registered wantToPlayOnSundays for user - ' + user.firstname + ' ' + user.lastname
    log = Log(current_user.email, description)
    db.session.add(log)
    db.session.commit()

    schema = UserSchema()
    json_result = schema.dumps(user)
    return json_result.data
Exemplo n.º 6
0
def register():
    """
    Register user
    :return:
    """
    if request.json['password'] != request.json['passwordVerify']:
        return {
            'message': 'data error',
            'errors': {
                'password':
                '******'
            }
        }, 400

    user = User()
    user.password = User.hash(request.json['password'].encode('utf-8'))
    user.email = request.json['email']
    user.first_name = request.json['firstName']
    user.last_name = request.json['lastName']

    db.session.add(user)
    db.session.commit()

    user_schema = UserSchema()

    session['user'] = user_schema.dump(user)

    return {
        'message': 'Check email to validate'
    }, 200, {
        'Access-Control-Allow-Origin': '*'
    }
Exemplo n.º 7
0
def create(user):
    name = user.get("name")
    login = user.get("login")
    password = user.get("password")

    existing_user = (User.query.filter(User.login == login).filter(
        User.name == name).one_or_none())

    if existing_user is None:
        schema = UserSchema()
        new_user = User(id=(int(User.query.all()[-1].id) + 1),
                        name=name,
                        login=login,
                        password=password,
                        token=create_token(),
                        expiration=datetime.now())

        db.session.add(new_user)
        db.session.commit()

        data = schema.dump(new_user).data

        return data, 201
    else:
        abort(409, f"User was exist")
Exemplo n.º 8
0
def create(user):
    """
    This function creates a new person in the people structure
    based on the passed in person data

    :param person:  person to create in people structure
    :return:        201 on success, 406 on person exists
    """
    name = User.get("name")

    existing_user = (User.query.filter(User.name == name).one_or_none())

    # Can we insert this person?
    if existing_user is None:

        # Create a person instance using the schema and the passed in person
        schema = UserSchema()
        new_user = schema.load(user, session=db.session).data

        # Add the person to the database
        db.session.add(new_user)
        db.session.commit()

        # Serialize and return the newly created person in the response
        data = schema.dump(new_user).data

        return data, 201

    # Otherwise, nope, person exists already
    else:
        abort(409, f"Person {name} exists already")
Exemplo n.º 9
0
def update(oid, userDetails):
    """
    Updates an existing user in the user list.

    :param id:    oid of the user to update in the user list
    :param user:   user to update
    :return:       updated user
    """
    app.logger.debug(pformat(userDetails))
    if userDetails.get("id") and userDetails.get("id") != oid:
        abort(400, f"Id {oid} mismatch in path and body")

    # Admin rights can't be set via POST nor PUT calls (#303)
    if "isLZAdmin" or "isMCAdmin" in userDetails:
        abort(400, "Unable to set admin rights in PUT operation.")

    # Does the user exist in user list?
    existing_user = db.session.query(User).filter(User.id == oid).one_or_none()

    # Does user exist?

    if existing_user is not None:
        userDetails["id"] = oid
        schema = UserSchema()
        update_user = schema.load(userDetails, session=db.session)
        db.session.merge(update_user)
        db.session.commit()

        # return the updted user in the response
        data = schema.dump(update_user)
        return data, 200

    # otherwise, nope, deployment doesn't exist, so that's an error
    return abort(404, f"User {oid} not found")
Exemplo n.º 10
0
def view():
    if session.get('user'):
        user_schema = UserSchema()
        api_ready_data = dict_for_api(user_schema.dump(session.get('user')))
        return api_ready_data

    return {'message': 'User not found'}, 404
Exemplo n.º 11
0
def add_users():
    if request.method == "POST":

        username = request.json['username']

        if Users.query.filter_by(username=username).first():
            return make_response({"err": "user already exist"}, 400)

        new_user = Users()
        new_user.email = request.json["email"]
        new_user.username = request.json["username"]
        new_user.fname = request.json["fname"]
        new_user.lname = request.json["lname"]
        new_user.role = request.json["role"]

        db.session.add(new_user)
        db.session.commit()

        token = ''.join(
            random.choices(string.ascii_uppercase + string.digits, k=20))

        user_authentication = UserAuthentication()
        user_authentication.username = username
        user_authentication.token = token
        db.session.add(user_authentication)
        db.session.commit()

        return make_response(
            {
                "user": UserSchema().dump(new_user),
                "token": token
            }, 200)

    all_users = Users.query.all()
    return make_response({"user": UserSchema(many=True).dump(all_users)}, 200)
Exemplo n.º 12
0
def read_one(user_name):
    """
    This function responds to a request for /api/user/{user_name}
    with one matching user from settings

    :param id_user:   Id of user to find
    :return:            user matching id
    """
    # Get the person requested
    user = User.query.filter(User.user_name == user_name).one_or_none()

    # Did we find a person?
    if user is not None:

        # Serialize the data for the response
        schema = UserSchema()
        data = schema.dump(user).data
        return data

    # Otherwise, nope, didn't find that person
    else:
        abort(
            404,
            "User not found for Id: {user_name}".format(user_name=user_name),
        )
Exemplo n.º 13
0
def update(userid, user):
    update_user = User.query.filter(User.userid == userid).one_or_none()

    user_name = user.get("user_name")
    email = user.get("email")

    existing_user = (User.query.filter(User.user_name == user_name).filter(
        User.email == email).one_or_none())

    if update_user is None:
        abort(404, "User not found for Id: {}".format(userid))
    elif existing_user is not None and existing_user.id != userid:
        abort(
            409, "User {user_name} at {email} already exists".format(
                user_name=user_name, email=email))
    else:
        schema = UserSchema()
        update = schema.load(user, session=db.session)

        update.userid = update_user.userid

        db.session.merge(update)
        db.session.commit()

        data = schema.dump(update_user)

        return data, 200
Exemplo n.º 14
0
def read_one_by_id(user_id):
  user = User.query.filter(User.person_id == user_id).one_or_none()
  
  if user is not None:
    user_schema = UserSchema()
    return user_schema.dump(user)
  else:
    abort(404, 'User not found for Id: {user_id}'.format(user_id=user_id))
Exemplo n.º 15
0
 def __init__(self):
     super(UserResource, self).__init__()
     self.user_schema = UserSchema()
     self.users_schema = UserSchema(many=True)
     self.per_page = 20  # TODO:  move fix num to config file
     self.fields = [('username', True), ('password', True), ('email', True),
                    ('role', True)]
     self.token_data = ['username', 'password']
Exemplo n.º 16
0
def get_all_mentees():
    """Return all users who are mentees"""

    mentee_objects = session.query(Users).filter(Users.is_mentee == True).all()
    schema = UserSchema(many=True)
    mentees = schema.dump(mentee_objects)

    return jsonify(mentees.data)
Exemplo n.º 17
0
def read_one_user_by_id(id):
    user = User.query.get(id)

    if user is not None:
        user_schema = UserSchema()
        return user_schema.dump(user)
    else:
        abort(404, f'User not found for id: {id}')
Exemplo n.º 18
0
def read_one(username):
  user = User.query.filter(User.username == username).one_or_none()
  
  if user is not None:
    user_schema = UserSchema()
    return user_schema.dump(user)
  else:
    abort(404, 'User not found for username: {username}'.format(username=username))
Exemplo n.º 19
0
def read_one(user_id):
    user = (User.query.filter(User.id == user_id).one_or_none())

    if user is not None:
        user_schema = UserSchema()
        data = user_schema.dump(user).data
        return data
    else:
        abort(404, f"Not found id: {user_id}")
Exemplo n.º 20
0
def user_show(given_token):
    user = User.query.filter_by(token=given_token).first()
    print(type(user))
    if user is not None:
        user_schema = UserSchema()
        res = user_schema.dump(user)
        print(res)
        return jsonify({'user': res}), 200
    else:
        return "Not Found", 404
Exemplo n.º 21
0
def read_email(user):
    email = user.get("email")
    user = User.query.filter(User.email == email).one_or_none()

    if user is not None:
        user_schema = UserSchema(exclude=["encoded_password"])
        data = user_schema.dump(user)
        return data, 200
    else:
        abort(404, "User record not found for {}.".format(email))
Exemplo n.º 22
0
def read_all(token):
    user = User.query.filter(User.token == token).one_or_none()

    if user is not None:
        users = User.query.order_by(User.id).all()
        user_schema = UserSchema(many=True)
        data = user_schema.dump(users).data
        return data
    else:
        abort(403, f"Not allowo")
Exemplo n.º 23
0
 def create(socket_id, name):
     try:
         user = User(socket_id, name)
         schema = UserSchema()
         db.session.add(user)
         db.session.commit()
         return schema.dump(user)
     except SQLAlchemyError as e:
         db.session.rollback()
         error = str(e.__dict__)
         return error
Exemplo n.º 24
0
def read_token(user):
    user_token = user.get("user_token")

    user = User.query.filter(User.user_token == user_token).one_or_none()

    if user is not None:
        user_schema = UserSchema(exclude=["userid", "user_token"])
        data = user_schema.dump(user)
        return data, 200
    else:
        abort(404, "User not found.")
Exemplo n.º 25
0
def protected():
    user_id = get_jwt_identity()
    user = User.query.get(user_id)

    user_schema = UserSchema()

    notebooks = user_schema.dump(user).data['notebooks']
    numOfNotes = 0
    for notebook in Notebook.query.filter_by(user_id=user.id):
        numOfNotes += Note.query.filter_by(notebook_id=notebook.id).count()

    resp = jsonify({'notebooks': notebooks, 'numOfNotes': numOfNotes})
    return resp, 200
Exemplo n.º 26
0
def read_all():
    '''
    Retrieves a list of all users from the database.
    :return: list
    '''
    # get list of users
    users = User.query.order_by(User.username).all()

    # convert list to a string
    user_schema = UserSchema(many=True)
    data = user_schema.dump(users)

    return data
Exemplo n.º 27
0
def get_all():
    """
    @route: /api/v1/user
    @method: GET
    @return: json string of list of user
    """
    # Create the list of user
    users = User.query.order_by(User.last_name).all()

    # Serialize the data for the response
    user_schema = UserSchema(many=True)
    data = user_schema.dump(users)
    return data
Exemplo n.º 28
0
def read_one_user(userID):

    user = User.query.filter(User.userID == userID).one_or_none()

    if user is not None:

        user_schema = UserSchema()
        data = user_schema.dump(user).data
        return data
    else:
        abort(
            404,
            "User not found for ID: {userID}".format(userID=userID),
        )
Exemplo n.º 29
0
def read_all():
    """
    This function responds to a request for /api/user
    with the complete lists of users

    :return:        json string of list of users
    """
    # Create the list of people from our data
    users = User.query.order_by(User.user_name).all()

    # Serialize the data for the response
    schema = UserSchema(many=True)
    data = schema.dump(users).data
    return data
Exemplo n.º 30
0
def user_profile():
    user = request.user
    issued_books = BookIssue.query.filter_by(uid=user.id)
    return make_response(
        {
            "user": UserSchema().dump(user),
            "issued books": BookIssueSchema(many=True).dump(issued_books)
        }, 200)