def make_labels(request, filter=None): if not request.user.is_staff: return HttpResponseRedirect('/admin/') response = HttpResponse(mimetype='application/pdf') response['Content-Disposition'] = 'attachment; filename=mailing-labels.pdf' labels = LabelMaker(LabelSpecBasic) inv_set = guest_filter.all_invitees() if filter == 'std': inv_set = guest_filter.savedate_invitees() for inv in inv_set: if inv.full_address: text = inv.full_name_couple()+u'\n'+inv.full_address labels.add_label(text) response.write(labels.finish()) return response
def tools_report(request, filter=None, template=None): if request.user.is_staff or request.user.username in users_with_rsvp_view_perms: pass else: return HttpResponseRedirect('/admin/login/?next=/tools/') inv = Invitee.objects.all().order_by('last_updated','last_visited').reverse() if filter=='std': inv = guest_filter.savedate_invitees() return render_to_response(template, { 'invitees': inv, 'filter': filter, 'venues': Venue.objects.all(), 'guests': Guest.objects.all(), 'rsvps': RSVP.objects.all(), 'user': request.user }, context_instance=RequestContext(request))
def make_svg(request, filter=None, n_up=4, template=None, venue_site=None, format="ps", orient="portrait"): if not request.user.is_staff: return HttpResponseRedirect('/admin/') if not filter: filter="all" if format == "pdf": response = HttpResponse(mimetype='application/pdf') response['Content-Disposition'] = 'attachment; filename=results-%s.pdf'%(filter,) svg2pdf = SVG2PDF(pdf_mode=True, orient=orient) else: response = HttpResponse(mimetype='application/postscript') response['Content-Disposition'] = 'attachment; filename=results-%s.ps'%(filter,) svg2pdf = SVG2PDF(orient=orient) inv_set = guest_filter.all_invitees() if filter == 'std': inv_set = guest_filter.savedate_invitees() elif filter == 'non-ru': inv_set = guest_filter.non_ru_invitees() elif filter == 'ru': inv_set = guest_filter.ru_invitees() elif filter == 'test': inv_set = guest_filter.test_invitees() elif filter == 'rsvp_yes': rsvps = RSVP.objects.filter(venue=venue_site, status__in=RSVPOption.objects.yes()).order_by('guest__last_name','guest__first_name') inv_set = [] for r in rsvps: inv_set.append(r) for spos in range(0,len(inv_set),n_up): #for spos in range(0,10,n_up): inv_group = [None,] for invitee in inv_set[spos:spos+4]: inv_group.append(invitee) svg2pdf.add_svg(loader.render_to_string(template, { 'inv': inv_group, })) response.write(svg2pdf.finish()) return response
def tools_export(request, filter="all-invitees", rowset="invitee", columns=None): if not request.user.is_staff: return HttpResponseRedirect('/admin/') venue_ma = Venue.objects.get(site="MA") venue_ca = Venue.objects.get(site="CA") ss = SpreadSheet(filter+"-"+rowset) if rowset == "invitees": if filter=='std': inv = guest_filter.savedate_invitees() else: inv = guest_filter.all_invitees() ss.add_column("invite_code", 40) ss.add_column("full_name", 120) ss.add_column("country", 15) ss.add_column("state", 15) ss.add_column("association", 40) ss.add_column("side", 15) ss.add_column("full_address", 120) ss.add_column("ma_ev", 15) ss.add_column("ca_ev", 15) for x in inv: ma_ev = 0 ca_ev = 0 for g in x.guest_set.all(): ma_ev += g.venue_likelihood(venue_ma) ca_ev += g.venue_likelihood(venue_ca) row = [x.invite_code, x.full_name(), x.country, x.state, x.association, x.side, x.full_address, ma_ev, ca_ev] ss.add_row(row) elif rowset == "guests": guests = guest_filter.all_guests() ss.add_column("invitee_id", 10) ss.add_column("full_name", 80) ss.add_column("last_name", 40) ss.add_column("first_name", 30) ss.add_column("nickname", 30) ss.add_column("email", 70) ss.add_column("country", 15) ss.add_column("state", 15) ss.add_column("association", 40) ss.add_column("side", 15) ss.add_column("home_phone", 50) ss.add_column("cell_phone", 50) ss.add_column("ma_ev", 15) ss.add_column("ca_ev", 15) for g in guests: row = [g.invitee.id, g.full_name(), g.last_name, g.first_name, g.nickname, g.email, g.invitee.country, g.invitee.state, g.invitee.association, g.invitee.side, g.home_phone, g.cell_phone, g.venue_likelihood(venue_ma), g.venue_likelihood(venue_ca) ] ss.add_row(row) elif rowset == "bus": ss.add_column("direction", 30) ss.add_column("there", 20) ss.add_column("back", 20) ss.add_column("full_name", 80) ss.add_column("cell_phone", 50) ss.add_column("last_name", 40) ss.add_column("first_name", 30) ss.add_column("nickname", 30) ss.add_column("email", 70) ss.add_column("home_phone", 50) for r in RSVP.objects.filter(venue="MA", status__in=RSVPOption.objects.yes()).order_by("bus_selection","guest__last_name"): if not r.bus_selection or r.bus_selection == "none": continue #print "%s,%s,%s,%s"%(r.guest.full_name(),r.bus_selection,r.guest.cell_phone,r.guest.home_phone) for g in guests direction=r.bus_selection if direction == "from": direction = "return only" row = [direction, "","", r.guest.full_name(), r.guest.cell_phone, r.guest.last_name, r.guest.first_name, r.guest.nickname, r.guest.email, r.guest.home_phone, ] ss.add_row(row) elif rowset == "gifts": inv = Invitee.objects.annotate(Min('gift__received')).filter(gift__isnull=False).order_by('gift__received__min') ss.add_column("invite_code", 40) ss.add_column("full_name_address", 120) ss.add_column("received", 40) ss.add_column("gift description", 200) ss.add_column("notes", 100) ss.add_column("assignment", 40) ss.add_column("status", 40) ss.add_column("thank_you_sent", 40) ss.add_column("registry", 40) ss.add_column("association", 40) ss.add_column("side", 15) ss.add_column("country", 15) ss.add_column("state", 15) for x in inv: for g in x.gift_set.order_by('received'): row = [x.invite_code, x.full_name()+"\n"+x.full_address, str(g.received), g.description, g.notes, g.assignment, g.status, str(g.thank_you_sent) if g.thank_you_sent else "", g.registry, x.association, x.side, x.country, x.state] #print row ss.add_row(row) else: raise Http404("Invalid row set") response = HttpResponse(mimetype='application/vnd.ms-excel') response['Content-Disposition'] = 'attachment; filename=export-%s-%s.xls'%(rowset,filter,) response.write(ss.finalize()) return response