def __init__(self): #from users import rank_check #perm_paid = { # 'view': True, # 'edit': rank_check(self, 1) } perm_paid = { 'view': True, 'edit': self.perm_paid } perm_seat = { 'edit': self.perm_seat } from germ.lib import chk ent_table.__init__(self, attributes = [ ('party', string(label.party, perm.all + ['delete'], '', 20)), ('username', string(label.username, perm.all + ['delete'], '', 10)), ('seat', int(label.seat, perm_seat, 0, 8, [chk.greater_equal(0)])), ('paid', bool(label.paid, perm_paid, 0)) ], primary_keys = [ 'party', 'username' ], relations = [ relation( table = 'users', keys = { 'username': '******' }, cond = { 'edit': "users.username = $userid OR " \ "users.rank < $users.rank", #"(users.username = $userid AND " \ # # make sure user has paid # "(gamer.paid = TRUE OR $users.rank > 0)) OR " \ #"users.rank < $users.rank", 'submit': "users.username = $userid OR users.rank < $users.rank", 'delete': # The 'gamer.paid = 0' condition should make sure that the # gamer is not subscribed to any tournaments yet, so that # cancelling the registration does not violate any # dependencies. Cancelling a registration after the gamer # has paid requires special considerations. "(users.username = $userid OR users.rank < $users.rank) " \ "AND gamer.paid = FALSE" }), relation( table = 'party', keys = { 'party': 'name' }, cond = { # party has to be in registration phase or # running phase 'submit': "party.status IN (1, 2)", 'edit': "party.status IN (1, 2)" }), relation( table = 'gamer', alias = 'seats', keys = { 'seat': 'seat' }, cond = { 'edit': "seats.seat IS NULL OR seats.seat = '0'" }, outer_join = "LEFT") ], item_txt = { 'edit': { 'en': 'Joined Parties', 'de': 'Anmeldung' }, 'submit': { 'en': 'Join Party', 'de': 'Anmelden' }, 'delete': { 'en': 'Cancel Party', 'de': 'Abmelden' }, 'view': { 'en': 'Gamers', 'de': 'Spieler' }, 'list': { 'en': 'Gamers', 'de': 'Spieler' } }, action_txt = { 'submit': { 'en': 'register', 'de': 'anmelden' }, 'delete': { 'en': 'unregister', 'de': 'abmelden' } }, action_report = { 'submit': { 'en': 'Your party registration has been submitted', 'de': 'Ihre Anmeldung wurde aufgenommen' }, 'delete': { 'en': 'You have cancelled your party registration', 'de': 'Sie sind abgemeldet' } })
def __init__(self): opt_mode = [ { 'en': 'manual', 'de': 'manuell' }, { 'en': 'single elimination' }, { 'en': 'double elimination' } ] opt_phase = [ # 1 { 'en': 'announced' , 'de': 'angek"undigt' }, # 2 { 'en': 'in preparation', 'de': 'in Vorbereitung' }, # 3 { 'en': 'started', 'de': 'gestartet' }, # 4 { 'en': 'finished', 'de': 'beendet' } ] self.__prev_phase = None self.__next_phase = None self.__teams = None from users import rank_check ent_table.__init__(self, attributes = [ ('name', string(label.tourney, perm.all + ['delete'], None, 32)), ('party', string(label.party, perm.all + ['delete'], '', 20)), ('organizer', string(label.organizer, perm.all, '', 10)), ('mode', choice(label.tourney_mode, opt_mode, perm.all)), ('phase', choice(label.tourney_phase, opt_phase, perm.edit)), ('teamsize', int(label.teamsize, perm.all, 1, 2)) ], primary_keys = [ 'party', 'name' ], relations = [ relation( table = 'tourney', alias = 'tn', keys = { 'party': 'party', 'name': 'name' }, cond = { 'delete': "tn.phase IN (0)", 'edit': "tn.phase IN (0, 1)" }, outer_join = "LEFT" ), relation( table = 'users', alias = 'orga', keys = { 'organizer': 'username' }, cond = { 'all': "orga.rank > 0" } ), relation( table = 'party', keys = { 'party': 'name' }, # party must be on cond = { 'submit': "party.status IN (1, 2)", 'edit': "party.status IN (1, 2)" } ) ], item_txt = { 'edit': { 'en': 'Tourney Settings', 'de': 'Turniereinstellungen' }, 'submit': { 'en': 'New Tourney', 'de': 'Turnier hinzuf"ugen' }, 'view': { 'en': 'Tourneys', 'de': 'Turniere' }, 'list': { 'en': 'Tourneys', 'de': 'Turniere' }, 'delete': { 'en': 'Delete Tourney', 'de': 'Turnier l"oschen' } }, perm = { 'all': rank_check(self, 2), 'view': True, 'list': True } )