def rsvp_addguest(request): if request.user.is_staff: return HttpResponseRedirect('/accounts/login/') inv = user_to_invitee(request.user) # grab the name before the addition of the new guest inv_full_name = inv.full_name() if request.method == 'POST': if not allow_rsvp_changes: if SEND_EMAIL: mail_managers('RSVP guest addition attempt from '+inv.full_name(),"") return HttpResponseRedirect('/rsvp/locked/') form = AddGuestForm(request.POST) if form.is_valid(): g = form.save(commit=False) g.invitee = inv g.role = "added_by_invitee" g.order = inv.guest_set.count() + 1 g.save() inv.mark_updated() if SEND_EMAIL: mail_managers('Guest addition from '+inv_full_name, u'This invitee has added a guest: %s\nhttp://wedding.example.org/admin/wedding/invitee/%s/'%(unicode(g.full_name()), str(inv.id))) return HttpResponseRedirect('/thankyou/') else: form = AddGuestForm() return render_to_response('rsvp_addguest.html', { 'form': form, 'invitee': inv, 'user': request.user, 'allow_rsvp_changes': allow_rsvp_changes, })
def profile(request): if request.user.is_staff: return HttpResponseRedirect('/accounts/login/') inv = user_to_invitee(request.user) inv.mark_visited() if request.method == 'POST': # Form has been submitted guest_formset = GuestProfileFormSet(request.POST, queryset=Guest.objects.filter(invitee=inv)) inv_form = InviteeProfileForm(request.POST, instance=inv) if inv_form.is_valid() and guest_formset.is_valid(): inv2 = inv_form.save(commit=False) guests = guest_formset.save(commit=False) if inv != inv2: raise HttpResponseForbidden("Invalid invitee!") for g in guests: if g.invitee != inv: raise HttpResponseForbidden("Invalid invitee for guest!") g.save() inv2.save() inv.mark_updated() if SEND_EMAIL: mail_managers('Profile update from '+inv.full_name(), 'This invitee has updated their profile.\nhttp://wedding.example.org/admin/wedding/invitee/%s/'%(str(inv.id,))) else: print 'Profile update from '+inv.full_name() return HttpResponseRedirect('/thankyou/') else: guest_formset = GuestProfileFormSet(queryset=Guest.objects.filter(invitee=inv)) inv_form = InviteeProfileForm(instance=inv) return render_to_response('profile.html', { 'guest_formset': guest_formset, 'invitee': inv, 'inv_form': inv_form, 'user': request.user })
def comment(request, ctype=u"general"): if request.user.is_staff: return HttpResponseRedirect('/accounts/login/') if not ctype in [x[0] for x in Comment.COMMENT_TYPES]: ctype = u"general" inv = user_to_invitee(request.user) inv.mark_visited() if request.method == 'POST': cform = CommentForm(request.POST) if cform.is_valid(): c = cform.save(commit=False) c.invitee = inv c.save() inv.mark_updated() if SEND_EMAIL: mail_managers('Wedding comment from '+inv.full_name(), 'Comment type: %s\nComment:\n\n%s\n'%(c.type, c.text)) else: print 'Wedding comment from '+inv.full_name() return HttpResponseRedirect('/thankyou/') else: cform = CommentForm(initial={'type': ctype}) return render_to_response('comment.html', { 'comment_form': cform, 'invitee': inv, 'comments': Comment.objects.filter(invitee=inv), 'user': request.user })
def photo_gallery_upload(request): if request.user.is_staff: return HttpResponseRedirect('/accounts/login/?next=/photos/') inv = user_to_invitee(request.user) if request.method == 'POST': form = PhotoGalleryUploadForm(inv, request.POST, request.FILES) #print form.is_valid() #print form #print request.FILES #print form.errors if form.is_valid(): guestid = int(request.POST['photographer']) photographer = Guest.objects.get(id=guestid) if photographer.invitee != inv: raise HttpResponseForbidden("Invalid invitee for Photographer/guest!") g = form.save(commit=False) gname = u'Photos from %s: %s'%(photographer.full_name(), g.title) slugname = slugify(u'%s: %s'%(photographer.full_name(), g.title))[:49] try: gal = Gallery.objects.get(title_slug=slugname) #print "GOT: "+repr(gal) except Gallery.DoesNotExist: #print "MEEP" gal = Gallery(title=gname, title_slug=slugname) #print u"MADE: %s / %s"%(repr(gal), unicode(gal.title_slug)) gal.save() #print "HERE" g.gallery = gal g.title = gname #g.description = u'%s'%(inv.full_name(),g.title) g.tags = u'from:invitee:%d from:guest:%d'%(inv.id,photographer.id) g.save() albumurl = "/photologue/gallery/%s"%(str(gal.title_slug)) if SEND_EMAIL: mail_managers('Photo gallery upload from '+inv.full_name(), u'This invitee has uploaded photos from an album %s to:\n http://wedding.example.org/%s'%(gal.title, albumurl)) return HttpResponseRedirect(albumurl) else: form = PhotoGalleryUploadForm(invitee=inv) return render_to_response('photo_upload.html', { 'form': form, 'invitee': inv, 'user': request.user, })
def thankyou(request): inv = user_to_invitee(request.user) return render_to_response('thanks.html', { 'invitee': inv, 'user': request.user })
def rsvp(request): if request.user.is_staff: return HttpResponseRedirect('/accounts/login/') inv = user_to_invitee(request.user) inv.mark_visited() cform = CommentForm(initial={'type':'general'}) if request.method == 'POST': if not allow_rsvp_changes: if SEND_EMAIL: mail_managers('RSVP attempt from '+inv.full_name(),"") return HttpResponseRedirect('/rsvp/locked/') guest_rsvps = [] all_rsvp_forms = [] valid = True for g in inv.ordered_guests().all(): rsvps = g.get_or_create_rsvps() gr = GuestRSVPs(g) guest_rsvps.append(gr) for r in rsvps: rf = FinalRSVPForm(request.POST, instance=r, prefix=str(r.pk)) gr.add_rsvp(r, rf) all_rsvp_forms.append(rf) if not rf.is_valid(): valid = False if valid: summary = [] for rf in all_rsvp_forms: r = rf.save(commit=False) # Clear preliminary RSVP flag r.prelim = False # If not attending, unset meals and bus if not r.yes_or_maybe(): r.food_selection = None r.bus_selection = None r.last_update_source = u'web' if r.guest.invitee != inv: raise HttpResponseForbidden("Invalid invitee for RSVP/guest!") summary.append(unicode(r)) r.save() inv.mark_updated() #print summary if SEND_EMAIL: mail_managers('RSVP from '+inv.full_name(), 'New status: \n%s\n\n'%("\n".join(summary),)) else: print ('RSVP from '+inv.full_name(), 'New status: \n%s\n\n'%("\n".join(summary),)) return HttpResponseRedirect('/thankyou/') else: # This could perhaps be better handled with a formset... guest_rsvps = [] for g in inv.ordered_guests().all(): rsvps = g.get_or_create_rsvps() gr = GuestRSVPs(g) guest_rsvps.append(gr) for r in rsvps: rf = FinalRSVPForm(instance=r, prefix=str(r.pk)) gr.add_rsvp(r, rf) return render_to_response('rsvp.html', { 'comment_form': cform, 'invitee': inv, 'guest_rsvps': guest_rsvps, 'comments': Comment.objects.filter(invitee=inv), 'allow_rsvp_changes': allow_rsvp_changes, 'user': request.user })