Ejemplo n.º 1
0
Archivo: gamer.py Proyecto: drizzd/germ
	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' } })
Ejemplo n.º 2
0
	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 } )