intermediate commit

This commit is contained in:
Balthasar Schachtner 2020-02-23 17:09:54 +01:00
parent d91b120bd0
commit 74a22c2721
4 changed files with 24 additions and 83 deletions

View file

@ -2,6 +2,8 @@ from flask_appbuilder import Model
from sqlalchemy import Column, Integer, String, ForeignKey, Boolean from sqlalchemy import Column, Integer, String, ForeignKey, Boolean
from sqlalchemy.orm import relationship from sqlalchemy.orm import relationship
from .abrechnung import spielwert
""" """
You can use the extra Flask-AppBuilder fields and Mixin's You can use the extra Flask-AppBuilder fields and Mixin's
@ -62,6 +64,7 @@ class Spiel(Model):
schneider = Column(Integer(), default=0) schneider = Column(Integer(), default=0)
laufende = Column(Integer(), default=0) laufende = Column(Integer(), default=0)
mit = Column(Boolean)
# Hat der Spieler gewonnen? # Hat der Spieler gewonnen?
gewonnen = Column(Boolean, nullable=True) gewonnen = Column(Boolean, nullable=True)
@ -84,88 +87,16 @@ class Spiel(Model):
endzeit = Column(Integer(), nullable=True) endzeit = Column(Integer(), nullable=True)
kommentar = Column(String()) kommentar = Column(String())
# Meta
device_ID = Column(String())
version = Column(String())
def spielwert(self): def spielwert(self):
grundtarif = 20 return spielwert(**self.__dict__)
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)
sauspiel_total = grundtarif + self.schneider*extras+ self.laufende*extras
if self.gewonnen:
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] = -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_total
result[nichtspieler[0]] = -solo_total
result[nichtspieler[1]] = -solo_total
result[nichtspieler[2]] = -solo_total
else:
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_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:
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]]
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): def check(self):
if sum(self.spielwert().values())==0: if sum(self.spielwert().values())==0:
return u"\U0001F44D" return u"\U0001F44D"
else: else:
return u"\U0001F44E" return u"\U0001F44E"
return u"\U0001F44E"

View file

@ -38,7 +38,15 @@ from . import appbuilder, db
""" """
Application wide 404 error handler Application wide 404 error handler
""" """
class SpielModelApi(ModelRestApi):
resource_name = 'spiel'
datamodel = SQLAInterface(Spiel)
appbuilder.add_api(SpielModelApi)
class SpielerModelApi(ModelRestApi):
resource_name = 'spieler'
datamodel = SQLAInterface(Spieler)
appbuilder.add_api(SpielerModelApi)
@appbuilder.app.errorhandler(404) @appbuilder.app.errorhandler(404)
def page_not_found(e): def page_not_found(e):
@ -72,17 +80,17 @@ class MySpielView(ModelView):
# } # }
# add_columns = ['spieler1','spieler2','spieler3','spieler4'] # add_columns = ['spieler1','spieler2','spieler3','spieler4']
list_columns = ('spieler1','spieler2','spieler3','spieler4', "spielwert", "check") list_columns = ('spieler0','spieler1','spieler2','spieler3', "spielwert", "check")
# column_list = (Spiel.spieler1, Spiel.spieler2, Spiel.spieler3, Spiel.spieler4) # column_list = (Spiel.spieler1, Spiel.spieler2, Spiel.spieler3, Spiel.spieler4)
show_fieldsets = [ show_fieldsets = [
( (
'Spieler', 'Spieler',
{'fields':['spieler1','spieler2','spieler3','spieler4']} {'fields':['spieler0','spieler1','spieler2','spieler3']}
), ),
( (
'Leger', 'Leger',
{'fields':['leger1','leger2','leger3','leger4'], {'fields':['leger0','leger1','leger2','leger3'],
'expanded':False} 'expanded':False}
), ),
( (
@ -114,3 +122,5 @@ appbuilder.add_view(
category="Schafkopf", category="Schafkopf",
category_icon='fa-envelope' category_icon='fa-envelope'
) )

View file

@ -2750,7 +2750,7 @@
"source": [ "source": [
"def minutes(x):\n", "def minutes(x):\n",
" return \"{:02d}:{:02d}\".format(int(x//60), int(x%60))\n", " return \"{:02d}:{:02d}\".format(int(x//60), int(x%60))\n",
"df_results[\"spieldauer\"] = (df_results.endzeit-df_results.startzeit).apply(minutes)" "#df_results[\"spieldauer\"] = (df_results.endzeit-df_results.startzeit).apply(minutes)"
] ]
}, },
{ {
@ -3068,7 +3068,7 @@
"name": "python", "name": "python",
"nbconvert_exporter": "python", "nbconvert_exporter": "python",
"pygments_lexer": "ipython3", "pygments_lexer": "ipython3",
"version": "3.6.7" "version": "3.8.1"
}, },
"toc": { "toc": {
"colors": { "colors": {