diff --git a/pinaxcon/registrasion/migrations/0004_attendeeprofile_agreement.py b/pinaxcon/registrasion/migrations/0004_attendeeprofile_agreement.py
new file mode 100644
index 0000000000000000000000000000000000000000..10a4512a8868321f361de9c06e7d340c9c5382d2
--- /dev/null
+++ b/pinaxcon/registrasion/migrations/0004_attendeeprofile_agreement.py
@@ -0,0 +1,20 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.11.5 on 2017-10-04 13:15
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('pinaxcon_registrasion', '0003_auto_20171002_1719'),
+ ]
+
+ operations = [
+ migrations.AddField(
+ model_name='attendeeprofile',
+ name='agreement',
+ field=models.BooleanField(default=False, help_text=b"I agree to act according to the conference Code of Conduct. I also agree with the North Bay Python Terms and Conditions.", verbose_name=b'Agreement'),
+ ),
+ ]
diff --git a/pinaxcon/registrasion/models.py b/pinaxcon/registrasion/models.py
index c8a2a1dd976d777f1c7abdd32818c686aabeb850..b09a9810833e44c6dca1ed2c72b8787921f136d7 100644
--- a/pinaxcon/registrasion/models.py
+++ b/pinaxcon/registrasion/models.py
@@ -55,6 +55,12 @@ class AttendeeProfile(rego.AttendeeProfileBase):
"Please fill in line 1 before filling line 2",
))
+ if not self.agreement:
+ errors.append((
+ "agreement",
+ "You must accept the agreement.",
+ ))
+
if errors:
raise ValidationError(dict(errors))
@@ -137,3 +143,12 @@ class AttendeeProfile(rego.AttendeeProfileBase):
"announcements newsletter",
blank=True,
)
+
+ agreement = models.BooleanField(
+ verbose_name="Agreement",
+ help_text="I agree to act according to the "
+ "North Bay Python Code of Conduct. I also agree with the "
+ "North Bay Python Terms and Conditions.",
+ blank=False,
+ default=False,
+ )