def do_POST(self): ctype, pdict = cgi.parse_header(self.headers.getheader( 'content-type')) if ctype == 'multipart/form-data': postvars = cgi.parse_multipart(self.rfile, pdict) elif ctype == 'application/x-www-form-urlencoded': length = int(self.headers.getheader('content-length')) postvars = cgi.parse_qs(self.rfile.read(length), keep_blank_values=1) else: postvars = {} postvars = dict((n, ' '.join(v)) for n, v in postvars.items()) if 'singlesided' in postvars: maxpages = 100 include_rego = False else: maxpages = 3 include_rego = True self.send_response(200) self.send_header('Content-type', 'application/pdf') self.end_headers() fromaddr = postvars numfliers = min(maxpages, int(postvars['numfliers'])) toaddrs = list(itertools.islice(voterstream, numfliers)) vids = [a['SBOEID'] for a in toaddrs] doc = sheet.makedoc(self.wfile) pages = list(itertools.chain(*( sheet.addrsheet(fromaddr, toaddr, toaddr['boe'], include_rego) for toaddr in toaddrs))) doc.build(pages) log((self.client_address[0], 'FLIERS', fromaddr, vids)) processed_voters.update(set(vids))
def test_generation(): numfliers = 100 fromaddr = sheet.myaddr toaddrs = list(itertools.islice( # must be a generator expression, as voterstream is infinite! (v for v in voterstream if 'freeaddr' in v), numfliers)) doc = sheet.makedoc('/tmp/tst.pdf') pages = list(itertools.chain(*( sheet.addrsheet(fromaddr, toaddr, toaddr['boe']) for toaddr in toaddrs))) doc.build(pages)