Files
Ske_Signage/app/models/scheduled_task.py
2025-07-16 16:08:40 +03:00

47 lines
1.7 KiB
Python

"""
Scheduled Task Model
"""
from app.extensions import db
from datetime import datetime
import pytz
# Get local timezone
LOCAL_TZ = pytz.timezone('Europe/Bucharest') # Adjust this to your local timezone
def get_local_time():
"""Get current local time"""
return datetime.now(LOCAL_TZ).replace(tzinfo=None)
class ScheduledTask(db.Model):
"""Model for scheduled maintenance tasks"""
__tablename__ = 'scheduled_task'
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(100), nullable=False)
task_type = db.Column(db.String(50), nullable=False) # cleanup_files, clear_logs, optimize_db, backup_db
schedule = db.Column(db.String(100), nullable=False) # Cron expression
enabled = db.Column(db.Boolean, default=True, nullable=False)
created_at = db.Column(db.DateTime, default=get_local_time, nullable=False)
last_run = db.Column(db.DateTime, nullable=True)
next_run = db.Column(db.DateTime, nullable=True)
run_count = db.Column(db.Integer, default=0, nullable=False)
def __repr__(self):
return f'<ScheduledTask {self.name}>'
def to_dict(self):
"""Convert to dictionary for JSON serialization"""
return {
'id': self.id,
'name': self.name,
'task_type': self.task_type,
'schedule': self.schedule,
'enabled': self.enabled,
'created_at': self.created_at.isoformat() if self.created_at else None,
'last_run': self.last_run.isoformat() if self.last_run else None,
'next_run': self.next_run.isoformat() if self.next_run else None,
'run_count': self.run_count
}