Files
Abschluss-Projekt/backend/services/push_yolox_exp.py
2025-11-28 12:50:27 +01:00

37 lines
1.4 KiB
Python

from models.training import Training
from models.TrainingProjectDetails import TrainingProjectDetails
from database.database import db
def push_yolox_exp_to_db(settings):
"""Save YOLOX settings to database"""
normalized = dict(settings)
# Map 'act' from frontend to 'activation' for DB
if 'act' in normalized:
normalized['activation'] = normalized['act']
del normalized['act']
# Convert 'on'/'off' to boolean for save_history_ckpt
if isinstance(normalized.get('save_history_ckpt'), str):
normalized['save_history_ckpt'] = normalized['save_history_ckpt'] == 'on'
# Convert comma-separated strings to arrays
for key in ['input_size', 'test_size', 'mosaic_scale', 'mixup_scale']:
if isinstance(normalized.get(key), str):
arr = [float(v.strip()) for v in normalized[key].split(',')]
normalized[key] = arr[0] if len(arr) == 1 else arr
# Find TrainingProjectDetails for this project
details = TrainingProjectDetails.query.filter_by(project_id=normalized['project_id']).first()
if not details:
raise Exception(f'TrainingProjectDetails not found for project_id {normalized["project_id"]}')
normalized['project_details_id'] = details.id
# Create DB row
training = Training(**normalized)
db.session.add(training)
db.session.commit()
return training