def __before__(self): c.stylesheets = ['/css/admin.css'] c.javascript = ['/js/admin.js'] if self.database is not None: c.events = self.session.query(Event).all() c.seriesname = self.database self.eventid = self.routingargs.get('eventid', None) self.action = self.routingargs.get('action', '') c.isLocked = self.settings.locked c.settings = self.settings c.event = None if self.eventid and self.eventid.isdigit(): c.event = self.session.query(Event).get(self.eventid) if c.event is None and self.eventid not in (None, 's'): c.text = "<h3>No such event for %s</h3>" % self.eventid raise BeforePage(render_mako('/admin/simple.mako')) if self.database is None or (self.action == 'index' and c.event is None): return self._checkauth(c.event) if self.settings.locked: if self.action not in ('index', 'printcards', 'paid', 'numbers', 'paypal', 'newentrants', 'printhelp', 'forceunlock'): c.seriesname = self.settings.seriesname c.next = self.action raise BeforePage(render_mako('/admin/locked.mako'))
def toptimes(self): """ Returns the top times tables that are shown in the announer panel """ carid = int(request.GET.get('carid', 0)) ##data = self._toptimes(int(request.GET.get('carid', 0))) c.e2label = self.e2label ret = {} ret['updated'] = int(request.GET.get('updated', 0)) # Return it c.toptimes = self._loadTopTimes(carid, raw=False) #data['topnet'] ret['topnet'] = render_mako('/announcer/topnettimes.mako').replace( '\n', '') c.toptimes = self._loadTopTimes(carid, raw=True) #data['topraw'] ret['topraw'] = render_mako('/announcer/toprawtimes.mako').replace( '\n', '') if self.event.getSegmentCount() > 0: for ii in range(1, self.event.getSegmentCount() + 1): c.toptimes = data['topseg%d' % ii] ret['topseg%d' % ii] = render_mako('/announcer/topsegtimes.mako').replace( '\n', '') return ret
def index(self): if self.eventid and self.eventid.isdigit(): return render_mako('/admin/event.mako') elif self.database is not None: c.text = "<h2>%s Adminstration</h2>" % self.routingargs['database'] return render_mako('/admin/simple.mako') else: return self.databaseSelector(archived=True)
def newentrants(self): """ Return the list of new entrants/fees collected by event or for the series """ if self.eventid == 's': c.feelists = FeeList.getAll(self.session) return render_mako('/admin/newentrants.mako') else: c.feelists = FeeList.get(self.session, self.eventid) return render_mako('/admin/newentrants.mako')
def index(self): if self.eventid and self.eventid.isdigit(): return render_mako("/admin/event.mako") elif self.database is not None: c.text = "<h2>%s Adminstration</h2>" % self.routingargs["database"] return render_mako("/admin/simple.mako") else: c.files = map(os.path.basename, glob.glob("%s/*.db" % (config["seriesdir"]))) return render_mako("/databaseselect.mako")
def index(self): if self.eventid: return render_mako("/announcer/main.mako") elif self.database is not None: c.events = self.session.query(Event).all() return render_mako("/eventselect.mako") else: c.files = map(os.path.basename, glob.glob("%s/*.db" % (config["seriesdir"]))) return render_mako("/databaseselect.mako")
def index(self): if c.event: c.challenges = self.session.query(Challenge).filter(Challenge.eventid==c.event.id).all() return render_mako('/results/resultsindex.mako') elif self.database is not None: c.events = self.session.query(Event).order_by(Event.date).all() return render_mako('/results/eventselect.mako') else: return self.databaseSelector(archived=True)
def index(self): if c.event: c.challenges = self.session.query(Challenge).filter(Challenge.eventid==c.event.id).all() return render_mako('/resultsindex.mako') elif self.database is not None: c.events = self.session.query(Event).all() return render_mako('/eventselect.mako') else: c.files = map(os.path.basename, glob.glob('%s/*.db' % (config['seriesdir']))) return render_mako('/databaseselect.mako')
def index(self): if c.event: c.challenges = self.session.query(Challenge).filter( Challenge.eventid == c.event.id).all() return render_mako('/results/resultsindex.mako') elif self.database is not None: c.events = self.session.query(Event).order_by(Event.date).all() return render_mako('/results/eventselect.mako') else: return self.databaseSelector(archived=True)
def view(self): id = request.GET.get('event', None) if id is None: return render_mako('/register/eventselect.mako') c.classdata = ClassData(self.session) c.event = self.session.query(Event).get(id) query = self.session.query(Driver,Car,Registration).join('cars', 'registration').filter(Registration.eventid==id) query = query.order_by(Car.classcode, Car.number) c.reglist = query.all() return render_mako('/register/reglist.mako')
def index(self): c.title = 'Scorekeeper Announcer' if self.eventid: c.javascript = ['/js/announcer.js'] c.stylesheets = ['/css/announcer.css'] c.event = self.event return render_mako('/announcer/main.mako') elif self.database is not None: c.events = self.session.query(Event).all() return render_mako('/results/eventselect.mako') else: return self.databaseSelector()
def render(name, *args, **kwargs): if request.user_agent and any([x in request.user_agent for x in ('iPhone','webOS', 'Android')]): if 'use_non_mobile' in request.params: session['use_non_mobile'] = (request.params['use_non_mobile'] == 'yes') if session.get('use_non_mobile'): c.mobile_client = True else: try: return render_mako('/mobile' + name, *args, **kwargs) except TopLevelLookupException: # If a mobile template doesn't exist for this page, don't show # the 'use mobile interface' link. c.mobile_client = False return render_mako(name, *args, **kwargs)
def contactlist(self): c.classlist = self.session.query(Class).order_by(Class.code).all() c.indexlist = [""] + [x[0] for x in self.session.query(Index.code).order_by(Index.code)] c.preselect = request.GET.get('preselect', "").split(',') c.drivers = dict() for (dr, car, reg) in self.session.query(Driver, Car, Registration).join('cars', 'registration'): if self.eventid.isdigit() and reg.eventid != int(self.eventid): continue if dr.id not in c.drivers: dr.events = set([reg.eventid]) dr.classes = set([car.classcode]) c.drivers[dr.id] = dr else: dr = c.drivers[dr.id] dr.events.add(reg.eventid) dr.classes.add(car.classcode) if self.eventid.isdigit(): c.title = c.event.name c.showevents = False else: c.title = "Series" c.showevents = True return render_mako('/admin/contactlist.mako')
def contactlist(self): c.classlist = self.session.query(Class).order_by(Class.code).all() c.indexlist = [""] + [ x[0] for x in self.session.query(Index.code).order_by(Index.code) ] c.preselect = request.GET.get('preselect', "").split(',') c.drivers = dict() for (dr, car, reg) in self.session.query(Driver, Car, Registration).join( 'cars', 'registration'): if self.eventid.isdigit() and reg.eventid != int(self.eventid): continue if dr.id not in c.drivers: dr.events = set([reg.eventid]) dr.classes = set([car.classcode]) c.drivers[dr.id] = dr else: dr = c.drivers[dr.id] dr.events.add(reg.eventid) dr.classes.add(car.classcode) if self.eventid.isdigit(): c.title = c.event.name c.showevents = False else: c.title = "Series" c.showevents = True return render_mako('/admin/contactlist.mako')
def invalidcars(self): c.classdata = ClassData(self.session) c.invalidnumber = [] c.invalidclass = [] c.invalidindex = [] c.unindexedclass = [] c.restrictedindex = [] for car in self.session.query(Car): if car.number is None: c.invalidnumber.append(car) if not car.classcode or car.classcode not in c.classdata.classlist: c.invalidclass.append(car) if c.classdata.classlist[car.classcode].carindexed: if not car.indexcode or car.indexcode not in c.classdata.indexlist: c.invalidindex.append(car) if not c.classdata.classlist[car.classcode].carindexed: if car.indexcode: c.unindexedclass.append(car) if car.classcode: restrict = c.classdata.classlist[car.classcode].restrictedIndexes() if car.indexcode in restrict[0]: c.restrictedindex.append(car) if car.indexcode in restrict[1] and car.tireindexed: c.restrictedindex.append(car) return render_mako('/admin/invalidcars.mako')
def invalidcars(self): c.classdata = ClassData(self.session) c.invalidnumber = [] c.invalidclass = [] c.invalidindex = [] c.unindexedclass = [] c.restrictedindex = [] for car in self.session.query(Car): if car.number is None: c.invalidnumber.append(car) if not car.classcode or car.classcode not in c.classdata.classlist: c.invalidclass.append(car) if c.classdata.classlist[car.classcode].carindexed: if not car.indexcode or car.indexcode not in c.classdata.indexlist: c.invalidindex.append(car) if not c.classdata.classlist[car.classcode].carindexed: if car.indexcode: c.unindexedclass.append(car) if car.classcode: restrict = c.classdata.classlist[ car.classcode].restrictedIndexes() if car.indexcode in restrict[0]: c.restrictedindex.append(car) if car.indexcode in restrict[1] and car.tireindexed: c.restrictedindex.append(car) return render_mako('/admin/invalidcars.mako')
def render(*args, **kargs): if args[0].startswith('/'): # assuming we are looking for a template file to render template_file = 'lca2011' + args[0] #print template_file #return render_mako(template_file) return render_mako(*args, **kargs)
def __before__(self): action = self.routingargs.get('action', '') if action == 'ipn': # nothing else needs to be done for IPN return c.title = 'Scorekeeper Registration' c.stylesheets = ['/css/register.css', '/css/redmond/jquery-ui-1.8.2.custom.css'] c.javascript = ['/js/register.js', '/js/jquery-1.4.2.min.js', '/js/jquery-ui-1.8.2.custom.min.js', '/js/jquery.validate.min.js'] c.tabflags = {} c.sponsorlink = self.settings.sponsorlink c.seriesname = self.settings.seriesname ipsession = session.setdefault(self.srcip, {}) if self.database is not None: self.user = ipsession.setdefault(self.database, {}) c.driverid = self.user.get('driverid', 0) c.firstname = self.user.get('firstname', '') c.lastname = self.user.get('lastname', '') c.previouserror = self.user.get('previouserror', '') self.user['previouserror'] = '' if action in ['index', 'events', 'cars', 'profile'] and c.driverid < 1: session.save() redirect(url_for(action='login')) if action not in ['view'] and self.settings.locked: # Delete any saved session data for this person del ipsession[self.database] session.save() raise BeforePage(render_mako('/register/locked.mako')) c.events = self.session.query(Event).all() c.cars = self.session.query(Car).filter(Car.driverid==c.driverid).order_by(Car.classcode,Car.number).all() session.save()
def weekend(self): """ Create a weekend report reporting unique entrants and their information """ bins = defaultdict(list) events = self.session.query(Event).order_by(Event.date).all() for e in events: wed = e.date + timedelta(-(e.date.weekday()+5)%7) # convert M-F(0-7) to Wed-Tues(0-7), formerly (2-6,0-1) bins[wed].append(e) c.weeks = dict() for wed in sorted(bins): eventids = [e.id for e in bins[wed]] report = WeekendReport() c.weeks[wed] = report report.events = bins[wed] report.drivers = self.session.query(Driver).join('cars', 'runs').filter(Run.eventid.in_(eventids)).distinct().all() report.membership = list() report.invalid = list() for d in report.drivers: if d.membership is None: d.membership = "" try: report.membership.append(_validateNumber(d.membership) or "") except IndexError: report.invalid.append(d.membership or " ") report.membership.sort() # TODO: should we take into account first letters and go totally numeric? report.invalid.sort() return render_mako('/admin/weekend.mako')
def render(path, controller, **kwargs): kwargs.setdefault('flash_now', None) kwargs.setdefault('error_now', None) return render_mako(os.path.join(controller, path), extra_vars={'webhelpers' : webhelpers, 'h' : helpers, 'config' : config, 'kwargs' : kwargs})
def all(self): c.title = 'Results for All Classes' c.header = '<h2>Results for All Classes</h2>' c.results = getClassResults(self.session, self.settings, c.event, c.classdata, [cls.code for cls in c.active]) return render_mako('db:classresult.mako')
def runorder(self): """ Returns the HTML to render the NextToFinish box """ c.order = loadNextRunOrder(self.session, self.event, int(request.GET.get('carid', 0))) return render_mako('/announcer/runorder.mako')
def classlist(self): c.action = 'processClassList' c.classlist = self.session.query(Class).order_by(Class.code).all() c.indexlist = [""] + [ x[0] for x in self.session.query(Index.code).order_by(Index.code) ] return render_mako('/admin/classlist.mako')
def render(template_name, extra_vars=None, cache_key=None, cache_type=None, cache_expire=None, overlay=False): """ Signature matches that of pylons actual render_mako. Except for the *overlay* parameter. If it is *True*, the template will be rendered in a minimal template containing only the main content markup of the site. """ if not extra_vars: extra_vars = {} extra_vars.update(tpl_vars()) if overlay: extra_vars['root_template'] = '/overlay.html' page = render_mako(template_name, extra_vars=extra_vars, cache_key=cache_key, cache_type=cache_type, cache_expire=cache_expire) return page
def render(name, *args, **kwargs): if request.user_agent and any( [x in request.user_agent for x in ('iPhone', 'webOS', 'Android')]): if 'use_non_mobile' in request.params: session['use_non_mobile'] = ( request.params['use_non_mobile'] == 'yes') if session.get('use_non_mobile'): c.mobile_client = True else: try: return render_mako('/mobile' + name, *args, **kwargs) except TopLevelLookupException: # If a mobile template doesn't exist for this page, don't show # the 'use mobile interface' link. c.mobile_client = False return render_mako(name, *args, **kwargs)
def grid(self): #if not config['nwrsc.private']: # raise BeforePage("Grid for onsite use only") classmap = dict() groups = [RunGroupList(0)] for item in self.session.query(RunGroup).order_by( RunGroup.rungroup, RunGroup.gorder).filter(RunGroup.eventid == self.eventid): if groups[-1].groupnum != item.rungroup: groups.append(RunGroupList(item.rungroup)) classmap[item.classcode] = ClassOrder(item.classcode) groups[-1].addClass(classmap[item.classcode]) if request.GET.get('order', 'number') == 'position': for (driver, car, res) in self.session.query( Driver, Car, EventResult).join('cars', 'results').filter( EventResult.eventid == self.eventid).order_by( EventResult.position): if car.classcode in classmap: car.position = res.position car.sum = res.sum classmap[car.classcode].add(driver, car, 'position') else: for (driver, car, reg) in self.session.query( Driver, Car, Registration).join('cars', 'registration').filter( Registration.eventid == self.eventid).order_by( Car.number): if car.classcode in classmap: car.sum = 0.0 classmap[car.classcode].add(driver, car, 'number') # Create the actual list of matched left,right cars c.groups = list() for group in groups[1:]: index = 1 list1 = [] list2 = [] for cls in group.classes: if len(cls.first) > 0: xiter = iter(cls.first + [None]) list1.extend(zip(xiter, xiter)) if len(cls.second) > 0: xiter = iter(cls.second + [None]) list2.extend(zip(xiter, xiter)) c.groups.append((list1, list2)) # Collapse back/back rows of single drivers for group in c.groups: for subgroup in group: jj = 0 while jj < len(subgroup) - 1: if subgroup[jj][1] is None and subgroup[jj + 1][1] is None: subgroup[jj] = (subgroup[jj][0], subgroup[jj + 1][0]) del subgroup[jj + 1] jj += 1 return render_mako('/results/grid.mako')
def render(template_name, **kwargs): """Render override that add's babel objects""" extra_vars = kwargs.pop('extra_vars', {}) c = pylons.tmpl_context._current_obj() extra_vars['format'] = c._format extra_vars['locale'] = c._locale extra_vars['timezone'] = c._tzinfo return render_mako(template_name, extra_vars=extra_vars, **kwargs)
def render_mako(template_name, template_vars, **kwargs): if asbool(config.get('use_dotted_templatenames', 'true')): template_name = tg.config['pylons.app_globals'].\ dotted_filename_finder.get_dotted_filename(template_name, template_extension='.mak') return templating.render_mako(template_name, extra_vars=template_vars, **kwargs)
def post(self): c.results = getClassResults(self.session, self.settings, c.event, c.classdata, [cls.code for cls in c.active]) c.entrantcount = sum( [len(data) for code, data in c.results.iteritems()]) c.toptimes = TopTimesStorage(self.session, c.event, c.classdata) return render_mako('db:event.mako')
def js_playground(self): from pylons import request c.sessid = request.session.id try: return render_mako("js_playground.mako") finally: session.save()
def challenge(self): challengeid = int(request.GET.get('id', 1)) c.challenge = self.session.query(Challenge).get(challengeid) c.rounds = dict() for rnd in self.session.query(ChallengeRound).filter(ChallengeRound.challengeid == challengeid).all(): c.rounds[rnd.round] = rnd loadChallengeResults(self.session, c.challenge.id, c.rounds) return render_mako('/challenge/challengereport.mako')
def bracket(self): c.javascript.append('/js/jquery-1.4.2.min.js'); challenge = self.session.query(Challenge).get(int(request.GET.get('id', 0))) b = Bracket(challenge.depth) # Just getting the coords, no drawing takes place b.getImage() c.coords = b.getCoords() c.cid = challenge.id return render_mako('/challenge/bracketbase.mako')
def __before__(self): action = self.routingargs.get('action', '') if action == 'ipn': # nothing else needs to be done for IPN return c.title = 'Scorekeeper Registration' c.stylesheets = ['/css/register.css'] c.javascript = ['/js/register.js'] c.activeSeries = self._activeSeries() if self.database is None: return self.user = UserSession(session.setdefault(('register', self.srcip), {}), self.database) c.settings = self.settings c.database = self.database c.driverid = self.user.getDriverId() c.previouserror = self.user.getPreviousError() c.classdata = ClassData(self.session) c.eventmap = dict() now = datetime.datetime.now() for event in self.session.query(Event): event.closed = now > event.regclosed event.opened = now > event.regopened event.isOpen = not event.closed and event.opened c.eventmap[event.id] = event c.events = sorted(c.eventmap.values(), key=lambda obj: obj.date) if action not in ('view') and self.settings.locked: # Delete any saved session data for this person raise BeforePage(render_mako('/register/locked.mako')) if action in ('index', 'events', 'cars', 'profile') and c.driverid < 1: c.activecreds = self.user.activeCreds() for cred in c.activecreds: driver = self._verifyID(**cred.__dict__) if driver is not None: self.user.setLoginInfo(driver) c.driverid = self.user.getDriverId() return # continue on to regular page, we are now verified c.fields = self.session.query(DriverField).all() c.otherseries = self.user.activeSeries() raise BeforePage(render_mako('/register/login.mako'))
def challenge(self): challengeid = myint(request.GET.get('id', 1)) c.challenge = self.session.query(Challenge).get(challengeid) c.rounds = dict() for rnd in self.session.query(ChallengeRound).filter( ChallengeRound.challengeid == challengeid).all(): c.rounds[rnd.round] = rnd loadChallengeResults(self.session, c.challenge.id, c.rounds) return render_mako('/challenge/challengereport.mako')
def list(self): query = self.session.query(Driver,Car,Registration).join('cars', 'registration').filter(Registration.eventid==self.eventid) c.classdata = ClassData(self.session) c.registered = {} for (driver, car, reg) in query.all(): if car.classcode not in c.registered: c.registered[car.classcode] = [] c.registered[car.classcode].append(RegObj(driver, car, reg)) return render_mako('/admin/entrylist.mako')
def editor(self): if "name" not in request.GET: return "Missing name" c.name = request.GET["name"] c.data = "" data = self.session.query(Data).get(c.name) if data is not None: c.data = data.data return render_mako("/admin/editor.mako")
def editor(self): if 'name' not in request.GET: return "Missing name" c.name = request.GET['name'] c.data = "" data = self.session.query(Data).get(c.name) if data is not None: c.data = data.data return render_mako('/admin/editor.mako')
def getitems(self): c.items = list() for id in map(int, request.GET.get('driverids', "").split(',')): dr = self.session.query(Driver).filter(Driver.id==id).first(); cars = self.session.query(Car).filter(Car.driverid==id).all(); for car in cars: car.runs = len(self.session.query(Run.eventid).distinct().filter(Run.carid==car.id).filter(Run.eventid<100).all()) c.items.append(self.DriverInfo(dr, cars)) return {'data': str(render_mako('/admin/driverinfo.mako'))}
def bracket(self): c.javascript.append('/js/external/jquery-1.9.0.js'); challenge = self.session.query(Challenge).get(myint(request.GET.get('id', 0))) if challenge is None: abort(404, "Invalid or no challenge id") b = Bracket(challenge.depth) # Just getting the coords, no drawing takes place b.getImage() c.coords = b.getCoords() c.cid = challenge.id return render_mako('/challenge/bracketbase.mako')
def document_preview(target_url): key = "rca.1.1.20140729T133847Z.c5e76a9d7bb0d277.20ab36596feb419a8283b4a21557d53414834752" request_url = "http://rca.yandex.com/?key=%s&url=%s" % (key, target_url) resp = urllib2.urlopen(request_url).read() json_decoder = json.JSONDecoder() result = json_decoder.decode(resp) if result: c.json = result return render_mako("page_preview.mako") return ""
def rungroups(self): c.action = 'setRunGroups' c.groups = {0:[]} allcodes = set([res[0] for res in self.session.query(Class.code)]) for group in self.session.query(RunGroup).order_by(RunGroup.rungroup, RunGroup.gorder).filter(RunGroup.eventid==self.eventid).all(): c.groups.setdefault(group.rungroup, list()).append(group.classcode) allcodes.discard(group.classcode) for code in sorted(allcodes): c.groups[0].append(code) return render_mako('/admin/editrungroups.mako')
def byclass(self): classlist = set(request.str_GET['list'].split(',')) classlist.intersection_update(set(c.classdata.classlist)) if len(classlist) == 0: abort(404, "No valid classes provided (class codes are case sensitive)") c.title = 'Results for Class %s' % (','.join(classlist)) c.header = '<h2>%s</h2>' % (c.title) c.results = getClassResults(self.session, self.settings, c.event, c.classdata, classlist) return render_mako('db:classresult.mako')
def processPurge(self): try: import sqlite3 except: from pysqlite2 import dbapi2 as sqlite3 searchseries = list() purgeclasses = list() for k in request.POST.keys(): if k[0:2] == "c-": purgeclasses.append(k[2:]) elif k[0:2] == "s-": searchseries.append(k[2:]) # All cars that have runs in any previous database carids = set() for s in searchseries: conn = sqlite3.connect(os.path.join(config["seriesdir"], s)) conn.row_factory = sqlite3.Row cur = conn.cursor() cur.execute("select distinct carid from runs") carids.update([x[0] for x in cur.fetchall()]) conn.close() # All drivers associated with those runs driverids = set() for s in searchseries: conn = sqlite3.connect(os.path.join(config["seriesdir"], s)) conn.row_factory = sqlite3.Row cur = conn.cursor() cur.execute("select distinct driverid from cars where id in (%s)" % (",".join(map(str, carids)))) driverids.update([x[0] for x in cur.fetchall()]) conn.close() # Drivers in this database that have no unique/email # blankdr = [x[0] for x in self.session.execute("select id from drivers where email=''")] delcar = deldr = 0 if len(searchseries) > 0: # don't delete if they didn't select any series, that will delete all delcar = self.session.execute( "delete from cars where id not in (%s)" % (",".join(map(str, carids))) ).rowcount # delcar += self.session.execute("delete from cars where driverid in (%s)" % ','.join(map(str,blankdr))).rowcount deldr = self.session.execute( "delete from drivers where id not in (%s)" % (",".join(map(str, driverids))) ).rowcount # deldr += self.session.execute("delete from drivers where id in (%s)" % ','.join(map(str,blankdr))).rowcount if len(purgeclasses) > 0: sqllist = "', '".join(purgeclasses) delcar += self.session.execute("delete from cars where classcode in ('" + sqllist + "')").rowcount self.session.commit() c.text = "<h4>Deleted %s cars and %s drivers</h4>" % (delcar, deldr) return render_mako("/admin/simple.mako")
def cars(self): c.classdata = ClassData(self.session) c.inuse = [] c.notinuse = [] regids = [x[0] for x in self.session.query(Registration.carid).join('car').distinct().filter(Car.driverid==c.driverid)] for car in c.cars: if car.id in regids: c.inuse.append(car) else: c.notinuse.append(car) return render_mako('/register/cars.mako')
def list(self): query = self.session.query(Driver, Car, Registration).join( 'cars', 'registration').filter(Registration.eventid == self.eventid) c.classdata = ClassData(self.session) c.registered = {} for (driver, car, reg) in query.all(): if car.classcode not in c.registered: c.registered[car.classcode] = [] c.registered[car.classcode].append(RegObj(driver, car, reg)) return render_mako('/admin/entrylist.mako')
def dialins(self): c.order = request.GET.get('order', 'Net') c.filter = request.GET.get('filter', 'All') c.dialins = Dialins(self.session, self.eventid) if c.order == 'Diff': c.dialins.sort(key=operator.attrgetter('diff')) else: c.dialins.sort(key=operator.attrgetter('net')) return render_mako('/challenge/dialins.mako')
def rungroups(self): c.action = 'setRunGroups' c.groups = {0: []} allcodes = set([res[0] for res in self.session.query(Class.code)]) for group in self.session.query(RunGroup).order_by( RunGroup.rungroup, RunGroup.gorder).filter( RunGroup.eventid == self.eventid).all(): c.groups.setdefault(group.rungroup, list()).append(group.classcode) allcodes.discard(group.classcode) for code in sorted(allcodes): c.groups[0].append(code) return render_mako('/admin/editrungroups.mako')
def render(*args, **kwargs): if not config['beaker.cache.enabled']: if 'cache_key' in kwargs: del kwargs['cache_key'] if 'cache_expire' in kwargs: del kwargs['cache_expire'] if len(args)==2: # if args is 'template_filename', 'def_name' then call the def return render_mako_def(*args, **kwargs) else: # else if only 'template_filename' call the template file return render_mako(*args, **kwargs)
def index(self): """ First load of page gets all data along with it so no need for lots of ajax requests """ if self.database is None: return self.databaseSelector(archived=False) self._loadDriver() self._loadCars() if c.driver is None: c.previouserror = "Invalid driver ID saved in session, that is pretty weird, login again" self.user.clearSeries() c.otherseries = self.user.activeSeries() return render_mako('/register/login.mako') for e in c.events: e.regentries = self.session.query(Registration).join('car') \ .filter(Registration.eventid==e.id).filter(Car.driverid==c.driverid).all() e.payments = self.session.query(Payment) \ .filter(Payment.eventid==e.id).filter(Payment.driverid==c.driverid).all() return render_mako('/register/layout.mako')
def bracket(self): c.javascript.append('/js/external/jquery-1.9.0.js') challenge = self.session.query(Challenge).get( myint(request.GET.get('id', 0))) if challenge is None: abort(404, "Invalid or no challenge id") b = Bracket( challenge.depth) # Just getting the coords, no drawing takes place b.getImage() c.coords = b.getCoords() c.cid = challenge.id return render_mako('/challenge/bracketbase.mako')
def byclass(self): classlist = set(request.str_GET['list'].split(',')) classlist.intersection_update(set(c.classdata.classlist)) if len(classlist) == 0: abort( 404, "No valid classes provided (class codes are case sensitive)") c.title = 'Results for Class %s' % (','.join(classlist)) c.header = '<h2>%s</h2>' % (c.title) c.results = getClassResults(self.session, self.settings, c.event, c.classdata, classlist) return render_mako('db:classresult.mako')
def bygroup(self): list = request.str_GET['list'].split(',') course = request.str_GET['course'] c.title = 'Results for Group %s' % (request.str_GET['list']) c.header = '<h2>%s</h2>' % (c.title) codes = self.session.query(Car.classcode).join(RunOrder).distinct() \ .filter(RunOrder.eventid == self.eventid) \ .filter(RunOrder.course == course) \ .filter(RunOrder.rungroup.in_(list)) \ .all() c.results = getClassResults(self.session, self.settings, c.event, c.classdata, [x.classcode for x in codes]) return render_mako('db:classresult.mako')
def deleteevent(self): """ Request to delete an event, verify if we can first, then do it """ if self.session.query(Run).filter( Run.eventid == self.eventid).count() > 0: c.text = "<h3>%s has runs assigned to it, you cannot delete it</h3>" % ( c.event.name) raise BeforePage(render_mako('/admin/simple.mako')) # no runs, kill it self.session.query(Registration).filter( Registration.eventid == self.eventid).delete() self.session.query(Event).filter(Event.id == self.eventid).delete() self.session.commit() redirect(url_for(eventid='s', action=''))
def view(self): try: id = int(self.routingargs.get('other', 0)) except: abort(404, "No event for input provided") if id == 0: redirect(url_for(action='')) c.classdata = ClassData(self.session) c.event = self.session.query(Event).get(id) query = self.session.query(Driver,Car,Registration).join('cars', 'registration').filter(Registration.eventid==id) query = query.order_by(Car.classcode, Car.number) c.reglist = query.all() return render_mako('/register/reglist.mako')