Esempio n. 1
0
def get_single_user(public_id):
    error = None
    message = None
    success = False
    results = None

    user = models.User.query.filter_by(public_id=public_id,
                                       active=True,
                                       secret_code=None).first()

    if not user:
        error = 'User not found'
        return jsonify({
            'success': success,
            'error': error
        }), util.http_status_code('BAD_REQUEST')

    success = True
    results = schema_user.user_schema.dump(user)

    return jsonify({
        'success': success,
        'data': results,
        'message': message
    }), util.http_status_code('SUCCESS')
Esempio n. 2
0
def delete_user(public_id):
    error = None
    message = None
    success = False
    results = None

    user = models.User.query.filter_by(public_id=public_id,
                                       active=True).first()

    if not user:
        error = 'User not found'
        return jsonify({
            'success': success,
            'error': error
        }), util.http_status_code('BAD_REQUEST')

    user.active = False

    db.session.commit()

    success = True
    message = 'User successfully deleted'

    return jsonify({
        'success': success,
        'data': results,
        'message': message
    }), util.http_status_code('NO_CONTENT')
Esempio n. 3
0
def password_reset_confirm():
    error = None
    message = None
    success = False
    results = None

    if request.is_json:
        try:
            data = request.get_json()

            if not data:
                error = 'Json data is missen'
                return jsonify({
                    'success': success,
                    'error': error
                }), util.http_status_code('BAD_REQUEST')

        except Exception as e:
            error = 'Json data is missen'
            return jsonify({
                'success': success,
                'error': error
            }), util.http_status_code('BAD_REQUEST')

        try:
            clean_data = schema_user.user_password_change_schema.load(data)

            user = models.User.query.filter_by(email=clean_data['email'],
                                               active=True).first()

            if not user:
                error = 'User not found'
                return jsonify({
                    'success': success,
                    'error': error
                }), util.http_status_code('BAD_REQUEST')

            user.password = util.hash_password(clean_data['password'])

            db.session.commit()

            message = 'User password successfully updated, you can now login'
            success = True

            return jsonify({
                'success': success,
                'data': results,
                'message': message
            }), util.http_status_code('SUCCESS')

        except ValidationError as e:
            error = e.normalized_messages()
    else:
        error = "Json data is required"

    return jsonify({
        'success': success,
        'error': error
    }), util.http_status_code('BAD_REQUEST')
Esempio n. 4
0
def password_reset():
    error = None
    message = None
    success = False
    results = None

    if request.is_json:
        try:
            data = request.get_json()

            if not data:
                error = 'Json data is missen'
                return jsonify({
                    'success': success,
                    'error': error
                }), util.http_status_code('BAD_REQUEST')

        except Exception as e:
            error = 'Json data is missen'
            return jsonify({
                'success': success,
                'error': error
            }), util.http_status_code('BAD_REQUEST')

        try:
            clean_data = schema_user.user_email_schema.load(data)

            user = models.User.query.filter_by(email=clean_data['email'],
                                               active=True).first()

            if not user:
                error = 'User not found'
                return jsonify({
                    'success': success,
                    'error': error
                }), util.http_status_code('BAD_REQUEST')

            email.password_reset_email(user)

            message = 'Check your email for password reset secret code'
            success = True

            return jsonify({
                'success': success,
                'data': results,
                'message': message
            }), util.http_status_code('SUCCESS')

        except ValidationError as e:
            error = e.normalized_messages()
    else:
        error = "Json data is required"

    return jsonify({
        'success': success,
        'error': error
    }), util.http_status_code('BAD_REQUEST')
Esempio n. 5
0
def account_confirm():
    error = None
    message = None
    success = False
    results = None

    try:
        data = request.get_json()

        if not data:
            error = {'secret_code': 'Json data is missen'}
            return jsonify({
                'success': success,
                'error': error
            }), util.http_status_code('BAD_REQUEST')

    except Exception as e:
        error = {'secret_code': 'Json data is missen'}
        return jsonify({
            'success': success,
            'error': error
        }), util.http_status_code('BAD_REQUEST')

    if not data:
        error = {'secret_code': 'This is a required field'}
        return jsonify({
            'success': success,
            'error': error
        }), util.http_status_code('BAD_REQUEST')

    secret_code = data['secret_code']

    user = models.User.query.filter_by(secret_code=secret_code,
                                       active=False).first()

    if not user:
        error = {
            'secret_code': 'Invalid secret code or user already activated'
        }
        return jsonify({
            'success': success,
            'error': error
        }), util.http_status_code('BAD_REQUEST')

    user.active = True
    user.secret_code = None
    db.session.commit()
    message = 'User account is activated, you can now login'
    success = True

    return jsonify({
        'success': success,
        'data': results,
        'message': message
    }), util.http_status_code('SUCCESS')
