Initial
This commit is contained in:
72
model.py
Normal file
72
model.py
Normal file
@@ -0,0 +1,72 @@
|
||||
from _ctypes import ArgumentError
|
||||
from dataclasses import dataclass
|
||||
|
||||
INVALID_STR = 'Form entry "{}" is invalid'
|
||||
|
||||
|
||||
@dataclass
|
||||
class Player:
|
||||
id: int
|
||||
real_name: str
|
||||
name: str
|
||||
alias: str
|
||||
hex_id: str
|
||||
anon: bool = False
|
||||
|
||||
def __init__(self, real_name, alias, hex_id, anon=False, id=None):
|
||||
self.real_name = str(real_name)
|
||||
self.name = str(real_name) if not anon else alias
|
||||
self.hex_id = str(hex_id)
|
||||
self.alias = str(alias)
|
||||
self.anon = bool(anon)
|
||||
self.id = id
|
||||
|
||||
|
||||
@dataclass
|
||||
class Drink:
|
||||
id: int
|
||||
name: str
|
||||
vol: float
|
||||
|
||||
@classmethod
|
||||
def from_form(cls, form):
|
||||
id = form.get('id', None)
|
||||
id = int(id) if id else None
|
||||
|
||||
name = form.get('name', None)
|
||||
if not name:
|
||||
raise ArgumentError('Form data contains no field "name"')
|
||||
name = str(name)
|
||||
|
||||
vol = form.get('vol', None)
|
||||
if not vol:
|
||||
raise ArgumentError('Form data contains no field "vol"')
|
||||
vol = float(vol)
|
||||
|
||||
self = cls(id=id, name=name, vol=vol)
|
||||
return self
|
||||
|
||||
|
||||
@dataclass
|
||||
class Enemy:
|
||||
id: int
|
||||
name: str
|
||||
boss: bool
|
||||
|
||||
@classmethod
|
||||
def from_form(cls, form):
|
||||
id = form.get('id', None)
|
||||
id = int(id) if id else None
|
||||
|
||||
name = form.get('name', None)
|
||||
if not name:
|
||||
raise ArgumentError(INVALID_STR.format('name'))
|
||||
name = str(name)
|
||||
|
||||
boss = form.get('boss', '')
|
||||
if boss not in [True, False, 'True', 'False']:
|
||||
raise ArgumentError(INVALID_STR.format('boss'))
|
||||
|
||||
self = cls(id=id, name=name, boss=boss)
|
||||
return self
|
||||
|
||||
Reference in New Issue
Block a user