diff --git a/config.py b/config.py index 0b57119..895ddf5 100644 --- a/config.py +++ b/config.py @@ -108,7 +108,7 @@ else: 'MAILGUN_SENDER_DOMAIN': os.environ['IVATAR_MAILGUN_SENDER_DOMAIN'], } EMAIL_BACKEND = 'anymail.backends.mailgun.EmailBackend' # pragma: no cover - except Exception as exc: + except Exception as exc: # pragma: nocover EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' SERVER_EMAIL = os.environ.get('SERVER_EMAIL', 'ivatar@mg.linux-kernel.at') diff --git a/ivatar/middleware.py b/ivatar/middleware.py index 6f6e066..2f052be 100644 --- a/ivatar/middleware.py +++ b/ivatar/middleware.py @@ -9,7 +9,7 @@ class MultipleProxyMiddleware(MiddlewareMixin): # pylint: disable=too-few-publi with multiple proxies """ - def process_request(self, request): + def process_request(self, request): # pylint: disable=no-self-use """ Rewrites the proxy headers so that forwarded server is used if available. diff --git a/ivatar/test_static_pages.py b/ivatar/test_static_pages.py index 5191509..89596c0 100644 --- a/ivatar/test_static_pages.py +++ b/ivatar/test_static_pages.py @@ -2,32 +2,18 @@ Test our views in ivatar.ivataraccount.views and ivatar.views ''' # pylint: disable=too-many-lines -from urllib.parse import urlsplit -from io import BytesIO -import io import os import django from django.test import TestCase from django.test import Client from django.urls import reverse from django.contrib.auth.models import User -from django.contrib.auth import authenticate -import hashlib -from libravatar import libravatar_url - -from PIL import Image +from ivatar.utils import random_string os.environ['DJANGO_SETTINGS_MODULE'] = 'ivatar.settings' django.setup() -# pylint: disable=wrong-import-position -from ivatar import settings -from ivatar.ivataraccount.forms import MAX_NUM_UNCONFIRMED_EMAILS_DEFAULT -from ivatar.ivataraccount.models import Photo, ConfirmedOpenId -from ivatar.utils import random_string -# pylint: enable=wrong-import-position - class Tester(TestCase): # pylint: disable=too-many-public-methods ''' @@ -77,4 +63,3 @@ class Tester(TestCase): # pylint: disable=too-many-public-methods """ response = self.client.get(reverse('security')) self.assertEqual(response.status_code, 200, 'no 200 ok?') - diff --git a/ivatar/test_views.py b/ivatar/test_views.py index cc18515..5631b8f 100644 --- a/ivatar/test_views.py +++ b/ivatar/test_views.py @@ -2,32 +2,17 @@ Test our views in ivatar.ivataraccount.views and ivatar.views ''' # pylint: disable=too-many-lines -from urllib.parse import urlsplit -from io import BytesIO -import io import os import django from django.test import TestCase from django.test import Client -from django.urls import reverse from django.contrib.auth.models import User -from django.contrib.auth import authenticate -import hashlib -from libravatar import libravatar_url - -from PIL import Image +from ivatar.utils import random_string os.environ['DJANGO_SETTINGS_MODULE'] = 'ivatar.settings' django.setup() -# pylint: disable=wrong-import-position -from ivatar import settings -from ivatar.ivataraccount.forms import MAX_NUM_UNCONFIRMED_EMAILS_DEFAULT -from ivatar.ivataraccount.models import Photo, ConfirmedOpenId -from ivatar.utils import random_string -# pylint: enable=wrong-import-position - class Tester(TestCase): # pylint: disable=too-many-public-methods ''' diff --git a/ivatar/test_wsgi.py b/ivatar/test_wsgi.py index 2e016ba..e2da514 100644 --- a/ivatar/test_wsgi.py +++ b/ivatar/test_wsgi.py @@ -17,6 +17,6 @@ class TestCase(unittest.TestCase): ''' Run wsgi import ''' - import ivatar.wsgi + import ivatar.wsgi # pylint: disable=import-outside-toplevel self.assertEqual(ivatar.wsgi.application.__class__, django.core.handlers.wsgi.WSGIHandler) diff --git a/ivatar/urls.py b/ivatar/urls.py index 39d44db..df3b450 100644 --- a/ivatar/urls.py +++ b/ivatar/urls.py @@ -29,7 +29,8 @@ urlpatterns = [ # pylint: disable=invalid-name GravatarProxyView.as_view(), name='gravatarproxy'), url('description/', TemplateView.as_view(template_name='description.html'), name='description'), # The following two are TODO TODO TODO TODO TODO - url('run_your_own/', TemplateView.as_view(template_name='run_your_own.html'), name='run_your_own'), + url('run_your_own/', + TemplateView.as_view(template_name='run_your_own.html'), name='run_your_own'), url('features/', TemplateView.as_view(template_name='features.html'), name='features'), url('security/', TemplateView.as_view(template_name='security.html'), name='security'), url('privacy/', TemplateView.as_view(template_name='privacy.html'), name='privacy'), @@ -39,10 +40,10 @@ urlpatterns = [ # pylint: disable=invalid-name MAINTENANCE = False try: - if settings.MAINTENANCE: - MAINTENANCE = True -except: - pass + if settings.MAINTENANCE: + MAINTENANCE = True +except: # pylint: disable=bare-except + pass if MAINTENANCE: urlpatterns.append(url('', TemplateView.as_view(template_name='maintenance.html'), name='home')) diff --git a/ivatar/views.py b/ivatar/views.py index 95af253..fb79958 100644 --- a/ivatar/views.py +++ b/ivatar/views.py @@ -57,7 +57,10 @@ def get_size(request, size=DEFAULT_AVATAR_SIZE): class CachingHttpResponse(HttpResponse): - def __init__(self, uri, content=b'', content_type=None, status=200, reason=None, charset=None): + ''' + Handle caching of response + ''' + def __init__(self, uri, content=b'', content_type=None, status=200, reason=None, charset=None): # pylint: disable=too-many-arguments if CACHE_RESPONSE: caches['filesystem'].set(uri, { 'content': content, @@ -66,7 +69,7 @@ class CachingHttpResponse(HttpResponse): 'reason': reason, 'charset': charset }) - return super().__init__(content, content_type, status, reason, charset) + super().__init__(content, content_type, status, reason, charset) class AvatarImageView(TemplateView): ''' @@ -74,7 +77,7 @@ class AvatarImageView(TemplateView): ''' # TODO: Do cache resize images!! Memcached? - def options(self, request, *args, **kwargs): # pylint: disable=too-many-branches,too-many-statements,too-many-locals,too-many-return-statements + def options(self, request, *args, **kwargs): response = HttpResponse("", content_type='text/plain') response['Allow'] = "404 mm mp retro pagan wavatar monsterid robohash identicon" return response @@ -137,7 +140,7 @@ class AvatarImageView(TemplateView): except ObjectDoesNotExist: model = ConfirmedOpenId try: - d = kwargs['digest'] + d = kwargs['digest'] # pylint: disable=invalid-name # OpenID is tricky. http vs. https, versus trailing slash or not # However, some users eventually have added their variations already # and therfore we need to use filter() and first() @@ -146,7 +149,7 @@ class AvatarImageView(TemplateView): Q(alt_digest1=d) | Q(alt_digest2=d) | Q(alt_digest3=d)).first() - except: + except: # pylint: disable=bare-except pass @@ -212,7 +215,7 @@ class AvatarImageView(TemplateView): img = img.resize((size, size), Image.ANTIALIAS) img.save(data, 'PNG', quality=JPEG_QUALITY) data.seek(0) - response = CachingHttpResponse( + response = CachingHttpResponse( uri, data, content_type='image/png') @@ -233,7 +236,7 @@ class AvatarImageView(TemplateView): return response if str(default) == 'identicon': - p = Pydenticon5() + p = Pydenticon5() # pylint: disable=invalid-name # In order to make use of the whole 32 bytes digest, we need to redigest them. newdigest = hashlib.md5(bytes(kwargs['digest'], 'utf-8')).hexdigest() img = p.draw(newdigest, size, 0) @@ -306,7 +309,7 @@ class GravatarProxyView(View): ''' # TODO: Do cache images!! Memcached? - def get(self, request, *args, **kwargs): # pylint: disable=too-many-branches,too-many-statements,too-many-locals,no-self-use,unused-argument + def get(self, request, *args, **kwargs): # pylint: disable=too-many-branches,too-many-statements,too-many-locals,no-self-use,unused-argument,too-many-return-statements ''' Override get from parent class ''' @@ -314,7 +317,7 @@ class GravatarProxyView(View): url = reverse_lazy( 'avatar_view', args=[kwargs['digest']]) + '?s=%i' % size + '&forcedefault=y' - if default != None: + if default is not None: url += '&default=%s' % default return HttpResponseRedirect(url) @@ -325,7 +328,7 @@ class GravatarProxyView(View): try: if str(request.GET['default']) != 'None': default = request.GET['default'] - except: + except: # pylint: disable=bare-except pass if str(default) != 'wavatar': @@ -344,7 +347,7 @@ class GravatarProxyView(View): if hashlib.md5(data.read()).hexdigest() == '71bc262d627971d13fe6f3180b93062a': cache.set(gravatar_test_url, 'default', 60) return redir_default(default) - except Exception as exc: + except Exception as exc: # pylint: disable=broad-except print('Gravatar test url fetch failed: %s' % exc) gravatar_url = 'https://secure.gravatar.com/avatar/' + kwargs['digest'] \