API - refactor + typing errors fix
This commit is contained in:
parent
25bdb215cb
commit
c902bdb911
@ -5,7 +5,7 @@ from flask import Flask
|
||||
|
||||
class TestHealthCheck:
|
||||
def test_it_returns_pong_on_health_check(self, app: Flask) -> None:
|
||||
""" => Ensure the /health_check route behaves correctly."""
|
||||
"""=> Ensure the /health_check route behaves correctly."""
|
||||
client = app.test_client()
|
||||
response = client.get('/api/ping')
|
||||
data = json.loads(response.data.decode())
|
||||
|
@ -528,7 +528,7 @@ def edit_picture(auth_user_id: int) -> Union[Dict, HttpResponse]:
|
||||
return response_object
|
||||
|
||||
file = request.files['file']
|
||||
filename = secure_filename(file.filename)
|
||||
filename = secure_filename(file.filename) # type: ignore
|
||||
dirpath = os.path.join(
|
||||
current_app.config['UPLOAD_FOLDER'], 'pictures', str(auth_user_id)
|
||||
)
|
||||
|
@ -122,12 +122,8 @@ def get_users(auth_user_id: int) -> Dict:
|
||||
|
||||
"""
|
||||
params = request.args.copy()
|
||||
page = 1 if 'page' not in params.keys() else int(params.get('page'))
|
||||
per_page = (
|
||||
int(params.get('per_page'))
|
||||
if params.get('per_page')
|
||||
else USER_PER_PAGE
|
||||
)
|
||||
page = int(params.get('page', 1))
|
||||
per_page = int(params.get('per_page', USER_PER_PAGE))
|
||||
if per_page > 50:
|
||||
per_page = 50
|
||||
order_by = params.get('order_by')
|
||||
@ -364,7 +360,7 @@ def update_user(
|
||||
:statuscode 500:
|
||||
"""
|
||||
user_data = request.get_json()
|
||||
if 'admin' not in user_data:
|
||||
if not user_data or user_data.get('admin') is None:
|
||||
return InvalidPayloadErrorResponse()
|
||||
|
||||
try:
|
||||
|
@ -21,7 +21,7 @@ def verify_extension_and_size(
|
||||
return InvalidPayloadErrorResponse('No file part.', 'fail')
|
||||
|
||||
file = req.files['file']
|
||||
if file.filename == '':
|
||||
if not file.filename or file.filename == '':
|
||||
return InvalidPayloadErrorResponse('No selected file.', 'fail')
|
||||
|
||||
allowed_extensions = (
|
||||
|
@ -16,7 +16,7 @@ from fittrackee.users.decorators import authenticate, authenticate_as_admin
|
||||
from fittrackee.users.models import User
|
||||
|
||||
from .models import Sport, Workout
|
||||
from .utils import get_datetime_with_tz, get_upload_dir_size
|
||||
from .utils import get_datetime_from_request_args, get_upload_dir_size
|
||||
from .utils_format import convert_timedelta_to_integer
|
||||
|
||||
stats_blueprint = Blueprint('stats', __name__)
|
||||
@ -34,16 +34,7 @@ def get_workouts(
|
||||
return UserNotFoundErrorResponse()
|
||||
|
||||
params = request.args.copy()
|
||||
date_from = params.get('from')
|
||||
if date_from:
|
||||
date_from = datetime.strptime(date_from, '%Y-%m-%d')
|
||||
_, date_from = get_datetime_with_tz(user.timezone, date_from)
|
||||
date_to = params.get('to')
|
||||
if date_to:
|
||||
date_to = datetime.strptime(
|
||||
f'{date_to} 23:59:59', '%Y-%m-%d %H:%M:%S'
|
||||
)
|
||||
_, date_to = get_datetime_with_tz(user.timezone, date_to)
|
||||
date_from, date_to = get_datetime_from_request_args(params, user)
|
||||
sport_id = params.get('sport_id')
|
||||
time = params.get('time')
|
||||
|
||||
|
@ -50,6 +50,25 @@ def get_datetime_with_tz(
|
||||
return workout_date_tz, workout_date
|
||||
|
||||
|
||||
def get_datetime_from_request_args(
|
||||
params: Dict, user: User
|
||||
) -> Tuple[Optional[datetime], Optional[datetime]]:
|
||||
date_from = None
|
||||
date_to = None
|
||||
|
||||
date_from_str = params.get('from')
|
||||
if date_from_str:
|
||||
date_from = datetime.strptime(date_from_str, '%Y-%m-%d')
|
||||
_, date_from = get_datetime_with_tz(user.timezone, date_from)
|
||||
date_to_str = params.get('to')
|
||||
if date_to_str:
|
||||
date_to = datetime.strptime(
|
||||
f'{date_to_str} 23:59:59', '%Y-%m-%d %H:%M:%S'
|
||||
)
|
||||
_, date_to = get_datetime_with_tz(user.timezone, date_to)
|
||||
return date_from, date_to
|
||||
|
||||
|
||||
def update_workout_data(
|
||||
workout: Union[Workout, WorkoutSegment], gpx_data: Dict
|
||||
) -> Union[Workout, WorkoutSegment]:
|
||||
|
@ -1,7 +1,7 @@
|
||||
import json
|
||||
import os
|
||||
import shutil
|
||||
from datetime import datetime, timedelta
|
||||
from datetime import timedelta
|
||||
from typing import Any, Dict, List, Optional, Tuple, Union
|
||||
|
||||
import requests
|
||||
@ -31,7 +31,7 @@ from .utils import (
|
||||
create_workout,
|
||||
edit_workout,
|
||||
get_absolute_file_path,
|
||||
get_datetime_with_tz,
|
||||
get_datetime_from_request_args,
|
||||
process_files,
|
||||
)
|
||||
from .utils_format import convert_in_duration
|
||||
@ -196,17 +196,8 @@ def get_workouts(auth_user_id: int) -> Union[Dict, HttpResponse]:
|
||||
try:
|
||||
user = User.query.filter_by(id=auth_user_id).first()
|
||||
params = request.args.copy()
|
||||
page = 1 if 'page' not in params.keys() else int(params.get('page'))
|
||||
date_from = params.get('from')
|
||||
if date_from:
|
||||
date_from = datetime.strptime(date_from, '%Y-%m-%d')
|
||||
_, date_from = get_datetime_with_tz(user.timezone, date_from)
|
||||
date_to = params.get('to')
|
||||
if date_to:
|
||||
date_to = datetime.strptime(
|
||||
f'{date_to} 23:59:59', '%Y-%m-%d %H:%M:%S'
|
||||
)
|
||||
_, date_to = get_datetime_with_tz(user.timezone, date_to)
|
||||
page = int(params.get('page', 1))
|
||||
date_from, date_to = get_datetime_from_request_args(params, user)
|
||||
distance_from = params.get('distance_from')
|
||||
distance_to = params.get('distance_to')
|
||||
duration_from = params.get('duration_from')
|
||||
@ -217,11 +208,7 @@ def get_workouts(auth_user_id: int) -> Union[Dict, HttpResponse]:
|
||||
max_speed_to = params.get('max_speed_to')
|
||||
order = params.get('order')
|
||||
sport_id = params.get('sport_id')
|
||||
per_page = (
|
||||
int(params.get('per_page'))
|
||||
if params.get('per_page')
|
||||
else DEFAULT_WORKOUTS_PER_PAGE
|
||||
)
|
||||
per_page = int(params.get('per_page', DEFAULT_WORKOUTS_PER_PAGE))
|
||||
if per_page > MAX_WORKOUTS_PER_PAGE:
|
||||
per_page = MAX_WORKOUTS_PER_PAGE
|
||||
workouts = (
|
||||
|
Loading…
Reference in New Issue
Block a user