Update: admin panel, SMTP/EWS/Outlook mail modes, QR fix, event folders, security improvements
This commit is contained in:
@@ -0,0 +1,28 @@
|
||||
from pathlib import Path
|
||||
from flask import current_app
|
||||
|
||||
|
||||
def _base_upload_folder():
|
||||
return Path(current_app.config["UPLOAD_FOLDER"])
|
||||
|
||||
|
||||
def event_photo_folder(event_id):
|
||||
return Path(current_app.config["PHOTO_FOLDER"]) / f"event_{event_id}"
|
||||
|
||||
|
||||
def event_qr_folder(event_id):
|
||||
return Path(current_app.config["QR_FOLDER"]) / f"event_{event_id}"
|
||||
|
||||
|
||||
def event_logo_folder(event_id):
|
||||
return Path(current_app.config["LOGO_FOLDER"]) / f"event_{event_id}"
|
||||
|
||||
|
||||
def event_tickets_folder(event_id):
|
||||
return _base_upload_folder() / "tickets" / f"event_{event_id}"
|
||||
|
||||
|
||||
def ensure_event_folders(event_id):
|
||||
"""Создаёт все папки для конкретного мероприятия."""
|
||||
for folder in [event_photo_folder, event_qr_folder, event_logo_folder, event_tickets_folder]:
|
||||
folder(event_id).mkdir(parents=True, exist_ok=True)
|
||||
@@ -0,0 +1,27 @@
|
||||
from datetime import datetime, timezone
|
||||
from zoneinfo import ZoneInfo
|
||||
from flask import current_app
|
||||
|
||||
|
||||
def get_timezone():
|
||||
tz_name = current_app.config.get("TIMEZONE", "UTC")
|
||||
return ZoneInfo(tz_name)
|
||||
|
||||
|
||||
def utc_to_local(dt):
|
||||
"""Конвертирует наивное UTC-время в локальное наивное время."""
|
||||
if dt is None:
|
||||
return None
|
||||
# Считаем, что хранимое время — UTC
|
||||
utc_dt = dt.replace(tzinfo=timezone.utc) if dt.tzinfo is None else dt.astimezone(timezone.utc)
|
||||
local_dt = utc_dt.astimezone(get_timezone())
|
||||
return local_dt.replace(tzinfo=None)
|
||||
|
||||
|
||||
def local_to_utc(dt):
|
||||
"""Конвертирует наивное локальное время в UTC-наивное для хранения."""
|
||||
if dt is None:
|
||||
return None
|
||||
local_dt = dt.replace(tzinfo=get_timezone())
|
||||
utc_dt = local_dt.astimezone(timezone.utc)
|
||||
return utc_dt.replace(tzinfo=None)
|
||||
Reference in New Issue
Block a user