File size: 1,953 Bytes
71e71e8 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 | from peewee import *
from src.model.BaseModel import BaseModel
from src.model.User import User
from src.model.enums.PredictionStatus import PredictionStatus
class Prediction(BaseModel):
"""
Prediction class
"""
type = CharField(max_length=20, null=False)
status = SmallIntegerField(default=PredictionStatus.NEW)
question = CharField(max_length=999)
send_date = DateTimeField(null=True)
end_date = DateTimeField(null=True)
cut_off_date = DateTimeField(null=True)
refund_wager = BooleanField(default=False)
max_refund_wager = BigIntegerField(null=True)
allow_multiple_choices = BooleanField(default=True)
can_withdraw_bet = BooleanField(default=True)
result_set_date = DateTimeField(null=True)
creator = ForeignKeyField(
User, null=True, backref="predictions", on_delete="CASCADE", on_update="CASCADE"
)
is_public = BooleanField(default=False)
options: list[str] = [] # For saving in context when creating a private prediction
should_save: bool = True
# Backref
prediction_options = None
class Meta:
db_table = "prediction"
def is_open(self) -> bool:
"""If the prediction is open for betting"""
return PredictionStatus(self.status) is PredictionStatus.SENT
def is_closed(self) -> bool:
"""If the prediction is closed for betting"""
return PredictionStatus(self.status) is PredictionStatus.BETS_CLOSED
def is_result_set(self) -> bool:
"""If the prediction has a result set"""
return PredictionStatus(self.status) is PredictionStatus.RESULT_SET
def is_new_or_sent(self) -> bool:
"""If the prediction is editable"""
return PredictionStatus(self.status) in [PredictionStatus.NEW, PredictionStatus.SENT]
def get_status(self) -> PredictionStatus:
"""Get the prediction status"""
return PredictionStatus(self.status)
Prediction.create_table()
|