Esempio n. 6
0
def signup():
    error = None
    message = None
    success = False
    results = None

    data = request.get_json()

    if not data:
        error = {'email': 'Json data is required'}
        return jsonify({
            'success': success,
            'error': error
        }), util.http_status_code('BAD_REQUEST')

    try:
        clean_data = schema_user.user_schema.load(data)

        user = models.User.query.filter_by(email=clean_data['email']).first()

        if user:
            error = {'email': 'User already exist'}
            return jsonify({
                'success': success,
                'error': error
            }), util.http_status_code('BAD_REQUEST')

        password = clean_data['password']
        hash_pwd = util.hash_password(password)

        new_user = models.User(first_name=clean_data.get('first_name', None),
                               last_name=clean_data.get('last_name', None),
                               email=clean_data.get('email', None),
                               password=hash_pwd)
        email.account_comfirmation_email(new_user)

        success = True
        message = 'Account activation code sent to your email'

        return jsonify({
            'success': success,
            'data': results,
            'message': message
        }), util.http_status_code('CREATED')

    except ValidationError as e:
        error = e.normalized_messages()

    return jsonify({
        'success': success,
        'error': error
    }), util.http_status_code('BAD_REQUEST')
Esempio n. 7
0
def create_todo(public_id):
    error = None
    message = None
    success = False
    results = None

    data = request.get_json()

    if not data:
        error = {'title': 'Json data is required'}
        return jsonify({
            'success': success,
            'error': error
        }), util.http_status_code('BAD_REQUEST')

    try:
        clean_data = schema_todo.todo_schema.load(data)

        user = models.User.query.filter_by(public_id=public_id,
                                           active=True).first()

        if not user:
            error = {'title': 'User not found'}
            return jsonify({
                'success': success,
                'error': error
            }), util.http_status_code('BAD_REQUEST')

        new_todo = models.Todo(title=clean_data['title'],
                               created_by=user.public_id)
        db.session.add(new_todo)
        db.session.commit()

        success = True
        message = 'Todo created successfully'
        results = schema_todo.todo_schema.dump(new_todo)

        return jsonify({
            'success': success,
            'data': results,
            'message': message
        }), util.http_status_code('CREATED')

    except ValidationError as e:
        error = e.normalized_messages()

    return jsonify({
        'success': success,
        'error': error
    }), util.http_status_code('BAD_REQUEST')
Esempio n. 8
0
def toggle_todo_done(public_id, todo_id):
    error = None
    message = None
    success = False
    results = None

    if not public_id and not todo_id:
        error = {'general': 'user public_id and todo_id are required'}
        return jsonify({
            'success': success,
            'error': error
        }), util.http_status_code('BAD_REQUEST')

    user = models.User.query.filter_by(public_id=public_id,
                                       active=True).first()

    if not user:
        error = {'general': 'Invalid public_id'}
        return jsonify({
            'success': success,
            'error': error
        }), util.http_status_code('BAD_REQUEST')

    todo = models.Todo.query.filter_by(id=todo_id,
                                       created_by=user.public_id).first()

    if not todo:
        error = {'general': 'Todo not found'}
        return jsonify({
            'success': success,
            'error': error
        }), util.http_status_code('BAD_REQUEST')

    if todo.done:
        todo.done = False
    else:
        todo.done = True

    db.session.commit()
    results = schema_todo.todo_schema.dump(todo)
    success = True

    return jsonify({
        'success': success,
        'data': results,
        'message': message
    }), util.http_status_code('SUCCESS')
Esempio n. 9
0
def delete_todo(public_id, todo_id):
    error = None
    message = None
    success = False
    results = None

    if not public_id and not todo_id:
        error = {'general': 'user public_id and todo_id are required'}
        return jsonify({
            'success': success,
            'error': error
        }), util.http_status_code('BAD_REQUEST')

    user = models.User.query.filter_by(public_id=public_id,
                                       active=True).first()

    if not user:
        error = {'general': 'Invalid public_id'}
        return jsonify({
            'success': success,
            'error': error
        }), util.http_status_code('BAD_REQUEST')

    todo = models.Todo.query.filter_by(id=todo_id,
                                       created_by=user.public_id).first()

    if not todo:
        error = {'general': 'Todo not found'}
        return jsonify({
            'success': success,
            'error': error
        }), util.http_status_code('BAD_REQUEST')

    db.session.delete(todo)
    db.session.commit()
    success = True
    message = "Todo deleted successfully!!!"

    return jsonify({
        'success': success,
        'data': results,
        'message': message
    }), util.http_status_code('NO_CONTENT')
