Пример #1
0
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,
    })
Пример #2
0
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 
    })
Пример #3
0
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 
    })
Пример #4
0
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,
    })
Пример #5
0
def thankyou(request):
    inv = user_to_invitee(request.user)
    return render_to_response('thanks.html', {
        'invitee': inv,
        'user': request.user 
    })
Пример #6
0
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        
    })