def register():
    values = request.get_json()
    required = ['username', 'last_name', 'first_name', 'password', 'email', 'profile_pic', 'gender', 'age']
    if not all(k in values for k in required):
        return 'Missing values', 400
    email = values.get('email')
    username = values.get('username')
    last_name = values.get('last_name')
    first_name = values.get('first_name')
    password = values.get('password')
    gender = values.get('gender')
    age = values.get('age')
    profile_pic = values.get("profile_pic")

    if re.match(r"[^@]+@[^@]+\.[^@]+", email) and len(password) > 4:
        user = User.get_by_email(email)
        user_name = User.get_by_username(username)
        if user_name:
            return response('failed', 'Failed, username already exists', 202)
        if not user:
            token = User(email=email, password=password, first_name=first_name, last_name=last_name,
                         username=username, gender=gender, age=age, profile_pic=profile_pic).save()
            return response_auth('success', 'Successfully registered', token, 201)
        else:
            return response('failed', 'Failed, User already exists, Please sign In', 202)
    return response('failed', 'Missing or wrong email format or password is less than four characters', 202)
def comment(current_user):
    values = request.get_json()
    required = ['comment', 'post_id']
    if not all(k in values for k in required):
        return 'Missing values', 400
    comment = Comments(comment=values.get('comment'), post_id=values.get('post_id'), user_id=current_user.id)
    comment.save()

    message = values.get('comment')
    challenge = Challenge.check_postid(values.get('post_id'))
    if challenge and Challenge.check_join(message, User.getusername(current_user.id)):
        fields = {'user_id': current_user.id,
                  'post_id': values.get('post_id'),
                  'goal': challenge.goal,
                  'start_date': challenge.start_date,
                  'challenge_name': challenge.challenge_name,
                  'challenge_description': challenge.challenge_description,
                  'current_date': datetime.datetime.now().date(),
                  'end_date': challenge.end_date
                  }
        if not Challenge.check_user_joined(current_user.id, values.get('post_id')):
            Challenge.join_challenge(fields)
        else:
            return response('failed', 'already joined', 400)
    return response('success', 'Commented successfully', 200)
def update_user_settings(current_user):
    values = request.get_json()
    required = ['average_weight', 'goal_weight', 'is_diabetic', 'height', 'activity_level']

    if not all(k in values for k in required):
        return 'Missing values', 400
    resp = UserSetting.update(current_user.id, values.get('average_weight'), values.get('goal_weight')
                              , values.get('is_diabetic'), values.get('height'), values.get('activity_level')
                              )

    if resp:
        return response('success', 'successfully updated user settings', 200)
    else:
        return response('failed', 'Failed update', 400)
Exemple #4
0
def internal_server_error(e):
    """
    Return a custom message for a 500 internal error
    :param e: Exception
    :return:
    """
    return response('failed', 'Internal server error', 500)
Exemple #5
0
def route_not_found(e):
    """
    Return a custom 404 Http response message for missing or not found routes.
    :param e: Exception
    :return: Http Response
    """
    return response('failed', 'Endpoint not found', 404)
Exemple #6
0
def method_not_found(e):
    """
    Custom response for methods not allowed for the requested URLs
    :param e: Exception
    :return:
    """
    return response('failed',
                    'The method is not allowed for the requested URL', 405)
def community_request(current_user, user_id):
    """
    api to request to join community
    :param current_user:
    :param user_id:
    :return:
    """
    community = Community(community_id=user_id, user_id=current_user.id)
    community.save()
    return response('success', 'Successfully joined community', 200)
def login():
    values = request.get_json()
    required = ['password', 'email']
    if not all(k in values for k in required):
        return 'Missing values', 400
    email = values.get('email')
    password = values.get('password')
    if re.match(r"[^@]+@[^@]+\.[^@]+", email) and len(password) > 4:
        user = User.query.filter_by(email=email).first()
        if user and bcrypt.check_password_hash(user.password, password):
            data = {
                'username': user.username,
                'fullname': user.first_name + " " + user.last_name,
                'profile_pic': user.profile_pic

            }
            return response_login(data, 'Successfully logged In', user.encode_auth_token(user.id),
                                  200)
        return response('failed', 'User does not exist or password is incorrect', 401)
    return response('failed', 'Missing or wrong email format or password is less than four characters', 401)
def store_steps(current_user, steps):
    values = request.get_json()
    required = ['date']
    if not all(k in values for k in required):
        return 'Missing values', 400
    localTime = values.get('date')
    data = localTime.split('-')
    date = datetime.date(int(data[0]), int(data[1]), int(data[2]))
    step = Steps(user_id=current_user.id, steps_no=steps, date=date)
    if not Steps.update_if_instance_exist(date, current_user.id, steps):
        step.save()

    return response('success', 'Steps added successfully', 200)
Exemple #10
0
def post(current_user):
    """
       create a post
    :return:
    """
    values = request.get_json()
    required = ['description', 'image_url']
    if not all(k in values for k in required):
        return 'Missing values', 400
    description = values.get('description')

    image_url = values.get('image_url')
    userid = current_user.id

    post_item = Post(description, image_url, userid)
    post_id = post_item.save()
    temp = description.lower()
    data = {}
    for word in temp.split():
        if word.startswith("#"):
            if "challenge" in word:
                data['challenge'] = word[1:]
            elif word[1:].startswith("d"):
                data['date'] = word[2:]
            elif word[1:].startswith("g"):
                data['goal'] = word[2:]

    required = ['challenge', 'date', 'goal']
    if all(k in data for k in required):
        end_date = {}
        date = data["date"].split('-')
        end_date['year'] = date[0]
        end_date['month'] = date[1]
        end_date['day'] = date[2]
        challenge = Challenge(user_id=current_user.id, goal=data["goal"], challenge_name=data["challenge"],
                              challenge_description=description, end_date=end_date, post_id=post_id)
        challenge.save()
    return response('success', 'Successfully posted', 200)
Exemple #11
0
def getuser():
    global user_steps
    values = request.get_json()
    required = ['user_id']
    if not all(k in values for k in required):
        return 'Missing values', 400
    user = User.get_by_id(values.get('user_id'))
    count = Community.get_community_count(values.get('user_id'))
    post_count = Post.get_post_count(values.get('user_id'))
    steps = Steps.get_steps(values.get('user_id'), 1)
    for item in steps:
        user_steps = item.steps_no
    if user:
        data = {
            'user_id': user.id,
            'username': user.username,
            'community': count,
            'posts': post_count,
            'steps_today': user_steps
        }
    else:
        return response('failed', 'User Does not exist', 401)
    return jsonify(data), 200
Exemple #12
0
def search(current_user):
    isFollowing = False
    values = request.get_json()
    required = ['username']
    if not all(k in values for k in required):
        return 'Missing values', 400
    user = User.get_by_username(values.get('username'))
    if user:
        community = Community.get_community(current_user.id)
        for person in community:
            if person.community_id == user.id:
                isFollowing = True

        data = {
            'user_id': user.id,
            'username': user.username,
            'community': isFollowing,
            'profile_pic': user.profile_pic
        }
    else:
        return response('failed', 'User Does not exist', 401)

    return jsonify(data), 200
Exemple #13
0
def like(current_user, post_id):
    like = Likes(user_id=current_user.id, post_id=post_id)
    like.save()
    return response('success', 'Successfully liked post', 200)