API - update workout file name
remove unneeded use of `mkstemp`
This commit is contained in:
parent
4aa0c961a3
commit
fd927beac7
@ -1,10 +1,9 @@
|
|||||||
import json
|
import json
|
||||||
import os
|
import os
|
||||||
import re
|
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from io import BytesIO
|
from io import BytesIO
|
||||||
from typing import Any, Dict, Optional
|
from typing import Any, Dict, Optional
|
||||||
from unittest.mock import Mock
|
from unittest.mock import Mock, patch
|
||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
from flask import Flask
|
from flask import Flask
|
||||||
@ -300,23 +299,25 @@ class TestPostWorkoutWithGpx(ApiTestCaseMixin, CallArgsMixin):
|
|||||||
client, auth_token = self.get_test_client_and_auth_token(
|
client, auth_token = self.get_test_client_and_auth_token(
|
||||||
app, user_1.email
|
app, user_1.email
|
||||||
)
|
)
|
||||||
|
expected_suffix = self.random_string()
|
||||||
|
|
||||||
client.post(
|
with patch('secrets.token_urlsafe', return_value=expected_suffix):
|
||||||
'/api/workouts',
|
client.post(
|
||||||
data=dict(
|
'/api/workouts',
|
||||||
file=(BytesIO(str.encode(gpx_file)), 'example.gpx'),
|
data=dict(
|
||||||
data='{"sport_id": 1}',
|
file=(BytesIO(str.encode(gpx_file)), 'example.gpx'),
|
||||||
),
|
data='{"sport_id": 1}',
|
||||||
headers=dict(
|
),
|
||||||
content_type='multipart/form-data',
|
headers=dict(
|
||||||
Authorization=f'Bearer {auth_token}',
|
content_type='multipart/form-data',
|
||||||
),
|
Authorization=f'Bearer {auth_token}',
|
||||||
)
|
),
|
||||||
|
)
|
||||||
|
|
||||||
workout = Workout.query.first()
|
workout = Workout.query.first()
|
||||||
assert re.match(
|
assert (
|
||||||
r'^workouts/1/2018-03-13_12-44-45_1_([\w\d_-]*).gpx$',
|
workout.gpx
|
||||||
workout.gpx,
|
== f"workouts/1/2018-03-13_12-44-45_1_{expected_suffix}.gpx"
|
||||||
)
|
)
|
||||||
|
|
||||||
def test_it_creates_workout_with_expecting_map_path(
|
def test_it_creates_workout_with_expecting_map_path(
|
||||||
@ -325,23 +326,25 @@ class TestPostWorkoutWithGpx(ApiTestCaseMixin, CallArgsMixin):
|
|||||||
client, auth_token = self.get_test_client_and_auth_token(
|
client, auth_token = self.get_test_client_and_auth_token(
|
||||||
app, user_1.email
|
app, user_1.email
|
||||||
)
|
)
|
||||||
|
expected_suffix = self.random_string()
|
||||||
|
|
||||||
client.post(
|
with patch('secrets.token_urlsafe', return_value=expected_suffix):
|
||||||
'/api/workouts',
|
client.post(
|
||||||
data=dict(
|
'/api/workouts',
|
||||||
file=(BytesIO(str.encode(gpx_file)), 'example.gpx'),
|
data=dict(
|
||||||
data='{"sport_id": 1}',
|
file=(BytesIO(str.encode(gpx_file)), 'example.gpx'),
|
||||||
),
|
data='{"sport_id": 1}',
|
||||||
headers=dict(
|
),
|
||||||
content_type='multipart/form-data',
|
headers=dict(
|
||||||
Authorization=f'Bearer {auth_token}',
|
content_type='multipart/form-data',
|
||||||
),
|
Authorization=f'Bearer {auth_token}',
|
||||||
)
|
),
|
||||||
|
)
|
||||||
|
|
||||||
workout = Workout.query.first()
|
workout = Workout.query.first()
|
||||||
assert re.match(
|
assert (
|
||||||
r'^workouts/1/2018-03-13_12-44-45_1_([\w\d_-]*).png$',
|
workout.map
|
||||||
workout.map,
|
== f"workouts/1/2018-03-13_12-44-45_1_{expected_suffix}.png"
|
||||||
)
|
)
|
||||||
|
|
||||||
def test_it_adds_a_workout_with_gpx_without_name(
|
def test_it_adds_a_workout_with_gpx_without_name(
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
import os
|
import os
|
||||||
import tempfile
|
import secrets
|
||||||
import zipfile
|
import zipfile
|
||||||
from datetime import datetime, timedelta
|
from datetime import datetime, timedelta
|
||||||
from typing import Dict, List, Optional, Tuple, Union
|
from typing import Dict, List, Optional, Tuple, Union
|
||||||
@ -272,9 +272,8 @@ def get_new_file_path(
|
|||||||
"""
|
"""
|
||||||
if not extension and old_filename:
|
if not extension and old_filename:
|
||||||
extension = f".{old_filename.rsplit('.', 1)[1].lower()}"
|
extension = f".{old_filename.rsplit('.', 1)[1].lower()}"
|
||||||
_, new_filename = tempfile.mkstemp(
|
suffix = secrets.token_urlsafe(8)
|
||||||
prefix=f'{workout_date}_{sport_id}_', suffix=extension
|
new_filename = f"{workout_date}_{sport_id}_{suffix}{extension}"
|
||||||
)
|
|
||||||
dir_path = os.path.join('workouts', str(auth_user_id))
|
dir_path = os.path.join('workouts', str(auth_user_id))
|
||||||
file_path = os.path.join(dir_path, new_filename.split('/')[-1])
|
file_path = os.path.join(dir_path, new_filename.split('/')[-1])
|
||||||
return file_path
|
return file_path
|
||||||
|
Loading…
Reference in New Issue
Block a user