def __init__(self): from users import rank_check from germ.lib import chk ent_table.__init__(self, attributes = [ ('name', string(label.party, perm.all, '', 20, [chk.name])), ('status', choice(label.status, self.opt_status, perm.edit)), ('date', date(label.date, perm.all)), ('organizer', string(label.organizer, perm.all, '', 10)), ('location', string(label.location, perm.all, '', 128)), ('entry_fee_advance', string(label.entry_fee_advance, perm.all, '', 16)), ('entry_fee', string(label.entry_fee, perm.all, '', 16)) ], primary_keys = [ 'name' ], relations = [ relation( table = 'users', keys = { 'organizer': 'username' }, cond = { 'all': "users.rank > 1" }) ], item_txt = { 'edit': { 'en': 'Party Settings', 'de': 'Party Einstellungen' }, 'submit': { 'en': 'Add Party', 'de': 'Party hinzuf"ugen' }, 'view': { 'en': 'View Parties', 'de': 'Partys ansehen' }, 'delete': { 'en': 'Delete Party', 'de': 'Party l"oschen' } }, perm = { 'all': rank_check(self, 1), 'view': True } )
def perm_paid(self, attrs): if not self.pks_locked(): return True if self.has_paid(): return False from users import rank_check if rank_check(self, 1)(): return True
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 } )
def __init__(self): opt_bracket = [ { 'en': 'Winner' }, { 'en': 'Loser' } ] opt_status = [ { 'en': 'pending', 'de': 'l"auft' }, { 'en': 'Team 1 wins', 'de': 'Team 1 gewinnt' }, { 'en': 'Team 2 wins', 'de': 'Team 2 gewinnt' } ] from users import rank_check ent_table.__init__(self, attributes = [ ('party', string(label.party, perm.all, '', 20)), ('tourney', string(label.tourney, perm.all, '', 32)), ('round', attr_int(label.round, perm.edit)), ('stage', attr_int(label.stage, perm.edit)), ('bracket', choice(label.bracket, opt_bracket, perm.edit)), ('id', attr_int(label.id, perm.edit)), ('team1', string(label.team1, perm.view, '', 32)), ('team2', string(label.team2, perm.view, '', 32)), ('status', choice(label.status, opt_status, perm.edit)) ], primary_keys = [ 'party', 'tourney', 'round', 'stage', 'bracket', 'id' ], relations = [ relation( table = 'double_elimination', alias = 't1', keys = { 'party': 'party', 'tourney': 'tourney', 'round': 'round', 'stage': 'stage', 'bracket': 'bracket', 'id': 'id' }, # TODO: Is there a neater way to do this and can we get rid of the # nested SELECT? cond = { 'edit': "(t1.bracket = 1 AND (2*t1.round + t1.stage) = " \ "(SELECT MAX(2*t2.round + t2.stage) " \ "FROM double_elimination AS t2 " \ "WHERE t1.party = t2.party AND t1.tourney = t2.tourney " \ "AND t1.bracket = t2.bracket)) OR " \ "(t1.bracket = 0 AND (2*t1.round + t1.stage) = " \ "(SELECT MAX(2*t2.round + t2.stage) " \ "FROM double_elimination AS t2 " \ "WHERE t1.party = t2.party AND t1.tourney = t2.tourney " \ "AND t1.bracket = t2.bracket))" } ), relation( table = 'team', alias = 'tm1', keys = { 'party': 'party', 'tourney': 'tourney', 'team1': 'name' } ), relation( table = 'team', alias = 'tm2', keys = { 'party': 'party', 'tourney': 'tourney', 'team2': 'name' } ) ], perm = { 'edit': rank_check(self, 2), 'view': True }, item_txt = { 'edit': { 'en': 'Enter game results', 'de': 'Spielergebnisse eintragen' }, 'submit': { 'en': 'Add game', 'de': 'Spiel hinzuf"ugen' }, 'list': { 'en': 'Game results', 'de': 'Spielergebnisse' } } )