Beispiel #1
0
def mark_taken(request, offer):
    userprofile = UserProfile.get_for_user(request.user)
    offer_messages = offer.emailmessage_set.filter(message_type='offer').order_by('datetime_sent')

    if offer_messages:
        messages = filter_unique_subscription(offer_messages)
        if request.POST:
            formset = EmailTakenToListFormset(request.POST)
            if formset.is_valid():
                msgs = []
                for data in formset.cleaned_data:
                    if not data['send_email']:
                        continue
                    if data['subscription'] not in userprofile.subscription_set.all():
                        raise PermissionDenied
                    msg = EmailMessage(
                        subscription=data['subscription'],
                        offer=offer,
                        message_type='taken',
                        subject=data['subject'],
                        body=data['body'],
                    )
                    msg.save()
                    msgs.append(msg)
                for msg in msgs:
                    msg.send_mail()
                offer.taken = True
                offer.save()
                return HttpResponseRedirect(reverse('my-offers'))
        else:
            initial = [{'subscription': m.subscription,
                        'subject': takenify_subject(m.subject),
                        'body': quote_email(m.body)} for m in messages]
            formset = EmailTakenToListFormset(initial=initial)

        c = {'offer': offer,
             'formset': formset}
        return render_to_response_context(request, 'offers/email_taken_to_list.html', c)
    else:
        confirmation = request.GET.get('confirm')
        if confirmation == 'yes':
            offer.taken = True
            offer.save()
            return HttpResponseRedirect(reverse('my-offers'))
        elif confirmation == 'no':
            return HttpResponseRedirect(reverse('my-offers'))
        else:
            return render_to_response_context(request, 'offers/confirm_mark_taken.html')
Beispiel #2
0
def email_offer_to_list(request, offer, subscription_id=None):
    userprofile = request.user.get_profile()
    if request.POST:
        form = EmailOfferToListForm(request.POST, userprofile=userprofile)
        if form.is_valid():
            msg = EmailMessage(
                subscription=form.cleaned_data['subscription'],
                offer=offer,
                message_type='offer',
                subject=form.cleaned_data['subject'],
                body=form.cleaned_data['message'],
            )
            msg.save()
            msg.send_mail()
            return HttpResponseRedirect(reverse('my-offers'))
    else:
        initial = {}
        subscriptions = userprofile.subscription_set.all()
        if subscriptions.count() == 0:
            return HttpResponseRedirect(reverse('add-subscription'))

        subscription = userprofile.subscription_set.all()[0]
        template_name = 'email_lists/messages/%s/offer.html' % (
                         slugify(subscription.email_list.name))
        initial['subscription'] = subscription
        mail_template = get_template(template_name)
        c = Context({'offer': offer, 'userprofile':userprofile})
        m = mail_template.render(c)
        subject, message = m.split('\n', 1)
        initial = {'subscription': subscription,
                   'subject': subject,
                   'message': message}
        form = EmailOfferToListForm(userprofile=request.user.get_profile(),
                                    initial=initial)
    c = {'offer': offer,
         'form': form}
    return render_to_response_context(request, 'offers/email_offer_to_list.html', c)