st-ten-1/src/lib/db/models/archive.py
2025-09-23 14:26:05 +02:00

41 lines
1.3 KiB
Python

from datetime import datetime
from peewee import (AutoField, BooleanField, DateTimeField,
TextField, IntegerField)
from playhouse.sqlite_ext import JSONField
from .base_model import BaseModel, db_archive
from .users import Users
class Archive(BaseModel):
id = AutoField(primary_key=True, unique=True, null=False)
time = DateTimeField(unique=True, null=False, default=datetime.now)
# Store username directly to avoid cross-database foreign keys
user = TextField(null=False)
result = BooleanField(null=False)
overridden = BooleanField(null=False)
test_data = JSONField(null=False)
label = TextField(null=True)
barcode = TextField(null=True)
archived = IntegerField(null=False, default=False)
uploaded = BooleanField(null=False, default=False)
@classmethod
@db_archive.atomic()
def archive(cls, test_data, result, overridden):
time = datetime.now()
test_data["time"] = time.strftime("%d/%m/%Y %H:%M:%S")
test_data["user"] = Users.get_session().username
return cls.create(
time=time,
user=Users.get_session().username,
result=result,
overridden=overridden,
test_data=test_data,
)
class Meta:
table_name = "archive"
database = db_archive