API - send an email when data export is successful
This commit is contained in:
@ -2,7 +2,7 @@ import datetime
|
||||
import os
|
||||
import re
|
||||
import secrets
|
||||
from typing import Dict, Optional, Tuple, Union
|
||||
from typing import Dict, Tuple, Union
|
||||
|
||||
import jwt
|
||||
from flask import (
|
||||
@ -43,6 +43,7 @@ from fittrackee.workouts.models import Sport
|
||||
from .models import BlacklistedToken, User, UserDataExport, UserSportPreference
|
||||
from .tasks import export_data
|
||||
from .utils.controls import check_password, is_valid_email, register_controls
|
||||
from .utils.language import get_language
|
||||
from .utils.token import decode_user_token
|
||||
|
||||
auth_blueprint = Blueprint('auth', __name__)
|
||||
@ -51,13 +52,6 @@ HEX_COLOR_REGEX = regex = "^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$"
|
||||
NOT_FOUND_MESSAGE = 'the requested URL was not found on the server'
|
||||
|
||||
|
||||
def get_language(language: Optional[str]) -> str:
|
||||
# Note: some users may not have language preferences set
|
||||
if not language or language not in current_app.config['LANGUAGES']:
|
||||
language = 'en'
|
||||
return language
|
||||
|
||||
|
||||
def send_account_confirmation_email(user: User) -> None:
|
||||
if current_app.config['CAN_SEND_EMAILS']:
|
||||
ui_url = current_app.config['UI_URL']
|
||||
|
@ -4,10 +4,14 @@ import secrets
|
||||
from typing import Dict, List, Optional, Tuple, Union
|
||||
from zipfile import ZipFile
|
||||
|
||||
from flask import current_app
|
||||
|
||||
from fittrackee import appLog, db
|
||||
from fittrackee.emails.tasks import data_export_email
|
||||
from fittrackee.files import get_absolute_file_path
|
||||
|
||||
from .models import User, UserDataExport
|
||||
from .utils.language import get_language
|
||||
|
||||
|
||||
class UserDataExporter:
|
||||
@ -108,4 +112,19 @@ def export_user_data(export_request_id: int) -> None:
|
||||
if archive_file_name and archive_file_path:
|
||||
export_request.file_name = archive_file_name
|
||||
export_request.file_size = os.path.getsize(archive_file_path)
|
||||
db.session.commit()
|
||||
db.session.commit()
|
||||
|
||||
if current_app.config['CAN_SEND_EMAILS']:
|
||||
ui_url = current_app.config['UI_URL']
|
||||
email_data = {
|
||||
'username': user.username,
|
||||
'fittrackee_url': ui_url,
|
||||
'account_url': f'{ui_url}/profile/edit/account',
|
||||
}
|
||||
user_data = {
|
||||
'language': get_language(user.language),
|
||||
'email': user.email,
|
||||
}
|
||||
data_export_email.send(user_data, email_data)
|
||||
else:
|
||||
db.session.commit()
|
||||
|
@ -24,10 +24,10 @@ from fittrackee.responses import (
|
||||
from fittrackee.utils import get_readable_duration
|
||||
from fittrackee.workouts.models import Record, Workout, WorkoutSegment
|
||||
|
||||
from .auth import get_language
|
||||
from .exceptions import InvalidEmailException, UserNotFoundException
|
||||
from .models import User, UserDataExport, UserSportPreference
|
||||
from .utils.admin import UserManagerService
|
||||
from .utils.language import get_language
|
||||
|
||||
users_blueprint = Blueprint('users', __name__)
|
||||
|
||||
|
10
fittrackee/users/utils/language.py
Normal file
10
fittrackee/users/utils/language.py
Normal file
@ -0,0 +1,10 @@
|
||||
from typing import Optional
|
||||
|
||||
from flask import current_app
|
||||
|
||||
|
||||
def get_language(language: Optional[str]) -> str:
|
||||
# Note: some users may not have language preferences set
|
||||
if not language or language not in current_app.config['LANGUAGES']:
|
||||
language = 'en'
|
||||
return language
|
Reference in New Issue
Block a user