Repository: ciudadanointeligente/votainteligente-portal-electoral

Issue:
Ampliar antecedentes de la propuesta
Además agregar:
- Documento
- Cómo te puede contactar un candidato



Discussion:

Resolving patch:
diff --git a/popular_proposal/forms/forms.py b/popular_proposal/forms/forms.py
--- a/popular_proposal/forms/forms.py
+++ b/popular_proposal/forms/forms.py
@@ -180,11 +180,14 @@ def __init__(self, *args, **kwargs):
 
     class Meta:
         model = PopularProposal
-        fields = ['background', 'image']
+        fields = ['background', 'image', 'contact_details', 'document']
         labels = {'background': _(u'Más antecedentes sobre tu propuesta.'),
-                  'image': _(u'¿Tienes alguna imagen para compartir?')
+                  'image': _(u'¿Tienes alguna imagen para compartir?'),
+                  'document': _(u'¿Tienes algún documento para complementar tu propuesta?'),
+                  'contact_details': _(u'¿Cómo te puede contactar un candidato?')
                   }
-        help_texts = {'background': _(u'Ejemplo: Durante el año 2011, existió una iniciativa de otra comunidad que no llegó a buen puerto.')}
+        help_texts = {'background': _(u'Ejemplo: Durante el año 2011, existió una iniciativa de otra comunidad que no llegó a buen puerto.'),
+                      'contact_details': _(u'Ejemplo: Tu teléfono o el lugar donde eres ubicable y en qué horario.')}
 
 
 class CommentsForm(forms.Form):
@@ -425,4 +428,4 @@ def save(self):
         commitment = super(CandidateNotCommitingForm, self).save()
         commitment.detail = self.cleaned_data['detail']
         commitment.save()
-        return commitment
\ No newline at end of file
+        return commitment
diff --git a/popular_proposal/migrations/0013_auto_20160907_1410.py b/popular_proposal/migrations/0013_auto_20160907_1410.py
new file mode 100644
--- /dev/null
+++ b/popular_proposal/migrations/0013_auto_20160907_1410.py
@@ -0,0 +1,37 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.9.2 on 2016-09-07 14:10
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+import django.db.models.manager
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('popular_proposal', '0012_auto_20160906_1622'),
+    ]
+
+    operations = [
+        migrations.AlterModelManagers(
+            name='popularproposal',
+            managers=[
+                ('ordered', django.db.models.manager.Manager()),
+            ],
+        ),
+        migrations.AddField(
+            model_name='popularproposal',
+            name='contact_details',
+            field=models.TextField(blank=True, help_text='\xbfC\xf3mo te puede contactar un candidato?', null=True),
+        ),
+        migrations.AddField(
+            model_name='popularproposal',
+            name='document',
+            field=models.FileField(blank=True, help_text='\xbfTienes alg\xfan documento para complementar tu propuesta?', null=True, upload_to='uploads/proposal/backgrounds/%Y/%m/%d/'),
+        ),
+        migrations.AlterField(
+            model_name='popularproposal',
+            name='background',
+            field=models.TextField(blank=True, help_text='Antecedentes sobre tu propuesta', null=True),
+        ),
+    ]
diff --git a/popular_proposal/models.py b/popular_proposal/models.py
--- a/popular_proposal/models.py
+++ b/popular_proposal/models.py
@@ -1,3 +1,4 @@
+# coding=utf-8
 from __future__ import unicode_literals
 
 from django.db import models
@@ -14,6 +15,7 @@
 from votainteligente.open_graph import OGPMixin
 from elections.models import Candidate
 from django.db.models import Count
+from django.utils.translation import ugettext_lazy as _
 
 
 class NeedingModerationManager(models.Manager):
@@ -150,7 +152,14 @@ class PopularProposal(models.Model, OGPMixin):
     organization = models.ForeignKey(Organization,
                                      related_name='popular_proposals',
                                      null=True)
-    background = models.TextField(null=True, blank=True)
+    background = models.TextField(null=True, blank=True, help_text=_(u"Antecedentes sobre tu propuesta"))
+    contact_details = models.TextField(null=True,
+                                       blank=True,
+                                       help_text=_(u'¿Cómo te puede contactar un candidato?'))
+    document = models.FileField(upload_to='uploads/proposal/backgrounds/%Y/%m/%d/',
+                                help_text=_(u'¿Tienes algún documento para complementar tu propuesta?'),
+                                null=True,
+                                blank=True)
     image = models.ImageField(upload_to='proposals/image/',
                               max_length=512,
                               null=True,


Test patch:
diff --git a/elections/tests/fixtures/example.pdf b/elections/tests/fixtures/example.pdf
new file mode 100644
Binary files /dev/null and b/elections/tests/fixtures/example.pdf differ
diff --git a/popular_proposal/tests/form_tests.py b/popular_proposal/tests/form_tests.py
--- a/popular_proposal/tests/form_tests.py
+++ b/popular_proposal/tests/form_tests.py
@@ -259,8 +259,11 @@ def setUp(self):
         self.fiera.save()
 
     def test_instanciate_form(self):
-        update_data = {'background': u'Esto es un antecedente'}
-        file_data = {'image': self.image}
+        update_data = {'background': u'Esto es un antecedente',
+                       'contact_details': u'Me puedes contactar en el teléfono 123456',
+                       }
+        file_data = {'image': self.image,
+                     'document': self.get_document()}
         form = UpdateProposalForm(data=update_data,
                                   files=file_data,
                                   instance=self.popular_proposal)
@@ -268,6 +271,8 @@ def test_instanciate_form(self):
         proposal = form.save()
         self.assertEquals(proposal.background, update_data['background'])
         self.assertTrue(proposal.image)
+        self.assertTrue(proposal.document)
+        self.assertEquals(proposal.contact_details, update_data['contact_details'])
 
     def test_get_update_view(self):
         url = reverse('popular_proposals:citizen_update', kwargs={'slug': self.popular_proposal.slug})
@@ -285,7 +290,10 @@ def test_get_update_view(self):
 
     def test_post_update_view(self):
         url = reverse('popular_proposals:citizen_update', kwargs={'slug': self.popular_proposal.slug})
-        kwargs = {'data': {'background': u'Esto es un antecedente'}, 'files': {'image': self.image}}
+        kwargs = {'data': {'background': u'Esto es un antecedente',
+                           'contact_details': u'Me puedes contactar en el teléfono 123456'},
+                  'files': {'image': self.image,
+                            'document': self.get_document()}}
         self.client.login(username=self.fiera.username, password='feroz')
         response = self.client.post(url, **kwargs)
         detail_url = reverse('popular_proposals:detail', kwargs={'slug': self.popular_proposal.slug})
diff --git a/popular_proposal/tests/new_proposal_cycle_tests.py b/popular_proposal/tests/new_proposal_cycle_tests.py
--- a/popular_proposal/tests/new_proposal_cycle_tests.py
+++ b/popular_proposal/tests/new_proposal_cycle_tests.py
@@ -153,6 +153,8 @@ def test_instantiate_one(self):
         self.assertIn(popular_proposal, self.arica.proposals.all())
         self.assertIsNone(popular_proposal.temporary)
         self.assertFalse(popular_proposal.background)
+        self.assertFalse(popular_proposal.contact_details)
+        self.assertFalse(popular_proposal.document)
         self.assertFalse(popular_proposal.image)
         self.assertEquals(popular_proposal.clasification, u'education')
         self.assertFalse(popular_proposal.for_all_areas)