Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# Generated by Django 2.2.28 on 2022-08-20 11:27

from django.db import migrations
import phonenumber_field.modelfields


class Migration(migrations.Migration):

dependencies = [
('petition', '0015_petitiontemplate_has_share_buttons'),
]

operations = [
migrations.AlterField(
model_name='signature',
name='phone',
field=phonenumber_field.modelfields.PhoneNumberField(blank=True, max_length=20, region=None, verbose_name='Phone number'),
),
]
3 changes: 2 additions & 1 deletion pytition/petition/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
from django.db import transaction
from django.urls import reverse
from django.utils import timezone
from phonenumber_field.modelfields import PhoneNumberField

from tinymce import models as tinymce_models
from colorfield.fields import ColorField
Expand Down Expand Up @@ -438,7 +439,7 @@ def moderate(self, do_moderate=True):
class Signature(models.Model):
first_name = models.CharField(max_length=50, verbose_name=ugettext_lazy("First name"))
last_name = models.CharField(max_length=50, verbose_name=ugettext_lazy("Last name"))
phone = models.CharField(max_length=20, blank=True, verbose_name=ugettext_lazy("Phone number"))
phone = PhoneNumberField(max_length=20, blank=True, verbose_name=ugettext_lazy("Phone number"))
email = models.EmailField(verbose_name=ugettext_lazy("Email address"))
confirmation_hash = models.CharField(max_length=128)
confirmed = models.BooleanField(default=False, verbose_name=ugettext_lazy("Confirmed"))
Expand Down
17 changes: 17 additions & 0 deletions pytition/petition/tests/tests_CreateSignatureView.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ def test_CreateSignaturePOSTOk(self):
'first_name': 'Alan',
'last_name': 'John',
'email': '[email protected]',
'phone': '0605040302',
'subscribed_to_mailinglist': False,
}
petition = Petition.objects.filter(published=True).first()
Expand All @@ -26,10 +27,26 @@ def test_CreateSignaturePOSTOk(self):
signature = Signature.objects.filter(petition=petition).first()
self.assertEqual(signature.confirmed, False)
self.assertEqual(signature.email, '[email protected]')
self.assertEqual(signature.phone, '+33605040302')
self.assertEqual(signature.first_name, 'Alan')
self.assertEqual(signature.last_name, 'John')
self.assertEqual(signature.subscribed_to_mailinglist, False)

def test_CreateSignaturePOSTNok(self):
data = {
'first_name': 'Alan',
'last_name': '',
'email': 'wrong-mail.org',
'phone': '060504030201',
}
petition = Petition.objects.filter(published=True).first()
response = self.client.post(reverse('create_signature', args=[petition.id]), data)
self.assertEqual(Signature.objects.count(), 0)
self.assertTemplateUsed(response, 'petition/petition_detail.html')
self.assertContains(response, 'This field is required')
self.assertContains(response, 'Enter a valid phone number')
self.assertContains(response, 'Enter a valid email address')

def test_CreateSignatureGETOk(self):
petition = Petition.objects.filter(published=True).first()
response = self.client.get(reverse('create_signature', args=[petition.id]), follow=True)
Expand Down
4 changes: 4 additions & 0 deletions pytition/pytition/settings/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@
'django.contrib.staticfiles',
'widget_tweaks',
'formtools',
'phonenumber_field',
]

MIDDLEWARE = [
Expand Down Expand Up @@ -275,3 +276,6 @@
MAINTENANCE_MODE_IGNORE_ADMIN_SITE = True
# Following setting prevents error 500, due to issue #76 of django_maintenance_mode
MAINTENANCE_MODE_STATE_FILE_PATH = os.path.join(BASE_DIR, 'maintenance_mode_state.txt')

# Set default region to France in order to accept phone numbers without specifying prefix (+33)
PHONENUMBER_DEFAULT_REGION = "FR"
1 change: 1 addition & 0 deletions requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ django-colorfield==0.1.15
django-tinymce==2.8.0
django-mailer==1.2.6
django-maintenance-mode
django-phonenumber-field[phonenumbers]==6.3.0
requests~=2.20.0
mysqlclient==2.0.1
django-widget-tweaks==1.4.3
Expand Down