diff --git a/accounts/forms.py b/accounts/forms.py index a4489f2..457909d 100644 --- a/accounts/forms.py +++ b/accounts/forms.py @@ -13,12 +13,12 @@ UserForm = modelform_factory(User, fields=['first_name', 'last_name', 'email', ' ProfileForm = modelform_factory(Profile, fields=['biography']) -ParticipationForm = modelform_factory(Participation, fields=['transport', 'connector', 'sound', 'constraints']) +ParticipationForm = modelform_factory(Participation, fields=['transport', 'connector', 'sound', 'videotaped', 'video_licence', 'constraints']) ProfileOrgaForm = modelform_factory(Profile, fields=['biography', 'notes']) ParticipationOrgaForm = modelform_factory(Participation, - fields=['transport', 'connector', 'sound', 'constraints', 'orga']) + fields=['transport', 'connector', 'sound', 'videotaped', 'video_licence', 'constraints', 'orga']) class ParticipationField(forms.ModelChoiceField): def label_from_instance(self, obj): diff --git a/accounts/migrations/0003_auto_20160709_2240.py b/accounts/migrations/0003_auto_20160709_2240.py new file mode 100644 index 0000000..47328d9 --- /dev/null +++ b/accounts/migrations/0003_auto_20160709_2240.py @@ -0,0 +1,25 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.9.7 on 2016-07-09 22:40 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('accounts', '0002_auto_20160709_2059'), + ] + + operations = [ + migrations.AddField( + model_name='participation', + name='video_licence', + field=models.IntegerField(choices=[(1, 'CC-Zero'), (2, 'CC-BY'), (3, 'CC-BY-SA'), (4, 'CC-BY-ND'), (5, 'CC-BY-NC'), (6, 'CC-BY-NC-SA'), (7, 'CC-BY-NC-ND')], default=1), + ), + migrations.AddField( + model_name='participation', + name='videotaped', + field=models.BooleanField(default=True, verbose_name="I'm ok to be recorded on video"), + ), + ] diff --git a/accounts/models.py b/accounts/models.py index 2ad9b20..3ce2332 100644 --- a/accounts/models.py +++ b/accounts/models.py @@ -30,6 +30,7 @@ class Participation(PonyConfModel): TRANSPORTS = IntEnum('Transport', 'train plane others') CONNECTORS = IntEnum('Connector', 'VGA HDMI miniDP') + LICENCES = IntEnum('Video licence', 'CC-Zero CC-BY CC-BY-SA CC-BY-ND CC-BY-NC CC-BY-NC-SA CC-BY-NC-ND') site = models.ForeignKey(Site, on_delete=models.CASCADE) user = models.ForeignKey(User) @@ -41,6 +42,8 @@ class Participation(PonyConfModel): connector = models.IntegerField(choices=enum_to_choices(CONNECTORS), blank=True, null=True) constraints = models.TextField(blank=True) sound = models.BooleanField("I need sound", default=False) + videotaped = models.BooleanField("I'm ok to be recorded on video", default=True) + video_licence = models.IntegerField(choices=enum_to_choices(LICENCES), default=1) orga = models.BooleanField(default=False) class Meta: diff --git a/accounts/tests.py b/accounts/tests.py index 8293353..685c408 100644 --- a/accounts/tests.py +++ b/accounts/tests.py @@ -32,10 +32,10 @@ class AccountTests(TestCase): self.client.login(username='b', password='b') # He tries with an invalid address - self.client.post(reverse('profile'), {'email': 'bnewdomain.com', 'username': 'z', 'biography': 'tester'}) + self.client.post(reverse('profile'), {'email': 'bnewdomain.com', 'username': 'z', 'biography': 'tester', 'video_licence': 1}) self.assertEqual(User.objects.filter(username='z').count(), 0) - self.client.post(reverse('profile'), {'email': 'b@newdomain.com', 'username': 'z', 'biography': 'tester'}) + self.client.post(reverse('profile'), {'email': 'b@newdomain.com', 'username': 'z', 'biography': 'tester', 'video_licence': 1}) user = User.objects.get(username='z') self.assertEqual(user.email, 'b@newdomain.com') @@ -62,6 +62,7 @@ class AccountTests(TestCase): self.assertEqual(self.client.post(reverse('edit-participant', kwargs={'username': 'a'}), {'biography': 'foo', 'notes': 'bar', 'first_name': 'Jules', 'username': 'a', 'last_name': 'César', 'email': 'a@example.org', 'transport': 1, - 'connector': 1, 'constraints': 'nope', 'orga': 0, + 'connector': 1, 'video_licence': 2, 'constraints': 'nope', 'orga': 0, }).status_code, 200) self.assertEqual(User.objects.get(username='a').profile.biography, 'foo') + self.assertEqual(Participation.objects.get(user=User.objects.get(username='a')).video_licence, 2)