Пример #1
0
def campaign_new(request):
    if request.method == 'POST':
        campaign_form = CampaignForm(data=request.POST)
        image_form = CampaignImageForm(data=request.POST, files=request.FILES)
        files = request.FILES.getlist('images')

        if campaign_form.is_valid() and image_form.is_valid():
            campaign = campaign_form.save(commit=False)
            campaign.author = request.user
            campaign.save()

            for file in files:
                CampaignImage.objects.create(image=file, campaign=campaign)

            messages.success(
                request,
                f'Congratulations! Your campaign \"{campaign.name}\" successfully created!'
            )
            return redirect('campaign:campaign_detail', campaign.author_slug,
                            campaign.name_slug)
    else:
        campaign_form = CampaignForm()
        image_form = CampaignImageForm()

    return render(request, 'campaign/new.html', {
        'campaign_form': campaign_form,
        'image_form': image_form
    })
def campaignEdit(request, campaign_id):
    """Edit a Campaign instance."""
    campaign = get_object_or_404(Campaign, pk=campaign_id)
    if campaign.owner_id != request.user.pk:
        messages.error(request, "You cannot edit a campaign you do not own.")
        return HttpResponseRedirect(reverse('home'))
    if request.method == 'POST':
        address_form = AddressForm(request.POST, instance=campaign.address)
        campaign_form = CampaignForm(request.POST, instance=campaign)
        if address_form.is_valid() and campaign_form.is_valid():
            campaign_form.instance.address = address_form.get_or_create()
            campaign_form.save()
            messages.success(request,
                             'You updated "{0}."'.format(campaign.name))
            return HttpResponseRedirect(
                reverse('campaign_edit', args=[campaign_id]))
    else:
        address_form = AddressForm(instance=campaign.address)
        campaign_form = CampaignForm(instance=campaign)
    return render(
        request, 'campaign/edit.html', {
            'address_form': address_form,
            'campaign_form': campaign_form,
            'campaign': campaign
        })
def campaignCreate(request):
    """Create a new Campaign instance if the user does not already own a campaign."""
    if request.method == 'POST':
        login_form = AuthenticationForm(request, data=request.POST)
        campaign_form = CampaignForm(request.POST)
        address_form = AddressForm(request.POST)
        if login_form.is_valid():
            # The credentials are valid, and the user is active.  AuthenticationForm.clean() calls
            # 'authenticate' and 'confirm_login_allowed'.  It saves the authenticated user as the
            # 'user_cache' attribute.
            if getattr(login_form.user_cache, 'campaign', None):
                messages.error(request,
                               'You may not create more than one campaign.')
                return HttpResponseRedirect(reverse('login'))
            if campaign_form.is_valid() and address_form.is_valid():
                campaign_form.instance.address = address_form.get_or_create()
                campaign_form.instance.owner = login_form.user_cache
                campaign_form.save()
                messages.success(request, 'You created a new campaign.')
                login(request, login_form.user_cache)
                return HttpResponseRedirect(reverse('home'))
    else:
        login_form = AuthenticationForm(request)
        campaign_form = CampaignForm()
        address_form = AddressForm()
    return render(
        request, 'campaign/create.html', {
            'login_form': login_form,
            'campaign_form': campaign_form,
            'address_form': address_form
        })
Пример #4
0
def CampaignNew(request):
    if request.method == 'POST':
        form = CampaignForm(request.POST)
        if form.is_valid():
                campaign = form.save(commit=False)
                campaign.set_user(request.user)
                campaign.save()
                return HttpResponseRedirect(reverse('campaign_csv'))
    else:
        form = CampaignForm()
    return render(request,'campaign_new.html',{'form':form})
Пример #5
0
def CampaignEdit(request):
    id = request.GET.get('camp_id','')
    campaign = Campaign.objects.get(id=id)
    if campaign.get_user() == request.user:
        if request.method == 'POST':
            form = CampaignForm(request.POST)
            if form.is_valid():
                campaign.set_data(form.save(commit=False))
                return HttpResponseRedirect(reverse('campaign_csv',kwargs={'campaign_id':campaign.id}))
        else:
            form = CampaignForm(initial=campaign)
        return render(request,'campaign_new.html',{'form':form})
    else:
        raise Http404
Пример #6
0
def campaign_edit(request, author_slug, name_slug):
    campaign = get_object_or_404(Campaign,
                                 author_slug=author_slug,
                                 name_slug=name_slug)
    campaign_images = campaign.images.all()

    if campaign.author != request.user and not request.user.is_superuser:
        return HttpResponseForbidden()
        # raise Http404()

    campaign_form = CampaignForm(data=request.POST or None, instance=campaign)

    if request.method == 'POST':
        image_form = CampaignImageForm(data=request.POST, files=request.FILES)

        if campaign_form.is_valid() and image_form.is_valid():
            campaign_form.save()

            files = request.FILES.getlist('images')
            for file in files:
                CampaignImage.objects.create(image=file, campaign=campaign)

            return redirect('campaign:campaign_detail',
                            author_slug=campaign.author_slug,
                            name_slug=campaign.name_slug)
    else:
        images_dict = {'images': [image.image for image in campaign_images]}
        image_form = CampaignImageForm(data=None,
                                       files=MultiValueDict(images_dict))

    return render(
        request, 'campaign/new.html', {
            'campaign_form': campaign_form,
            'image_form': image_form,
            'campaign': campaign,
            'campaign_images': campaign_images
        })
Пример #7
0
 def test_campaignForm_invalid(self):
     form = CampaignForm(invalid_data)
     self.assertFalse(form.is_valid())
Пример #8
0
 def test_campaignForm_valid(self):
     form = CampaignForm(valid_data)
     self.assertTrue(form.is_valid())