API & Client - display uploaded files size in admin + minor changes
This commit is contained in:
		@@ -7,7 +7,7 @@ from sqlalchemy import func
 | 
			
		||||
from ..users.models import User
 | 
			
		||||
from ..users.utils import authenticate, authenticate_as_admin
 | 
			
		||||
from .models import Activity, Sport
 | 
			
		||||
from .utils import get_datetime_with_tz
 | 
			
		||||
from .utils import get_datetime_with_tz, get_upload_dir_size
 | 
			
		||||
from .utils_format import convert_timedelta_to_integer
 | 
			
		||||
 | 
			
		||||
stats_blueprint = Blueprint('stats', __name__)
 | 
			
		||||
@@ -376,6 +376,7 @@ def get_application_stats(auth_user_id):
 | 
			
		||||
            'activities': nb_activities,
 | 
			
		||||
            'sports': nb_sports,
 | 
			
		||||
            'users': nb_users,
 | 
			
		||||
            'uploads_dir_size': get_upload_dir_size(),
 | 
			
		||||
        },
 | 
			
		||||
    }
 | 
			
		||||
    return jsonify(response_object), 200
 | 
			
		||||
 
 | 
			
		||||
@@ -338,3 +338,13 @@ def process_files(auth_user_id, activity_data, activity_file, folders):
 | 
			
		||||
        return [process_one_gpx_file(common_params, filename)]
 | 
			
		||||
    else:
 | 
			
		||||
        return process_zip_archive(common_params, folders['extract_dir'])
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def get_upload_dir_size():
 | 
			
		||||
    upload_path = get_absolute_file_path('')
 | 
			
		||||
    total_size = 0
 | 
			
		||||
    for dir_path, _, filenames in os.walk(upload_path):
 | 
			
		||||
        for f in filenames:
 | 
			
		||||
            fp = os.path.join(dir_path, f)
 | 
			
		||||
            total_size += os.path.getsize(fp)
 | 
			
		||||
    return total_size
 | 
			
		||||
 
 | 
			
		||||
@@ -968,7 +968,10 @@ def test_get_app_stats_without_activities(app, user_1_admin):
 | 
			
		||||
 | 
			
		||||
    assert response.status_code == 200
 | 
			
		||||
    assert 'success' in data['status']
 | 
			
		||||
    assert data['data'] == {'activities': 0, 'sports': 0, 'users': 1}
 | 
			
		||||
    assert data['data']['activities'] == 0
 | 
			
		||||
    assert data['data']['sports'] == 0
 | 
			
		||||
    assert data['data']['users'] == 1
 | 
			
		||||
    assert 'uploads_dir_size' in data['data']
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def test_get_app_stats_with_activities(
 | 
			
		||||
@@ -999,7 +1002,10 @@ def test_get_app_stats_with_activities(
 | 
			
		||||
 | 
			
		||||
    assert response.status_code == 200
 | 
			
		||||
    assert 'success' in data['status']
 | 
			
		||||
    assert data['data'] == {'activities': 3, 'sports': 2, 'users': 3}
 | 
			
		||||
    assert data['data']['activities'] == 3
 | 
			
		||||
    assert data['data']['sports'] == 2
 | 
			
		||||
    assert data['data']['users'] == 3
 | 
			
		||||
    assert 'uploads_dir_size' in data['data']
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def test_get_app_stats_no_admin(
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user