inital db
This commit is contained in:
commit
a3b496744c
12 changed files with 508 additions and 0 deletions
164
app/models.py
Normal file
164
app/models.py
Normal file
|
|
@ -0,0 +1,164 @@
|
|||
from flask_appbuilder import Model
|
||||
from sqlalchemy import Column, Integer, String, ForeignKey, Boolean
|
||||
from sqlalchemy.orm import relationship
|
||||
|
||||
"""
|
||||
|
||||
You can use the extra Flask-AppBuilder fields and Mixin's
|
||||
|
||||
AuditMixin will add automatic timestamp of created and modified by who
|
||||
|
||||
|
||||
"""
|
||||
|
||||
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)
|
||||
|
||||
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])
|
||||
spieler4_id = Column(Integer, ForeignKey('spieler.id'))
|
||||
spieler4 = relationship('Spieler', foreign_keys=[spieler4_id])
|
||||
|
||||
spieltyp = Column(String())
|
||||
|
||||
leger1 = Column(Boolean)
|
||||
leger2 = Column(Boolean)
|
||||
leger3 = Column(Boolean)
|
||||
leger4 = Column(Boolean)
|
||||
|
||||
spieler = Column(Integer(), nullable=True)
|
||||
mitspieler = Column(Integer(), nullable=True)
|
||||
|
||||
kontra = Column(Integer(), default=0)
|
||||
tout = Column(Boolean, default=False)
|
||||
sie = Column(Boolean, default=False)
|
||||
|
||||
schneider = Column(Integer(), default=0)
|
||||
|
||||
# Hat der Spielr gewonnen?
|
||||
gewonnen = Column(Boolean, nullable=True)
|
||||
# Wenn Ramsch gespielt wird
|
||||
durchmarsch = Column(Boolean)
|
||||
verlierer1 = Column(Boolean)
|
||||
verlierer2 = Column(Boolean)
|
||||
verlierer3 = Column(Boolean)
|
||||
verlierer4 = Column(Boolean)
|
||||
jungfrau1 = Column(Boolean())
|
||||
jungfrau2 = Column(Boolean())
|
||||
jungfrau3 = Column(Boolean())
|
||||
jungfrau4 = Column(Boolean())
|
||||
|
||||
|
||||
# Bonus info
|
||||
farbe = Column(String())
|
||||
|
||||
def spielwert(self):
|
||||
grundtarif = 20
|
||||
extras = 10
|
||||
solo = 50
|
||||
|
||||
result = [0,0,0,0]
|
||||
|
||||
if self.spieltyp == "Sauspiel":
|
||||
spieler = set([self.spieler-1,self.mitspieler-1])
|
||||
nichtspieler = list(set([0,1,2,3])-spieler)
|
||||
if self.gewonnen:
|
||||
result[self.spieler-1] = grundtarif
|
||||
result[self.mitspieler-1] = grundtarif
|
||||
result[nichtspieler[0]] = -grundtarif
|
||||
result[nichtspieler[1]] = -grundtarif
|
||||
else:
|
||||
result[self.spieler-1] = -grundtarif
|
||||
result[self.mitspieler-1] = -grundtarif
|
||||
result[nichtspieler[0]] = grundtarif
|
||||
result[nichtspieler[1]] = grundtarif
|
||||
elif self.spieltyp == "Wenz" or self.spieltyp == "Solo":
|
||||
spieler = set([self.spieler-1])
|
||||
nichtspieler = list(set([0,1,2,3])-spieler)
|
||||
if self.gewonnen:
|
||||
result[self.spieler-1] = solo
|
||||
result[nichtspieler[0]] = -solo
|
||||
result[nichtspieler[1]] = -solo
|
||||
result[nichtspieler[2]] = -solo
|
||||
else:
|
||||
result[self.spieler-1] = -solo
|
||||
result[nichtspieler[0]] = solo
|
||||
result[nichtspieler[1]] = solo
|
||||
result[nichtspieler[2]] = solo
|
||||
elif self.spieltyp == "Ramsch":
|
||||
|
||||
if self.durchmarsch:
|
||||
if self.verlierer1:
|
||||
result[0] = -solo
|
||||
else:
|
||||
result[0] = 3*solo
|
||||
if self.verlierer2:
|
||||
result[1] = -solo
|
||||
else:
|
||||
result[1] = 3*solo
|
||||
if self.verlierer3:
|
||||
result[2] = -solo
|
||||
else:
|
||||
result[2] = 3*solo
|
||||
if self.verlierer4:
|
||||
result[3] = -solo
|
||||
else:
|
||||
result[3] = 3*solo
|
||||
else:
|
||||
nGewinner = 0
|
||||
if not self.verlierer1:
|
||||
result[0] = grundtarif * (self.jungfrau1 + 1)
|
||||
nGewinner += 1 + self.jungfrau1
|
||||
if not self.verlierer2:
|
||||
result[1] = grundtarif * (self.jungfrau2 + 1)
|
||||
nGewinner += 1 + self.jungfrau2
|
||||
if not self.verlierer3:
|
||||
result[2] = grundtarif * (self.jungfrau3 + 1)
|
||||
nGewinner += 1 + self.jungfrau3
|
||||
if not self.verlierer4:
|
||||
result[3] = grundtarif * (self.jungfrau4 + 1)
|
||||
nGewinner += 1 + self.jungfrau4
|
||||
|
||||
if self.verlierer1:
|
||||
result[0] = -nGewinner*grundtarif
|
||||
if self.verlierer2:
|
||||
result[1] = -nGewinner*grundtarif
|
||||
if self.verlierer3:
|
||||
result[2] = -nGewinner*grundtarif
|
||||
if self.verlierer4:
|
||||
result[3] = -nGewinner*grundtarif
|
||||
|
||||
result = [i * (self.schneider * extras+grundtarif) /grundtarif for i in result]
|
||||
|
||||
if self.leger1 or self.leger2 or self.leger3 or self.leger4:
|
||||
result = [2*i for i in result]
|
||||
|
||||
result = [2**self.kontra*i for i in result]
|
||||
if self.tout:
|
||||
result = [2*i for i in result]
|
||||
if self.sie:
|
||||
result = [4*i for i in result]
|
||||
|
||||
return {
|
||||
self.spieler1: result[0],
|
||||
self.spieler2: result[1],
|
||||
self.spieler3: result[2],
|
||||
self.spieler4: result[3],
|
||||
}
|
||||
|
||||
def check(self):
|
||||
if sum(self.spielwert().values())==0:
|
||||
return u"\U0001F44D"
|
||||
else:
|
||||
return u"\U0001F44E"
|
||||
Loading…
Add table
Add a link
Reference in a new issue