fix ramsch, finalise db format
This commit is contained in:
parent
b2f92e7d27
commit
1d5dcfeb93
1 changed files with 56 additions and 61 deletions
115
app/models.py
115
app/models.py
|
|
@ -11,6 +11,16 @@ 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())
|
||||
|
|
@ -50,11 +60,9 @@ class Spiel(Model):
|
|||
# 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)
|
||||
durchmarsch_gewinner = Column(Integer(), nullable=True)
|
||||
verlierer = Column(Integer(), nullable=True)
|
||||
|
||||
jungfrau1 = Column(Boolean())
|
||||
jungfrau2 = Column(Boolean())
|
||||
jungfrau3 = Column(Boolean())
|
||||
|
|
@ -63,6 +71,7 @@ class Spiel(Model):
|
|||
|
||||
# Bonus info
|
||||
farbe = Column(String())
|
||||
kommentar = Column(String())
|
||||
|
||||
def spielwert(self):
|
||||
grundtarif = 20
|
||||
|
|
@ -74,73 +83,59 @@ class Spiel(Model):
|
|||
if self.spieltyp == "Sauspiel":
|
||||
spieler = set([self.spieler-1,self.mitspieler-1])
|
||||
nichtspieler = list(set([0,1,2,3])-spieler)
|
||||
sauspiel_total = grundtarif + self.schneider*extras+ self.laufende*extras
|
||||
|
||||
if self.gewonnen:
|
||||
result[self.spieler-1] = grundtarif
|
||||
result[self.mitspieler-1] = grundtarif
|
||||
result[nichtspieler[0]] = -grundtarif
|
||||
result[nichtspieler[1]] = -grundtarif
|
||||
result[self.spieler-1] = sauspiel_total
|
||||
result[self.mitspieler-1] = sauspiel_total
|
||||
result[nichtspieler[0]] = -sauspiel_total
|
||||
result[nichtspieler[1]] = -sauspiel_total
|
||||
else:
|
||||
result[self.spieler-1] = -grundtarif
|
||||
result[self.mitspieler-1] = -grundtarif
|
||||
result[nichtspieler[0]] = grundtarif
|
||||
result[nichtspieler[1]] = grundtarif
|
||||
result[self.spieler-1] = -sauspiel_total
|
||||
result[self.mitspieler-1] = -sauspiel_total
|
||||
result[nichtspieler[0]] = sauspiel_total
|
||||
result[nichtspieler[1]] = sauspiel_total
|
||||
|
||||
addExtras(result, self.schneider, extras)
|
||||
addExtras(result, self.laufende, extras)
|
||||
|
||||
elif self.spieltyp == "Wenz" or self.spieltyp == "Solo":
|
||||
spieler = set([self.spieler-1])
|
||||
nichtspieler = list(set([0,1,2,3])-spieler)
|
||||
solo_total = solo + self.schneider*extras+ self.laufende*extras
|
||||
if self.gewonnen:
|
||||
result[self.spieler-1] = 3*solo
|
||||
result[nichtspieler[0]] = -solo
|
||||
result[nichtspieler[1]] = -solo
|
||||
result[nichtspieler[2]] = -solo
|
||||
result[self.spieler-1] = 3*solo_total
|
||||
result[nichtspieler[0]] = -solo_total
|
||||
result[nichtspieler[1]] = -solo_total
|
||||
result[nichtspieler[2]] = -solo_total
|
||||
else:
|
||||
result[self.spieler-1] = -3*solo
|
||||
result[nichtspieler[0]] = solo
|
||||
result[nichtspieler[1]] = solo
|
||||
result[nichtspieler[2]] = solo
|
||||
result[self.spieler-1] = -3*solo_total
|
||||
result[nichtspieler[0]] = solo_total
|
||||
result[nichtspieler[1]] = solo_total
|
||||
result[nichtspieler[2]] = solo_total
|
||||
|
||||
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
|
||||
if self.durchmarsch_gewinner:
|
||||
gewinner = set([self.durchmarsch_gewinner-1])
|
||||
nichtGewinner= list(set([0,1,2,3])-gewinner)
|
||||
|
||||
result[self.durchmarsch_gewinner-1] = 3*solo
|
||||
result[nichtGewinner[0]] = -solo
|
||||
result[nichtGewinner[1]] = -solo
|
||||
result[nichtGewinner[2]] = -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
|
||||
verlierer = set([self.verlierer-1])
|
||||
nichtVerlierer = list(set([0,1,2,3])-verlierer)
|
||||
|
||||
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
|
||||
sum_verloren = 0
|
||||
result[nichtVerlierer[0]] = grundtarif + grundtarif* getattr(self, "jungfrau{}".format(nichtVerlierer[0]+1))
|
||||
result[nichtVerlierer[1]] = grundtarif + grundtarif* getattr(self, "jungfrau{}".format(nichtVerlierer[1]+1))
|
||||
result[nichtVerlierer[2]] = grundtarif + grundtarif* getattr(self, "jungfrau{}".format(nichtVerlierer[2]+1))
|
||||
|
||||
result[self.verlierer-1] = - result[nichtVerlierer[0]] - result[nichtVerlierer[1]] -result[nichtVerlierer[2]]
|
||||
|
||||
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]
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue