def buildStory(self,story): accountObjects = self.store.fetchObjectsOfClass('AccountsMI') year = self.transaction.session().value('accountYear',DateTime.now().year) reportingdate = DateTime.DateTimeFrom(self.transaction.request().field('reportingdate','')) story.append(Paragraph('Stichtag %s' % reportingdate.strftime(self.dateFormat), self.styleH3)) story.append(Spacer(1,0.2*inch)) stats = {} mstats = {} wstats = {} for x in ages.keys(): stats[x]=0 mstats[x]=0 wstats[x]=0 for x in accountObjects: attrs = x.allAttrs(0) if (not attrs['Austrittsdatum'] or (attrs['Austrittsdatum'] > reportingdate)) and (attrs['Eintrittsdatum'] <= reportingdate) and attrs['Geburtsdatum']: age = misc.age(attrs['Geburtsdatum'],reportingdate) for y in ages.keys(): if age in range(ages[y][0],ages[y][1]+1): stats[y] = stats[y] + 1 if attrs['Geschlecht'] == 'w': wstats[y] = wstats[y] + 1 else: mstats[y] = mstats[y] + 1 data = [['Altersgruppe','M','W','Anzahl']] sum = 0 msum = 0 wsum = 0 k = stats.keys() k.sort() for x in k: data.append([ages[x][2],mstats[x],wstats[x],stats[x]]) sum = sum + stats[x] msum = msum + mstats[x] wsum = wsum + wstats[x] data.append(['Gesamt',msum,wsum,sum]) # # build table with stylesheet # t = Table(data,repeatRows=1) t.setStyle(TableStyle([ ('FONTSIZE',(0,1),(-1,-2),9), ('TOPPADDING',(0,0),(-1,-1),1), ('BOTTOMPADDING',(0,0),(-1,-1),1), ('LINEBELOW',(0,0),(-1,0),0.25,colors.black), ('LINEABOVE',(0,-1),(-1,-1),0.25,colors.black), ('ALIGN',(-1,1),(-1,-1),'RIGHT'), ])) story.append(t) return story
def buildStory(self,story): accountObjects = self.store.fetchObjectsOfClass('AccountsMI','ORDER BY Nachname') reportingdate = self.transaction.request().field('reportingdate','') minAge = self.transaction.request().field('minAge') maxAge = self.transaction.request().field('maxAge') if minAge: minAge = string.atoi(minAge) else: minAge = 0 if maxAge: maxAge = string.atoi(maxAge) else: maxAge = 200 if reportingdate: reportingdate = DateTime.DateTimeFrom(reportingdate) story.append(Paragraph('Stichtag %s' % reportingdate.strftime(self.dateFormat), self.styleH3)) story.append(Spacer(1,0.2*inch)) refDate = reportingdate else: refDate = DateTime.DateTimeFrom('') data = [['MNr','Vorname','Nachname',' ','Alter','Geburtstag','Eintritt','Austritt']] for x in accountObjects: attrs = x.allAttrs(0) age = misc.age(attrs['Geburtsdatum'],refDate) if age >= minAge and age <= maxAge: if not reportingdate or (reportingdate and (not attrs['Austrittsdatum'] or (attrs['Austrittsdatum'] > reportingdate)) and (attrs['Eintrittsdatum'] <= reportingdate)): if attrs['Austrittsdatum']: data.append([attrs['MitgliedsNr'],attrs['Vorname'][:15],attrs['Nachname'][:20],attrs['Geschlecht'],age,attrs['Geburtsdatum'].strftime(self.dateFormat),attrs['Eintrittsdatum'].strftime(self.dateFormat),attrs['Austrittsdatum'].strftime(self.dateFormat)]) else: data.append([attrs['MitgliedsNr'],attrs['Vorname'][:15],attrs['Nachname'][:20],attrs['Geschlecht'],age,attrs['Geburtsdatum'].strftime(self.dateFormat),attrs['Eintrittsdatum'].strftime(self.dateFormat),'-']) # # build table with stylesheet # t = Table(data,repeatRows=1) t.setStyle(TableStyle([ ('FONTSIZE',(0,1),(-1,-2),9), ('TOPPADDING',(0,0),(-1,-1),1), ('LINEBELOW',(0,0),(-1,0),0.25,colors.black), ])) story.append(t) return story