Пример #1
0
def getExportGrid():
    race = Model.race
    try:
        externalInfo = race.excelLink.read()
    except:
        externalInfo = {}

    GetTranslation = _
    allZeroStarters = True
    with UnstartedRaceWrapper():
        catMap = dict(
            (c.fullname, c) for c in race.getCategories(startWaveOnly=False))
        catDetails = GetCategoryDetails(False, True)
        catDetailsMap = dict((cd['name'], cd) for cd in catDetails)

        title = u'\n'.join([
            _('Categories'), race.title, race.scheduledStart + u' ' +
            _('Start on') + u' ' + Utils.formatDate(race.date)
        ])
        colnames = [
            _('Start Time'),
            _('Category'),
            _('Gender'),
            _('Numbers'),
            _('Laps'),
            _('Distance'),
            _('Starters')
        ]

        raceStart = Utils.StrToSeconds(race.scheduledStart + ':00')
        catData = []
        for catInfo in catDetails:
            c = catMap.get(catInfo['name'], None)
            if not c:
                continue

            starters = race.catCount(c)
            if starters:
                allZeroStarters = False
            else:
                starters = ''

            laps = catInfo.get('laps', '') or ''
            raceDistance = catInfo.get('raceDistance', '')
            raceDistanceUnit = catInfo.get('distanceUnit', '')

            if raceDistance:
                raceDistance = '%.2f' % raceDistance

            if c.catType == c.CatWave:
                catStart = Utils.SecondsToStr(raceStart +
                                              c.getStartOffsetSecs())
            elif c.catType == c.CatCustom:
                catStart = Utils.SecondsToStr(raceStart)
            else:
                catStart = ''

            catData.append([
                catStart,
                u' - ' + c.name if c.catType == c.CatComponent else c.name,
                GetTranslation(catInfo.get('gender', 'Open')), c.catStr,
                u'{}'.format(laps), u' '.join([raceDistance, raceDistanceUnit])
                if raceDistance else '', u'{}'.format(starters)
            ])

    if allZeroStarters:
        colnames.remove(_('Starters'))
    data = [[None] * len(catData) for i in xrange(len(colnames))]
    for row in xrange(len(catData)):
        for col in xrange(len(colnames)):
            data[col][row] = catData[row][col]

    exportGrid = ExportGrid(title=title, colnames=colnames, data=data)
    exportGrid.leftJustifyCols = {1, 2, 3}
    return exportGrid
Пример #2
0
	def OnPrintPage(self, page):
		race = Model.race
		if not race:
			return
		
		try:
			externalInfo = race.excelLink.read()
		except:
			externalInfo = {}
		
		GetTranslation = _
		allZeroStarters = True
		with UnstartedRaceWrapper():
			catMap = dict( (c.fullname, c) for c in race.getCategories( startWaveOnly=False ) )
			catDetails = GetCategoryDetails( ignoreEmptyCategories=False, publishOnly=True )
			catDetailsMap = dict( (cd['name'], cd) for cd in catDetails )
			
			title = u'\n'.join( [_('Categories'), race.name, race.scheduledStart + u' ' + _('Start on') + u' ' + Utils.formatDate(race.date)] )
			colnames = [_('Start Time'), _('Category'), _('Gender'), _('Numbers'), _('Laps'), _('Distance'), _('Starters')]
			
			raceStart = Utils.StrToSeconds( race.scheduledStart + ':00' )
			catData = []
			for catInfo in catDetails:
				c = catMap.get( catInfo['name'], None )
				if not c:
					continue
				
				starters = race.catCount(c)
				if starters:
					allZeroStarters = False
				else:
					starters = ''
				
				laps = catInfo.get( 'laps', '' ) or ''
				raceDistance = catInfo.get( 'raceDistance', '' )
				raceDistanceUnit = catInfo.get( 'distanceUnit', '')
				
				if raceDistance:
					raceDistance = '%.2f' % raceDistance
					
				if c.catType == c.CatWave:
					catStart = Utils.SecondsToStr( raceStart + c.getStartOffsetSecs() )
				elif c.catType == c.CatCustom:
					catStart = Utils.SecondsToStr( raceStart )
				else:
					catStart = ''
					
				catData.append( [
					catStart,
					u' - ' + c.name if c.catType == c.CatComponent else c.name,
					GetTranslation(catInfo.get('gender', 'Open')),
					c.catStr,
					u'{}'.format(laps),
					u' '.join([raceDistance, raceDistanceUnit]) if raceDistance else '',
					u'{}'.format(starters)
				])
		
		if allZeroStarters:
			colnames.remove( _('Starters') )
		data = [[None] * len(catData) for i in xrange(len(colnames))]
		for row in xrange(len(catData)):
			for col in xrange(len(colnames)):
				data[col][row] = catData[row][col]
				
		exportGrid = ExportGrid( title = title, colnames = colnames, data = data )
		exportGrid.leftJustifyCols = { 1, 2, 3 }
		exportGrid.drawToFitDC( self.GetDC() )
		return True