try to make pylint happy
All checks were successful
buildbot/tox Build done.

This commit is contained in:
2022-06-08 00:08:09 +02:00
parent 8610e2a557
commit 98a6fc3ce7
60 changed files with 565 additions and 560 deletions

View File

@@ -1 +1 @@
default_app_config = 'dav_submission.apps.AppConfig'
default_app_config = 'dav_submission.apps.AppConfig' # pylint: disable=invalid-name

View File

@@ -19,5 +19,5 @@ DEFAULT_SETTINGS = (
class AppConfig(_AppConfig):
name = 'dav_submission'
verbose_name = u'DAV Beitragsupload (150 Jahre DAV)'
verbose_name = 'DAV Beitragsupload (150 Jahre DAV)'
default_settings = DEFAULT_SETTINGS

View File

@@ -6,8 +6,8 @@ from dav_base.emails import AbstractMail
app_config = apps.get_containing_app_config(__package__)
class NewSubmissionMail(AbstractMail):
_subject = u'Neuer Beitrag: {title}'
class NewSubmissionMail(AbstractMail): # pylint: disable=too-few-public-methods
_subject = 'Neuer Beitrag: {title}'
_template_name = 'dav_submission/emails/new_submission.txt'
def __init__(self, metadata):
@@ -15,18 +15,18 @@ class NewSubmissionMail(AbstractMail):
def _get_subject(self, subject_fmt=None, **kwargs):
kwargs['title'] = self._metadata['title']
return super(NewSubmissionMail, self)._get_subject(subject_fmt=subject_fmt, **kwargs)
return super()._get_subject(subject_fmt=subject_fmt, **kwargs)
def _get_reply_to(self):
s = u'"{fullname}" <{email}>'.format(fullname=self._metadata['name'],
email=self._metadata['email_address'])
return [s]
reply_to = '"{fullname}" <{email}>'.format(fullname=self._metadata['name'],
email=self._metadata['email_address'])
return [reply_to]
def _get_recipients(self):
r = app_config.settings.notify_address
return [r]
def _get_context_data(self, extra_context=None):
context = super(NewSubmissionMail, self)._get_context_data(extra_context=extra_context)
context = super()._get_context_data(extra_context=extra_context)
context['metadata'] = self._metadata
return context

View File

@@ -8,59 +8,59 @@ app_config = apps.get_containing_app_config(__package__)
class UploadForm(forms.Form):
name = forms.CharField(max_length=1024,
label=_(u'Dein Name'),
help_text=_(u'Wenn wir wissen, wie du heißt, wird uns das echt weiter helfen'))
email_address = forms.EmailField(label=_(u'Deine E-Mail-Adresse'),
help_text=_(u'Damit wir dich für Rückfragen kontaktieren können'))
label=_('Dein Name'),
help_text=_('Wenn wir wissen, wie du heißt, wird uns das echt weiter helfen'))
email_address = forms.EmailField(label=_('Deine E-Mail-Adresse'),
help_text=_('Damit wir dich für Rückfragen kontaktieren können'))
group = forms.CharField(max_length=1024,
required=False,
label=_(u'DAV Gruppe'),
help_text=_(u'Optional, falls du aktiv in einer der Sektionsgruppen bist'))
label=_('DAV Gruppe'),
help_text=_('Optional, falls du aktiv in einer der Sektionsgruppen bist'))
title = forms.CharField(max_length=60,
label=_(u'Titel deines Beitrags / Stichwort'),
help_text=u'%s<br />\n%s' % (
_(u'Kommt zum Bild, falls es veröffentlicht wird'),
_(u'Maximal 60 Zeichen')
label=_('Titel deines Beitrags / Stichwort'),
help_text='%s<br />\n%s' % (
_('Kommt zum Bild, falls es veröffentlicht wird'),
_('Maximal 60 Zeichen')
))
description = forms.CharField(max_length=300,
label=_(u'Beschreibung'),
help_text=u'%s<br />\n%s' % (
_(u'Wo warst du? Was hast du gemacht? Worum ging es bei der Aktion?'),
_(u'Maximal 300 Zeichen')
label=_('Beschreibung'),
help_text='%s<br />\n%s' % (
_('Wo warst du? Was hast du gemacht? Worum ging es bei der Aktion?'),
_('Maximal 300 Zeichen')
),
widget=forms.Textarea(attrs={'rows': 2}))
files = forms.FileField(label=_(u'Dateien'),
help_text=_(u'Wenn du auf den Button klickst, kannst du mehrere Dateien auswählen'
u' (nötigenfalls Strg- oder Command-Taste benutzen)'),
files = forms.FileField(label=_('Dateien'),
help_text=_('Wenn du auf den Button klickst, kannst du mehrere Dateien auswählen'
' (nötigenfalls Strg- oder Command-Taste benutzen)'),
widget=forms.ClearableFileInput(attrs={'multiple': True}))
accepted = forms.BooleanField(required=False,
label=_(u'Ja, ich stimme den Teilnahmebedingungen zu!'))
label=_('Ja, ich stimme den Teilnahmebedingungen zu!'))
def __init__(self, *args, **kwargs):
super(UploadForm, self).__init__(*args, **kwargs)
super().__init__(*args, **kwargs)
self.fields['title'].widget.attrs['placeholder'] = \
u'z.B. Nacktbesteigung der Nose' \
u' oder Juma jümart Jung-Mann-Weg'[:self.fields['title'].max_length]
'z.B. Nacktbesteigung der Nose' \
' oder Juma jümart Jung-Mann-Weg'[:self.fields['title'].max_length]
self.fields['group'].widget.attrs['placeholder'] = \
ugettext(u'Kann frei gelassen werden')[:self.fields['title'].max_length]
ugettext('Kann frei gelassen werden')[:self.fields['title'].max_length]
help_text = self.fields['files'].help_text
if app_config.settings.max_files:
help_text += u'<br />\n%s' % (ugettext(u'Wähle bis zu %d Dateien aus')
% app_config.settings.max_files)
help_text += '<br />\n%s' % (ugettext('Wähle bis zu %d Dateien aus')
% app_config.settings.max_files)
if app_config.settings.max_file_size_mib:
help_text += u'<br />\n%s' % (ugettext(u'Einzelne Dateien dürfen maximal %d MiB groß sein')
% app_config.settings.max_file_size_mib)
help_text += '<br />\n%s' % (ugettext('Einzelne Dateien dürfen maximal %d MiB groß sein')
% app_config.settings.max_file_size_mib)
if app_config.settings.max_total_size_mib:
help_text += u'<br />\n%s' % (ugettext(u'Alle Dateien zusammen dürfen maximal %d MiB groß sein')
% app_config.settings.max_total_size_mib)
help_text += '<br />\n%s' % (ugettext('Alle Dateien zusammen dürfen maximal %d MiB groß sein')
% app_config.settings.max_total_size_mib)
self.fields['files'].help_text = help_text
def clean_files(self):
@@ -77,35 +77,35 @@ class UploadForm(forms.Form):
n_files = 0
for file in files:
if file.name in not_allowed_file_names:
ve = forms.ValidationError(
ugettext(u'Dateiname nicht erlaubt: %s') % file.name,
e = forms.ValidationError(
ugettext('Dateiname nicht erlaubt: %s') % file.name,
code='filename_not_allowed',
)
validation_errors.append(ve)
validation_errors.append(e)
if max_file_size and file.size > max_file_size:
ve = forms.ValidationError(
ugettext(u'Die Datei ist insgesamt zu groß:'
u' %(name)s (> %(max_mib)s MiB)') % {'name': file.name, 'max_mib': max_file_size_mib},
e = forms.ValidationError(
ugettext('Die Datei ist insgesamt zu groß:'
' %(name)s (> %(max_mib)s MiB)') % {'name': file.name, 'max_mib': max_file_size_mib},
code='file_to_big',
)
validation_errors.append(ve)
validation_errors.append(e)
size_total += file.size
n_files += 1
max_total_size = max_total_size_mib * 1024 * 1024
if max_total_size and size_total > max_total_size:
ve = forms.ValidationError(
ugettext(u'Dein Beitrag ist zu groß (%s MiB)') % max_total_size_mib,
e = forms.ValidationError(
ugettext('Dein Beitrag ist zu groß (%s MiB)') % max_total_size_mib,
code='files_to_big',
)
validation_errors.append(ve)
validation_errors.append(e)
if max_files and n_files > max_files:
ve = forms.ValidationError(
ugettext(u'Dein Beitrag enthält mehr als %d Dateien') % max_files,
e = forms.ValidationError(
ugettext('Dein Beitrag enthält mehr als %d Dateien') % max_files,
code='files_to_big',
)
validation_errors.append(ve)
validation_errors.append(e)
if validation_errors:
raise forms.ValidationError(validation_errors)
@@ -116,9 +116,9 @@ class UploadForm(forms.Form):
val = self.cleaned_data.get('accepted')
if not val:
raise forms.ValidationError(
ugettext(u'Um deinen Beitrag hochladen zu können,'
u' musst du den Teilnahmebedingungen zustimmen.'
u' Dazu musst du das Kästchen ankreuzen!'),
ugettext('Um deinen Beitrag hochladen zu können,'
' musst du den Teilnahmebedingungen zustimmen.'
' Dazu musst du das Kästchen ankreuzen!'),
code='not_accepted',
)
return val

View File

@@ -3,10 +3,10 @@ import codecs
import datetime
import logging
import os
import pytz
import re
import urllib
import zipfile
import pytz
from django.apps import apps
from django.contrib import messages
from django.contrib.auth.decorators import login_required
@@ -90,7 +90,7 @@ class ListView(generic.ListView):
permission_group = app_config.settings.download_group
if not request.user.groups.filter(name=permission_group).exists():
raise PermissionDenied()
return super(ListView, self).dispatch(request, *args, **kwargs)
return super().dispatch(request, *args, **kwargs)
class DownloadView(generic.DetailView):
@@ -139,7 +139,7 @@ class DownloadView(generic.DetailView):
permission_group = app_config.settings.download_group
if not request.user.groups.filter(name=permission_group).exists():
raise PermissionDenied()
return super(DownloadView, self).dispatch(request, *args, **kwargs)
return super().dispatch(request, *args, **kwargs)
class UploadView(generic.edit.FormView):
@@ -155,30 +155,30 @@ class UploadView(generic.edit.FormView):
form_class = UploadForm
success_url = reverse_lazy('dav_submission:success')
def _sanitize_filename(self, input):
def _sanitize_filename(self, filename):
max_length = None
discard_chars = u''
discard_chars = ''
replace_chars = {
u'ä': u'ae',
u'ö': u'oe',
u'ü': u'ue',
u'ß': u'ss',
u'Ä': u'Ae',
u'Ö': u'Oe',
u'Ü': u'Ue',
'ä': 'ae',
'ö': 'oe',
'ü': 'ue',
'ß': 'ss',
'Ä': 'Ae',
'Ö': 'Oe',
'Ü': 'Ue',
}
allowed_chars = (u'abcdefghijklmnopqrstuvwxyz'
u'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
u'0123456789'
u'._-')
non_allowed_substitute = u'_'
space_substitute = u'_'
allowed_chars = ('abcdefghijklmnopqrstuvwxyz'
'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
'0123456789'
'._-')
non_allowed_substitute = '_'
space_substitute = '_'
if space_substitute is None:
space_substitute = non_allowed_substitute
r = ''
for c in input:
for c in filename:
if c in discard_chars:
continue
elif c in replace_chars:
@@ -195,14 +195,14 @@ class UploadView(generic.edit.FormView):
return r[:max_length]
def get_context_data(self, **kwargs):
c = super(UploadView, self).get_context_data(**kwargs)
c = super().get_context_data(**kwargs)
c['show_upload_form'] = app_config.settings.enable_upload
return c
def form_valid(self, form):
base_path = app_config.settings.upload_path
subdir_format_str = u'{datetime}--{title}'
subdir_format_str = '{datetime}--{title}'
now = timezone.now()
subdir_format_kwargs = {'datetime': now.strftime('%Y-%m-%d--%H%M%S'),
'date': now.strftime('%Y-%m-%d'),
@@ -214,7 +214,7 @@ class UploadView(generic.edit.FormView):
subdir_path = os.path.join(base_path, subdir_name)
if os.path.isdir(subdir_path):
message = _(u'Es gibt bereits einen Beitrag mit dem Titel "%(title)s".') % subdir_format_kwargs
message = _('Es gibt bereits einen Beitrag mit dem Titel "%(title)s".') % subdir_format_kwargs
messages.error(self.request, message)
form.add_error('title', message)
return self.render_to_response(self.get_context_data(form=form))
@@ -222,7 +222,7 @@ class UploadView(generic.edit.FormView):
os.makedirs(subdir_path)
try:
metadata_format_str = u"""Absender: {name} <{email_address}>
metadata_format_str = """Absender: {name} <{email_address}>
Gruppe: {group}
Datum: {date} {time}
Titel: {title}
@@ -246,10 +246,10 @@ Beschreibung:
with codecs.open(metadata_file_path, 'w', encoding='utf-8') as metadata_file:
metadata_file.write(metadata)
except Exception as e:
message = _(u'Jetzt ist irgendwas schief gelaufen.')
message = _('Jetzt ist irgendwas schief gelaufen.')
messages.error(self.request, message)
logger.error('dav_submission.views.UploadView.form_valid(): Catched Exception #2: %s', str(e))
return super(UploadView, self).form_valid(form)
return super().form_valid(form)
try:
for input_file in form.files.getlist('files'):
@@ -257,7 +257,7 @@ Beschreibung:
file_path = os.path.join(subdir_path, file_name)
if os.path.exists(file_path):
message = _(u'Die Datei %(name)s haben wir bereits.') % {'name': input_file.name}
message = _('Die Datei %(name)s haben wir bereits.') % {'name': input_file.name}
messages.error(self.request, message)
continue
@@ -267,28 +267,28 @@ Beschreibung:
size = os.path.getsize(file_path)
if size > (1024 * 1024):
size_str = u'%s MiB' % ('%.3f' % (size / 1024.0 / 1024.0)).rstrip('0').rstrip('.')
size_str = '%s MiB' % ('%.3f' % (size / 1024.0 / 1024.0)).rstrip('0').rstrip('.')
elif size > 1024:
size_str = u'%s KiB' % ('%.3f' % (size / 1024.0)).rstrip('0').rstrip('.')
size_str = '%s KiB' % ('%.3f' % (size / 1024.0)).rstrip('0').rstrip('.')
else:
size_str = u'%d Byte' % size
message = _(u'Datei erfolgreich hochgeladen: %(name)s (%(size)s)') % {'name': input_file.name,
'size': size_str}
size_str = '%d Byte' % size
message = _('Datei erfolgreich hochgeladen: %(name)s (%(size)s)') % {'name': input_file.name,
'size': size_str}
messages.success(self.request, message)
except Exception as e:
message = _(u'Jetzt ist irgendwas schief gelaufen.')
message = _('Jetzt ist irgendwas schief gelaufen.')
messages.error(self.request, message)
logger.error('dav_submission.views.UploadView.form_valid(): Catched Exception #3: %s', str(e))
return super(UploadView, self).form_valid(form)
return super().form_valid(form)
mail = NewSubmissionMail(metadata_format_kwargs)
mail.send()
return super(UploadView, self).form_valid(form)
return super().form_valid(form)
def post(self, request, *args, **kwargs):
if not app_config.settings.enable_upload:
raise PermissionDenied(_(u'Der Upload ist noch nicht freigeschaltet.'))
return super(UploadView, self).post(request, *args, **kwargs)
raise PermissionDenied(_('Der Upload ist noch nicht freigeschaltet.'))
return super().post(request, *args, **kwargs)
class SuccessView(generic.TemplateView):