Esempio n. 10
0
def update_profile_pic(public_id):
    error = None
    message = None
    success = False
    results = None

    if not request.files:
        error = {'server': 'Form data is required'}
        return jsonify({
            'success': success,
            'error': error
        }), util.http_status_code('BAD_REQUEST')

    if len(request.files) > 1:
        error = {'profile_pic': 'Only a single image can be updated'}
        return jsonify({
            'success': success,
            'error': error
        }), util.http_status_code('BAD_REQUEST')

    if not request.files.get('profile_pic', None):
        error = {'profile_pic': 'This is a required field'}
        return jsonify({
            'success': success,
            'error': error
        }), util.http_status_code('BAD_REQUEST')

    user = models.User.query.filter_by(public_id=public_id,
                                       active=True,
                                       secret_code=None).first()

    if not user:
        error = {'server': 'Invalid user'}
        return jsonify({
            'success': success,
            'error': error
        }), util.http_status_code('BAD_REQUEST')

    file = request.files['profile_pic']
    picture_path = util.save_picture(file, user)

    if picture_path == None:
        error = {'profile_pic': 'Invalid file extension'}
        return jsonify({
            'success': success,
            'error': error
        }), util.http_status_code('BAD_REQUEST')

    user.profile_pic = picture_path
    db.session.commit()

    success = True
    message = 'Profile pic successfully updated'
    results = schema_user.user_schema.dump(user)

    return jsonify({
        'success': success,
        'data': results,
        'message': message
    }), util.http_status_code('SUCCESS')
Esempio n. 11
0
def get_all_users():
    error = None
    message = None
    success = False
    results = None

    users = models.User.query.filter_by(active=True, secret_code=None).all()

    if not users:
        error = 'User not found'
        return jsonify({
            'success': success,
            'error': error
        }), util.http_status_code('BAD_REQUEST')

    success = True
    results = schema_user.user_schemas.dump(users)

    return jsonify({
        'success': success,
        'data': results,
        'message': message
    }), util.http_status_code('SUCCESS')
Esempio n. 12
0
def get_all_user_todos(public_id):
    error = None
    message = None
    success = False
    results = None

    if not public_id:
        error = {'general': 'user public_id is required'}
        return jsonify({
            'success': success,
            'error': error
        }), util.http_status_code('BAD_REQUEST')

    user = models.User.query.filter_by(public_id=public_id,
                                       active=True).first()

    if not user:
        error = {'general': 'Invalid public_id'}
        return jsonify({
            'success': success,
            'error': error
        }), util.http_status_code('BAD_REQUEST')

    todos = user.todos

    if len(todos) == 0:
        message = 'No Todo Available'

    results = schema_todo.todo_schemas.dump(todos)
    success = True

    return jsonify({
        'success': success,
        'data': results,
        'message': message
    }), util.http_status_code('SUCCESS')
Esempio n. 13
0
def password_reset_code_validation():
    error = None
    message = None
    success = False
    results = None

    if request.is_json:
        try:
            data = request.get_json()

            if not data:
                error = 'Json data is missen'
                return jsonify({
                    'success': success,
                    'error': error
                }), util.http_status_code('BAD_REQUEST')

        except Exception as e:
            error = 'Json data is missen'
            return jsonify({
                'success': success,
                'error': error
            }), util.http_status_code('BAD_REQUEST')

        if not data.get('secret_code'):
            error = {'secret_code': 'This is a required field'}
            return jsonify({
                'success': success,
                'error': error
            }), util.http_status_code('BAD_REQUEST')

        try:
            user = models.User.query.filter_by(secret_code=data['secret_code'],
                                               active=True).first()
        except Exception as e:
            pass

        if not user:
            error = 'User not found'
            return jsonify({
                'success': success,
                'error': error
            }), util.http_status_code('BAD_REQUEST')

        user.secret_code = None
        db.session.commit()

        message = 'Secret code valid'
        success = True
        results = schema_user.user_schema.dump(user)

        return jsonify({
            'success': success,
            'data': results,
            'message': message
        }), util.http_status_code('SUCCESS')

    else:
        error = "Json data is required"

    return jsonify({
        'success': success,
        'error': error
    }), util.http_status_code('BAD_REQUEST')
