schafkopf-db/app/models.py

102 lines
3 KiB
Python

from flask_appbuilder import Model
from sqlalchemy import Column, Integer, String, ForeignKey, Boolean
from sqlalchemy.orm import relationship
from .abrechnung import spielwert
"""
You can use the extra Flask-AppBuilder fields and Mixin's
AuditMixin will add automatic timestamp of created and modified by who
"""
def addExtras(result, nExtras, extrasTarif):
"""takes result array and adds/subtracts the extras and return modified results"""
newResult = []
for res in result:
if res > 0:
newResult.append(res+nExtras*extrasTarif)
else:
newResult.append(res-nExtras*extrasTarif)
return newResult
class Spieler(Model):
id = Column(Integer, primary_key=True)
name = Column(String())
def __repr__(self):
return self.name
class Spiel(Model):
id = Column(Integer, primary_key=True)
spieler0_id = Column(Integer, ForeignKey('spieler.id'))
spieler0 = relationship('Spieler', foreign_keys=[spieler0_id])
spieler1_id = Column(Integer, ForeignKey('spieler.id'))
spieler1 = relationship('Spieler', foreign_keys=[spieler1_id])
spieler2_id = Column(Integer, ForeignKey('spieler.id'))
spieler2 = relationship('Spieler', foreign_keys=[spieler2_id])
spieler3_id = Column(Integer, ForeignKey('spieler.id'))
spieler3 = relationship('Spieler', foreign_keys=[spieler3_id])
geber_id = Column(Integer, ForeignKey('spieler.id'))
geber = relationship('Spieler', foreign_keys=[geber_id])
spieltyp = Column(String())
leger0 = Column(Boolean)
leger1 = Column(Boolean)
leger2 = Column(Boolean)
leger3 = Column(Boolean)
spieler = Column(Integer(), nullable=True)
mitspieler = Column(Integer(), nullable=True)
kontra0 = Column(Integer(), default=0)
kontra1 = Column(Integer(), default=0)
kontra2 = Column(Integer(), default=0)
kontra3 = Column(Integer(), default=0)
tout = Column(Boolean, default=False)
sie = Column(Boolean, default=False)
schneider = Column(Integer(), default=0)
laufende = Column(Integer(), default=0)
mit = Column(Boolean)
# Hat der Spieler gewonnen?
gewonnen = Column(Boolean, nullable=True)
# Wenn Ramsch gespielt wird
durchmarsch_gewinner = Column(Integer(), nullable=True)
verlierer = Column(Integer(), nullable=True)
jungfrau0 = Column(Boolean())
jungfrau1 = Column(Boolean())
jungfrau2 = Column(Boolean())
jungfrau3 = Column(Boolean())
# sonstiges
vergeben = Column(Boolean())
verspielt = Column(Integer(), nullable=True)
# Bonus info
farbe = Column(String())
startzeit = Column(Integer(), nullable=True)
endzeit = Column(Integer(), nullable=True)
kommentar = Column(String())
# Meta
device_ID = Column(String())
version = Column(String())
def spielwert(self):
return spielwert(**self.__dict__)
def check(self):
if sum(self.spielwert().values())==0:
return u"\U0001F44D"
else:
return u"\U0001F44E"
return u"\U0001F44E"