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?')