From 1d5dcfeb939448238f55b2d874123f3457203502 Mon Sep 17 00:00:00 2001 From: Balthasar Schachtner Date: Tue, 18 Jun 2019 16:37:25 +0200 Subject: [PATCH] fix ramsch, finalise db format --- app/models.py | 117 ++++++++++++++++++++++++-------------------------- 1 file changed, 56 insertions(+), 61 deletions(-) diff --git a/app/models.py b/app/models.py index 6090748..89c4f57 100644 --- a/app/models.py +++ b/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 - 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.durchmarsch_gewinner: + gewinner = set([self.durchmarsch_gewinner-1]) + nichtGewinner= list(set([0,1,2,3])-gewinner) - 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[self.durchmarsch_gewinner-1] = 3*solo + result[nichtGewinner[0]] = -solo + result[nichtGewinner[1]] = -solo + result[nichtGewinner[2]] = -solo + + else: + verlierer = set([self.verlierer-1]) + nichtVerlierer = list(set([0,1,2,3])-verlierer) + + 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]