def all(): import os.path if False: pdf_template_id = 3 speaker = False elif request.args: pdf_template_id = int(request.args[0]) speaker = 'speaker' in request.args else: pdf_template_id = 2 speaker = True # generate sample invoice (according Argentina's regulations) q = db.auth_user.speaker==speaker #if not speaker: ## q = db.auth_user.id < 400 users = db(q).select(orderby=db.auth_user.id) # read elements from db elements = db(db.pdf_element.pdf_template_id==pdf_template_id).select(orderby=db.pdf_element.priority) f = Template(format=(315, 440), elements = elements, title="Speaker Badges", author="web2conf", subject="", keywords="") # calculate pages: label_count = len(users) max_labels_per_page = 4*2*2 pages = label_count / (max_labels_per_page - 1) if label_count % (max_labels_per_page - 1): pages = pages + 1 # fill placeholders for each page for page in range(1, pages+1): f.add_page() k = 0 li = 0 for user in users: k = k + 1 if k > page * (max_labels_per_page ): break if k > (page - 1) * (max_labels_per_page ): li += 1 d = build_badge_dict(user) for key, val in d.items(): f["%s%02d" % (key, li)] = val response.headers['Content-Type']='application/pdf' fn = "badges_%s_%s.pdf" % ('speakers' if speaker else 'public', pdf_template_id) response.headers["Content-Disposition"] \ = "attachment; filename=%s" % fn s = f.render('badges.pdf', dest='S') if request.env['remote_addr'] == '127.0.0.1': fn = os.path.join(request.folder, 'static', fn) f = open(fn, "wb") f.write(s) f.close() print "saved", fn else: return s