예제 #1
0
def _profile():

    user_id = current_user.id
    form = ProfileForm()
    form.periodicity.choices = [(p.name, p.value) for p in ReportPeriodicity]
    form.password.render_kw = {'placeholder': 'YOUR OLD PASSWORD'}

    if request.method == 'POST' and form.validate_on_submit():
        new_data = get_modified_data(form)
        if new_data is not {}:
            try:
                r = put_request_retry(users_endpoint(), user_id, new_data)
                code = r.status_code
                if code != 204:
                    return abort(code)
            except requests.exceptions.RequestException as err:
                print(err)
                return abort(503)

        new_password = form.password.data
        if new_password:
            current_user.set_password(new_password)
            db.session.commit()

    try:
        r = get_request_retry(users_endpoint(), user_id)

        code = r.status_code
        if code == 200:

            user = r.json()
            form.email.data = user['email']
            form.firstname.data = user['firstname']
            form.lastname.data = user['lastname']
            form.age.data = user['age']
            form.weight.data = user['weight']
            form.max_hr.data = user['max_hr']
            form.rest_hr.data = user['rest_hr']
            form.vo2max.data = user['vo2max']
            form.periodicity.data = user['report_periodicity']

            return render_template("profile.html", form=form)
        else:
            return abort(code)

    except requests.exceptions.RequestException as err:
        print(err)
        return abort(503)

    return abort(400)
예제 #2
0
def try_create_user(new_user, params):
    try:
        r = post_request_retry(users_endpoint(), params=params)
        code = r.status_code
        if code == 204:
            login_user(new_user)
            return redirect(url_for('home.index'))
        else:
            return abort_create_user(new_user, code)
    except requests.exceptions.RequestException as err:
        print(err)
        return abort_create_user(new_user, 503)
예제 #3
0
def try_delete_user(user):
    try:
        r = delete_request_retry(users_endpoint(), user.get_id())
        code = r.status_code
        if code == 204:
            db.session.delete(user)
            db.session.commit()
            return redirect(url_for('home.index'))
        else:
            return abort(code)
    except requests.exceptions.RequestException as err:
        print(err)
        return abort(503)
예제 #4
0
def index():

    strava_auth_url = _strava_auth_url(home.app.config)
    average_speed = None
    runs = None

    if current_user is not None and hasattr(current_user, 'id'):

        user_id = current_user.id

        # Average Speed
        try:
            r = get_request_retry(users_endpoint(user_id), 'average')
            code = r.status_code
            if code == 200:
                result = r.json()
                average_speed = result['average_speed']
            else:
                return abort(code)
        except requests.exceptions.RequestException as err:
            print(err)
            return abort(503)

        # Runs
        try:
            params = {'page': 0, "per_page": 10}

            r = get_request_retry(runs_endpoint(user_id), params=params)
            code = r.status_code
            if code == 200:
                runs = r.json()
            else:
                return abort(code)
        except requests.exceptions.RequestException as err:
            print(err)
            return abort(503)

    return render_template('index.html',
                           strava_auth_url=strava_auth_url,
                           average_speed=average_speed,
                           runs=runs)
def check_runner_id(runner_id, send_get=True):

    if int(runner_id) <= 0:
        abort(400, 'Invalid runner_id')

    if send_get:
        if db.session.query(Last_Run).filter(
                Last_Run.runner_id == runner_id).count() != 0:
            return

        try:
            response = get_request_retry(users_endpoint(runner_id))
            status_code = response.status_code
        except requests.exceptions.RequestException as ex:
            abort(503, str(ex))

        if status_code != 200:
            abort(status_code, response.json().get('message'))

        db_last_run = Last_Run()
        db_last_run.runner_id = runner_id
        db.session.add(db_last_run)
        db.session.commit()
예제 #6
0
def _strava_auth():
    code = request.args.get('code')
    client = Client()
    xc = client.exchange_code_for_token
    strava_token = xc(client_id=auth.app.config['STRAVA_CLIENT_ID'],
                      client_secret=auth.app.config['STRAVA_CLIENT_SECRET'],
                      code=code)

    try:
        user_id = current_user.id
        params = {'id': user_id, 'strava_token': strava_token}
        r = put_request_retry(users_endpoint(), user_id, body=params)
        code = r.status_code
        if code == 204:
            current_user.set_strava_authorized()
            db.session.commit()
            return redirect(url_for('home.index'))
        else:
            return abort(400)
    except requests.exceptions.RequestException as err:
        print(err)
        return abort(503)
    return redirect('/')
예제 #7
0
def check_user(runner_id):
    r = get_request_retry(users_endpoint(), runner_id)
    result = r.json()
    return 'id' in result