Esempio n. 14
0
def update_user_bio(public_id):
    error = None
    message = None
    success = False
    results = None

    if request.is_json:
        try:
            data = request.get_json()

            if not data:
                error = 'Json data is missen'
                return jsonify({
                    'success': success,
                    'error': error
                }), util.http_status_code('BAD_REQUEST')

        except Exception as e:
            error = 'Json data is missen'
            return jsonify({
                'success': success,
                'error': error
            }), util.http_status_code('BAD_REQUEST')

        try:
            clean_data = schema_user.user_bio_schema.load(data)

            user = models.User.query.filter_by(public_id=public_id,
                                               active=True,
                                               secret_code=None).first()

            if not user:
                error = 'User not found'
                return jsonify({
                    'success': success,
                    'error': error
                }), util.http_status_code('BAD_REQUEST')

            if clean_data.get('bio'):
                user.bio = clean_data['bio']

            if clean_data.get('location'):
                user.location = clean_data['location']

            if clean_data.get('website'):
                user.website = clean_data['website']

            db.session.commit()

            message = 'User bio successfully updated'
            success = True
            results = schema_user.user_schema.dump(user)

            return jsonify({
                'success': success,
                'data': results,
                'message': message
            }), util.http_status_code('SUCCESS')

        except ValidationError as e:
            error = e.normalized_messages()
    else:
        error = "Json data is required"

    return jsonify({
        'success': success,
        'error': error
    }), util.http_status_code('BAD_REQUEST')
Esempio n. 15
0
def login():
    error = None
    message = None
    success = False
    results = None

    if request.is_json:
        try:
            data = request.get_json()

            if not data:
                error = {'email': 'Json data is missen'}
                return jsonify({
                    'success': success,
                    'error': error
                }), util.http_status_code('BAD_REQUEST')

        except Exception as e:
            error = {'email': 'Json data is missen'}
            return jsonify({
                'success': success,
                'error': error
            }), util.http_status_code('BAD_REQUEST')

        try:
            clean_data = schema_user.login_schema.load(data)

            user = models.User.query.filter_by(email=clean_data['email'],
                                               active=True,
                                               secret_code=None).first()

            if not user:
                error = {'email': 'User not found'}
                return jsonify({
                    'success': success,
                    'error': error
                }), util.http_status_code('BAD_REQUEST')

            if not util.verify_password(user, clean_data['password']):
                error = {'password': '******'}
                return jsonify({
                    'success': success,
                    'error': error
                }), util.http_status_code('BAD_REQUEST')

            user_token = token.generate_token(user)
            message = 'User successfully login'
            success = True
            results = schema_user.user_schema.dump(user)
            results['token'] = user_token

            return jsonify({
                'success': success,
                'data': results,
                'message': message
            }), util.http_status_code('SUCCESS')

        except ValidationError as e:
            error = e.normalized_messages()
    else:
        error = {'email': "Json data is required"}

    return jsonify({
        'success': success,
        'error': error
    }), util.http_status_code('BAD_REQUEST')
Esempio n. 16
0
def update_todo(public_id, todo_id):
    error = None
    message = None
    success = False
    results = None

    if not public_id and not todo_id:
        error = {'general': 'user public_id and todo_id are required'}
        return jsonify({
            'success': success,
            'error': error
        }), util.http_status_code('BAD_REQUEST')

    user = models.User.query.filter_by(public_id=public_id,
                                       active=True).first()

    if not user:
        error = {'general': 'Invalid public_id'}
        return jsonify({
            'success': success,
            'error': error
        }), util.http_status_code('BAD_REQUEST')

    todo = models.Todo.query.filter_by(id=todo_id,
                                       created_by=user.public_id).first()

    if not todo:
        error = {'general': 'Todo not found'}
        return jsonify({
            'success': success,
            'error': error
        }), util.http_status_code('BAD_REQUEST')

    data = request.get_json()

    if not data:
        error = {'title': 'Json data is required'}
        return jsonify({
            'success': success,
            'error': error
        }), util.http_status_code('BAD_REQUEST')

    try:
        clean_data = schema_todo.todo_schema.load(data)
        todo.title = clean_data.get('title', todo.title)

        db.session.commit()
        results = schema_todo.todo_schema.dump(todo)
        success = True
        message = "Update was successful"

        return jsonify({
            'success': success,
            'data': results,
            'message': message
        }), util.http_status_code('SUCCESS')

    except ValidationError as e:
        error = e.normalized_messages()
        return jsonify({
            'success': success,
            'error': error
        }), util.http_status_code('BAD_REQUEST')