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
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