Пример #1
0
    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'))
Пример #2
0
    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
Пример #3
0
	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'))
Пример #4
0
 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)
Пример #5
0
 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')
Пример #6
0
	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)
Пример #7
0
	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')
Пример #8
0
 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")
Пример #9
0
 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")
Пример #10
0
	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)
Пример #11
0
	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')
Пример #12
0
 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)
Пример #13
0
	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')
Пример #14
0
    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()
Пример #15
0
	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()
Пример #16
0
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)
Пример #17
0
	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')
Пример #18
0
    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')
Пример #19
0
	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')
Пример #20
0
    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')
Пример #21
0
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)
Пример #22
0
	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()
Пример #23
0
	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')
Пример #24
0
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})
Пример #25
0
 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')
Пример #26
0
    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')
Пример #27
0
 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')
Пример #28
0
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
Пример #29
0
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)
Пример #30
0
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)
Пример #31
0
    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')
Пример #32
0
Файл: base.py Проект: Pylons/kai
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)
Пример #33
0
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)
Пример #34
0
 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')
Пример #35
0
    def js_playground(self):
        from pylons import request

        c.sessid = request.session.id
        try:
            return render_mako("js_playground.mako")
        finally:
            session.save()
Пример #36
0
	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')
Пример #37
0
	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')
Пример #38
0
	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'))
Пример #39
0
 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')
Пример #40
0
	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')
Пример #41
0
 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")
Пример #42
0
 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')
Пример #43
0
	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'))}
Пример #44
0
	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')
Пример #45
0
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 ""
Пример #46
0
	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')
Пример #47
0
	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')
Пример #48
0
    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")
Пример #49
0
	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')
Пример #50
0
 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')
Пример #51
0
    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')
Пример #52
0
 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')
Пример #53
0
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)
Пример #54
0
	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')
Пример #55
0
 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')
Пример #56
0
    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')
Пример #57
0
 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')
Пример #58
0
    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=''))
Пример #59
0
	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')