allow pdf as registration form

v1-0-stable
Christian Merten 8 years ago
parent 9522fcc968
commit 72ef3ac332

@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-07-05 10:06+0000\n" "POT-Creation-Date: 2017-11-11 16:16+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -45,3 +45,11 @@ msgstr "Start"
#: templates/admin/base_site.html:5 templates/admin/base_site.html:9 #: templates/admin/base_site.html:5 templates/admin/base_site.html:9
msgid "JDAV LB Administration" msgid "JDAV LB Administration"
msgstr "JDAV LB Verwaltung" msgstr "JDAV LB Verwaltung"
#: utils.py:26
msgid "Filetype not supported."
msgstr "Dateityp nicht unterstützt."
#: utils.py:28
msgid "Please keep filesize under {}. Current filesize: {}"
msgstr "Maximale Dateigröße {}. Aktuelle Dateigröße: {}."

@ -4,6 +4,7 @@ from django import forms
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext_lazy as _
from django.utils.translation import ugettext from django.utils.translation import ugettext
from .mailutils import send, get_content, SENT, PARTLY_SENT, mail_root from .mailutils import send, get_content, SENT, PARTLY_SENT, mail_root
from utils import RestrictedFileField
import os import os
@ -11,28 +12,6 @@ import os
SENDING_ADDRESS = mail_root SENDING_ADDRESS = mail_root
class RestrictedFileField(models.FileField):
def __init__(self, *args, **kwargs):
if "max_upload_size" in kwargs:
self.max_upload_size = kwargs.pop("max_upload_size")
super(RestrictedFileField, self).__init__(*args, **kwargs)
def clean(self, *args, **kwargs):
data = super(RestrictedFileField, self).clean(*args, **kwargs)
f = data.file
try:
if f._size > self.max_upload_size:
raise forms.ValidationError('Please keep filesize under {}. '
'Current filesize: '
'{}'.format(self.max_upload_size,
f._size))
except AttributeError as e:
print(e)
return data
# Create your models here. # Create your models here.
class Message(models.Model): class Message(models.Model):
"""Represents a message that can be sent to some members""" """Represents a message that can be sent to some members"""

@ -3,6 +3,7 @@ import uuid
from django.db import models from django.db import models
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext_lazy as _
from django.utils import timezone from django.utils import timezone
from utils import RestrictedFileField
GEMEINSCHAFTS_TOUR = 0 GEMEINSCHAFTS_TOUR = 0
FUEHRUNGS_TOUR = 1 FUEHRUNGS_TOUR = 1
@ -67,7 +68,14 @@ class Member(models.Model):
comments = models.TextField(_('comments'), default='', blank=True) comments = models.TextField(_('comments'), default='', blank=True)
created = models.DateField(auto_now=True, verbose_name=_('created')) created = models.DateField(auto_now=True, verbose_name=_('created'))
registered = models.BooleanField(default=False, verbose_name=_('Registration complete')) registered = models.BooleanField(default=False, verbose_name=_('Registration complete'))
registration_form = models.ImageField(verbose_name=_('registration form'), blank=True) registration_form = RestrictedFileField(verbose_name=_('registration form'),
upload_to='registration_forms',
blank=True,
max_upload_size=5242880,
content_types=['application/pdf',
'image/jpeg',
'image/png',
'image/gif'])
def __str__(self): def __str__(self):
"""String representation""" """String representation"""

@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-01-14 17:13+0100\n" "POT-Creation-Date: 2017-11-11 16:16+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"

@ -0,0 +1,34 @@
from django.db import models
from django.core.exceptions import ValidationError
from django.utils.translation import ugettext_lazy as _
class RestrictedFileField(models.FileField):
def __init__(self, *args, **kwargs):
if "max_upload_size" in kwargs:
self.max_upload_size = kwargs.pop("max_upload_size")
else:
self.max_upload_size = None
if "content_types" in kwargs:
self.content_types = kwargs.pop("content_types")
else:
self.content_types = None
super(RestrictedFileField, self).__init__(*args, **kwargs)
def clean(self, *args, **kwargs):
data = super(RestrictedFileField, self).clean(*args, **kwargs)
f = data.file
try:
content_type = f.content_type
if self.content_types is not None and content_type not in self.content_types:
raise ValidationError(_('Filetype not supported.'))
if self.max_upload_size is not None and f._size > self.max_upload_size:
raise ValidationError(_('Please keep filesize under {}. '
'Current filesize: '
'{}').format(self.max_upload_size,
f._size))
except AttributeError as e:
print(e)
return data
Loading…
Cancel
Save