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"