API - update workout file name

remove unneeded use of `mkstemp`
This commit is contained in:
Sam 2023-03-04 19:50:21 +01:00
parent 4aa0c961a3
commit fd927beac7
2 changed files with 36 additions and 34 deletions

View File

@ -1,10 +1,9 @@
import json
import os
import re
from datetime import datetime
from io import BytesIO
from typing import Any, Dict, Optional
from unittest.mock import Mock
from unittest.mock import Mock, patch
import pytest
from flask import Flask
@ -300,23 +299,25 @@ class TestPostWorkoutWithGpx(ApiTestCaseMixin, CallArgsMixin):
client, auth_token = self.get_test_client_and_auth_token(
app, user_1.email
)
expected_suffix = self.random_string()
client.post(
'/api/workouts',
data=dict(
file=(BytesIO(str.encode(gpx_file)), 'example.gpx'),
data='{"sport_id": 1}',
),
headers=dict(
content_type='multipart/form-data',
Authorization=f'Bearer {auth_token}',
),
)
with patch('secrets.token_urlsafe', return_value=expected_suffix):
client.post(
'/api/workouts',
data=dict(
file=(BytesIO(str.encode(gpx_file)), 'example.gpx'),
data='{"sport_id": 1}',
),
headers=dict(
content_type='multipart/form-data',
Authorization=f'Bearer {auth_token}',
),
)
workout = Workout.query.first()
assert re.match(
r'^workouts/1/2018-03-13_12-44-45_1_([\w\d_-]*).gpx$',
workout.gpx,
assert (
workout.gpx
== f"workouts/1/2018-03-13_12-44-45_1_{expected_suffix}.gpx"
)
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(
app, user_1.email
)
expected_suffix = self.random_string()
client.post(
'/api/workouts',
data=dict(
file=(BytesIO(str.encode(gpx_file)), 'example.gpx'),
data='{"sport_id": 1}',
),
headers=dict(
content_type='multipart/form-data',
Authorization=f'Bearer {auth_token}',
),
)
with patch('secrets.token_urlsafe', return_value=expected_suffix):
client.post(
'/api/workouts',
data=dict(
file=(BytesIO(str.encode(gpx_file)), 'example.gpx'),
data='{"sport_id": 1}',
),
headers=dict(
content_type='multipart/form-data',
Authorization=f'Bearer {auth_token}',
),
)
workout = Workout.query.first()
assert re.match(
r'^workouts/1/2018-03-13_12-44-45_1_([\w\d_-]*).png$',
workout.map,
assert (
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(

View File

@ -1,5 +1,5 @@
import os
import tempfile
import secrets
import zipfile
from datetime import datetime, timedelta
from typing import Dict, List, Optional, Tuple, Union
@ -272,9 +272,8 @@ def get_new_file_path(
"""
if not extension and old_filename:
extension = f".{old_filename.rsplit('.', 1)[1].lower()}"
_, new_filename = tempfile.mkstemp(
prefix=f'{workout_date}_{sport_id}_', suffix=extension
)
suffix = secrets.token_urlsafe(8)
new_filename = f"{workout_date}_{sport_id}_{suffix}{extension}"
dir_path = os.path.join('workouts', str(auth_user_id))
file_path = os.path.join(dir_path, new_filename.split('/')[-1])
return file_path