diff --git a/input/models.py b/input/models.py
index c0a8949..3c8b91c 100755
--- a/input/models.py
+++ b/input/models.py
@@ -5,9 +5,19 @@ from django.utils.html import format_html
from django.utils.safestring import mark_safe
EMAIL_STATES = {'NONE': 'noch keine Mail versendet',
- 'INF': 'die Benachrichtigung zur Projektabschlussmail wurde versendet',
- 'CLOSE': 'die Projektabschlussmail wurde versendet',
- 'END': 'alle automatischen Mails, auch surveyMail, wurden versendet'}
+ 'INF': 'die Benachrichtigung zur Projektabschlussmail wurde versendet',
+ 'CLOSE': 'die Projektabschlussmail wurde versendet',
+ 'END': 'alle automatischen Mails, auch surveyMail, wurden versendet'}
+
+
+class TermsConsentMixin(models.Model):
+ """Abstract mixin to add a terms_accepted field for documenting user consent."""
+
+ terms_accepted = models.BooleanField(default=False, verbose_name="Nutzungsbedingungen zugestimmt")
+
+ class Meta:
+ abstract = True
+
class Volunteer(models.Model):
realname = models.CharField(max_length=200, null=True, verbose_name="Realname",
@@ -323,7 +333,7 @@ SELFBUY_CHOICES = {'TRUE': mark_safe('Ich möchte das Werk selbst kaufen und per
}
-class Literature(Grant):
+class Literature(TermsConsentMixin, Grant):
info = models.CharField(max_length=500, verbose_name='Informationen zum Werk',
help_text=mark_safe("Bitte gib alle Informationen zum benötigten Werk an,
\
die eine eindeutige Identifizierung ermöglichen (Autor, Titel, Verlag, ISBN, ...)"))
@@ -367,7 +377,7 @@ ADULT_CHOICES = {'TRUE': mark_safe('Ich bin volljährig.'),
'FALSE': mark_safe('Ich bin noch nicht volljährig.')
}
-class Email(Domain):
+class Email(TermsConsentMixin, Domain):
address = models.CharField(max_length=50,
choices=MAIL_CHOICES.items(),
default='USERNAME', verbose_name='Adressbestandteil',
@@ -377,7 +387,7 @@ class Email(Domain):
adult = models.CharField( max_length=10, verbose_name='Volljährigkeit', choices=ADULT_CHOICES.items(), default='FALSE')
intern_notes = models.TextField(max_length=1000, blank=True, verbose_name="interne Anmerkungen")
-class List(Domain):
+class List(TermsConsentMixin, Domain):
address = models.CharField(max_length=50, default='NO_ADDRESS',
verbose_name="Adressbestandteil für Projektmailingliste",
help_text=mark_safe("Bitte gib hier den gewünschten Adressbestandteil an,
der sich vor der Domain befinden soll."))
@@ -396,7 +406,7 @@ PROJECT_CHOICE = {'PEDIA': 'Wikipedia',
BC_VARIANT = {'PIC': 'mit Bild',
'NOPIC': 'ohne Bild'}
-class BusinessCard(Extern):
+class BusinessCard(TermsConsentMixin, Extern):
project = models.CharField(max_length=20, choices=PROJECT_CHOICE.items(),
default='PEDIA', verbose_name='Wikimedia-Projekt',
help_text='Für welches Wikimedia-Projekt möchtest Du Visitenkarten?')