diff --git a/backend_citizen/tests/views_tests.py b/backend_citizen/tests/views_tests.py index f3564b39..cc991cca 100644 --- a/backend_citizen/tests/views_tests.py +++ b/backend_citizen/tests/views_tests.py @@ -3,6 +3,8 @@ from elections.tests import VotaInteligenteTestCase as TestCase from django.contrib.auth.models import User from popular_proposal.models import ProposalTemporaryData, PopularProposal +from popular_proposal.forms import ProposalTemporaryDataUpdateForm +from popolo.models import Area PASSWORD = 'perrito' @@ -14,6 +16,14 @@ def setUp(self): self.fiera = User.objects.get(username='fiera') self.fiera.set_password(PASSWORD) self.fiera.save() + self.arica = Area.objects.get(id='arica-15101') + self.data = { + 'problem': u'A mi me gusta la contaminación de Santiago y los autos y sus estresantes ruedas', + 'solution': u'Viajar a ver al Feli una vez al mes', + 'when': u'1_year', + 'allies': u'El Feli y el resto de los cabros de la FCI' + + } def test_my_profile_view(self): url = reverse('backend_citizen:index') @@ -22,3 +32,17 @@ def test_my_profile_view(self): self.client.login(username=self.fiera.username, password=PASSWORD) response = self.client.get(url) self.assertTemplateUsed(response, 'backend_citizen/index.html') + + def test_temporary_promise_detail_view(self): + temporary_data = ProposalTemporaryData.objects.create(proposer=self.fiera, + area=self.arica, + data=self.data) + url = reverse('backend_citizen:temporary_data_update', kwargs={'pk': temporary_data.id}) + response = self.client.get(url) + self.assertRedirects(response, reverse('auth_login')+'?next=' + url) + self.client.login(username=self.fiera.username, password=PASSWORD) + response = self.client.get(url) + self.assertTemplateUsed(response, 'backend_citizen/temporary_data_update.html') + self.assertIsInstance(response.context['form'], ProposalTemporaryDataUpdateForm) + form = response.context['form'] + self.assertEquals(form.temporary_data, temporary_data) diff --git a/backend_citizen/urls.py b/backend_citizen/urls.py index 73e9c1f4..2badf018 100644 --- a/backend_citizen/urls.py +++ b/backend_citizen/urls.py @@ -1,8 +1,11 @@ from django.conf.urls import patterns, url -from backend_citizen.views import IndexView +from backend_citizen.views import IndexView, PopularProposalTemporaryDataUpdateView urlpatterns = patterns('', url(r'^index/?$', IndexView.as_view(), name='index'), + url(r'^update_temporary_data/(?P[-\w]+)/?$', + PopularProposalTemporaryDataUpdateView.as_view(), + name='temporary_data_update'), ) diff --git a/backend_citizen/views.py b/backend_citizen/views.py index 5b2bc527..b34d3537 100644 --- a/backend_citizen/views.py +++ b/backend_citizen/views.py @@ -1,7 +1,29 @@ from django.shortcuts import render from django.contrib.auth.mixins import LoginRequiredMixin from django.views.generic.base import TemplateView +from django.views.generic.edit import FormView +from popular_proposal.forms import ProposalTemporaryDataUpdateForm +from popular_proposal.models import ProposalTemporaryData +from django.shortcuts import get_object_or_404 class IndexView(LoginRequiredMixin, TemplateView): template_name='backend_citizen/index.html' + + +class PopularProposalTemporaryDataUpdateView(LoginRequiredMixin, FormView): + template_name = 'backend_citizen/temporary_data_update.html' + form_class = ProposalTemporaryDataUpdateForm + + def get_form_kwargs(self): + kwargs = super(PopularProposalTemporaryDataUpdateView, self).get_form_kwargs() + pk = self.kwargs.pop('pk') + self.temporary_data = get_object_or_404(ProposalTemporaryData, pk=pk) + kwargs['temporary_data'] = self.temporary_data + kwargs['proposer'] = self.request.user + return kwargs + + def get_context_data(self, *args, **kwargs): + context = super(PopularProposalTemporaryDataUpdateView, self).get_context_data(*args, **kwargs) + context['temporary_data'] = self.temporary_data + return context diff --git a/popular_proposal/forms.py b/popular_proposal/forms.py index fc6e6697..da18b3b7 100644 --- a/popular_proposal/forms.py +++ b/popular_proposal/forms.py @@ -82,7 +82,6 @@ def reject(self): class ProposalTemporaryDataUpdateForm(ProposalFormBase): def __init__(self, *args, **kwargs): self.proposer = kwargs.pop('proposer') - self.area = kwargs.pop('area') self.temporary_data = kwargs.pop('temporary_data') super(ProposalTemporaryDataUpdateForm, self).__init__(*args, **kwargs) diff --git a/popular_proposal/tests/form_tests.py b/popular_proposal/tests/form_tests.py index 9a4dcd75..c2476e75 100644 --- a/popular_proposal/tests/form_tests.py +++ b/popular_proposal/tests/form_tests.py @@ -129,7 +129,6 @@ def test_temporary_popular_proposal(self): } form = ProposalTemporaryDataUpdateForm(data=data, temporary_data=temporary_data, - area=self.arica, proposer=self.fiera) self.assertTrue(form.is_valid()) temporary_data = form.save() diff --git a/votai_general_theme/templates/backend_citizen/temporary_data_update.html b/votai_general_theme/templates/backend_citizen/temporary_data_update.html new file mode 100644 index 00000000..7e5c24e1 --- /dev/null +++ b/votai_general_theme/templates/backend_citizen/temporary_data_update.html @@ -0,0 +1,12 @@ +{% load bootstrap_tags %} +{% load staticfiles %} +{% load i18n %} +{% load thumbnail %} + +
+ {% csrf_token %} + {{ form|as_bootstrap }} +
+ +
+