def advertiser_messages_campaigns_edit(request, id):
    ''' View to edit an EmailCampaign '''
    from forms import EmailCampaignForm
    campaign = get_object_or_404(request.organization.emailcampaign_set, id=id)

    if request.method == "POST":
        form = EmailCampaignForm(request.POST, org=request.organization)

        if form.is_valid():
            for k, v in form.cleaned_data.items():
                setattr(campaign, k, v)

            campaign.save()
            return HttpResponseRedirect('/advertiser/messages/campaigns/%d/' %
                                        campaign.id)

    else:
        form = EmailCampaignForm(initial={
            'name': campaign.name,
            'email_from': campaign.email_from,
            'reply_to_address': campaign.reply_to_address,
            'subject': campaign.subject,
            'body': campaign.body,
            'html_body': campaign.html_body,
            'date_send': datetime.date.today(),
        },
                                 org=request.organization)

    return AQ_render_to_response(request,
                                 'advertiser/messages/campaign-edit.html', {
                                     'campaign': campaign,
                                     'form': form,
                                 },
                                 context_instance=RequestContext(request))
def advertiser_messages_campaigns_add(request):
    ''' This view allows Advertisers to create a new EmailCampaign.  Additionally
        the Campaign can be assigned to a Group by providing a group_id '''
    from forms import EmailCampaignForm
    from atrinsic.base.models import EmailCampaign, PublisherGroup
    group_id = request.REQUEST.get('group_id', None)

    if request.method == "POST":
        form = EmailCampaignForm(request.POST, org=request.organization)

        if form.is_valid():
            c = EmailCampaign(advertiser=request.organization)
            for k, v in form.cleaned_data.items():
                setattr(c, k, v)
            c.save()

            if group_id:
                try:
                    g = PublisherGroup.objects.get(id=group_id)
                    c.publisher_group.add(g)
                except PublisherGroup.DoesNotExist:
                    pass
            return HttpResponseRedirect('/advertiser/messages/campaigns/%d/' %
                                        c.id)
    else:
        form = EmailCampaignForm(initial={'date_send': datetime.date.today()},
                                 org=request.organization)

    return AQ_render_to_response(request,
                                 'advertiser/messages/campaign-add.html', {
                                     'form': form,
                                     'group_id': group_id,
                                 },
                                 context_instance=RequestContext(request))