diff --git a/beat/web/navigation/admin.py b/beat/web/navigation/admin.py index 7295a9963d26ee107e621b9765cdcdb0ebf5bea4..0786d187e1a94abfcf94419cb5d49498e40a82ca 100644 --- a/beat/web/navigation/admin.py +++ b/beat/web/navigation/admin.py @@ -29,12 +29,11 @@ from django.contrib import admin from django.contrib.auth.admin import UserAdmin from django.contrib.auth.models import User -from .models import Agreement from ..accounts.models import AccountSettings -from ..accounts.models import SupervisionTrack from ..accounts.models import Profile +from ..accounts.models import SupervisionTrack from ..accounts.models import TemporaryUrl - +from .models import Agreement # ---------------------------------------------------------- diff --git a/beat/web/navigation/apps.py b/beat/web/navigation/apps.py index df576fb7006ca7e17bd6032b77bc69f51c558a84..378406d3fb5f342bca12aeb68cbe4b78444d6d89 100644 --- a/beat/web/navigation/apps.py +++ b/beat/web/navigation/apps.py @@ -28,10 +28,11 @@ from django.apps import AppConfig from django.utils.translation import ugettext_lazy as _ + class NavigationConfig(AppConfig): - name = 'beat.web.navigation' - verbose_name = _('Navigation') + name = "beat.web.navigation" + verbose_name = _("Navigation") def ready(self): - from .signals import create_agreement + from .signals import create_agreement # noqa: F401 diff --git a/beat/web/navigation/context_processors.py b/beat/web/navigation/context_processors.py index 67dfa4b1bdfd29f4d6b78fae196fec1be7b746fa..6e0bc9afbad1a1b21d96654be3803b1c1dc6aaea 100644 --- a/beat/web/navigation/context_processors.py +++ b/beat/web/navigation/context_processors.py @@ -26,6 +26,7 @@ ############################################################################### from django.conf import settings + from .. import __version__ diff --git a/beat/web/navigation/middleware.py b/beat/web/navigation/middleware.py index b7dc36bfcca43d2b2e1fe5641b5a2127eca702cc..6c6e36d3535c0c6615304b4404e7101477503617 100644 --- a/beat/web/navigation/middleware.py +++ b/beat/web/navigation/middleware.py @@ -27,35 +27,37 @@ """Django Middleware to check for agreements to Legal Disclaimers and ToS""" - -from django.contrib import messages from django.conf import settings +from django.contrib import messages from django.urls import reverse from django.utils.safestring import mark_safe + def remove_banner_message(request): - '''Silences all banner messages''' + """Silences all banner messages""" storage = messages.get_messages(request) for message in storage: - if message.extra_tags and 'banner' in message.extra_tags: - message.extra_tags = message.extra_tags.replace('banner', '') + if message.extra_tags and "banner" in message.extra_tags: + message.extra_tags = message.extra_tags.replace("banner", "") message.extra_tags = message.extra_tags.strip() message.level = 0 + def add_banner_message(request, text): - '''Adds a new banner message if one is not already set''' + """Adds a new banner message if one is not already set""" storage = messages.get_messages(request) for message in storage: - if message.extra_tags and 'banner' in message.extra_tags: + if message.extra_tags and "banner" in message.extra_tags: message.message = text return - messages.warning(request, text, extra_tags='banner', fail_silently=True) + messages.warning(request, text, extra_tags="banner", fail_silently=True) + -class AgreementMiddleware(): - '''Checks for user agreement on legal disclaimers or terms-of-service.''' +class AgreementMiddleware: + """Checks for user agreement on legal disclaimers or terms-of-service.""" def __init__(self, get_response): self.get_response = get_response @@ -68,14 +70,26 @@ class AgreementMiddleware(): if request.user.is_authenticated: if settings.TERMS_OF_SERVICE_VERSION > request.user.agreement.version: - add_banner_message(request, mark_safe('We have modified our <a href="%s">Terms of Service (please take a moment to read them)</a>' % reverse('terms-of-service'))) + add_banner_message( + request, + mark_safe( # nosec + 'We have modified our <a href="%s">Terms of Service (please take a moment to read them)</a>' + % reverse("terms-of-service") + ), + ) else: remove_banner_message(request) else: - user_version = request.session.get('beat_disclaimer_version', 0) + user_version = request.session.get("beat_disclaimer_version", 0) if settings.LEGAL_DISCLAIMER_VERSION > user_version: - add_banner_message(request, mark_safe('By continuing to browse this website, you implicitly agree with our <a href="%s">Legal Disclaimer</a>' % reverse('legal-disclaimer'))) + add_banner_message( + request, + mark_safe( # nosec + 'By continuing to browse this website, you implicitly agree with our <a href="%s">Legal Disclaimer</a>' + % reverse("legal-disclaimer") + ), + ) else: remove_banner_message(request) diff --git a/beat/web/navigation/models.py b/beat/web/navigation/models.py index e46c7a4099b39c43957e775149f76fa491a1d238..c65c1a7869fd06e5c81e4c6594b3d8cc018612a9 100644 --- a/beat/web/navigation/models.py +++ b/beat/web/navigation/models.py @@ -25,9 +25,8 @@ # # ############################################################################### -from django.db import models from django.contrib.auth.models import User - +from django.db import models # ---------------------------------------------------------- diff --git a/beat/web/navigation/signals.py b/beat/web/navigation/signals.py index 9dcdd4b0762024c0034d10d46b77b282a37967e9..7a5d5ec31f104c15b928b96f9d3270d4727decca 100644 --- a/beat/web/navigation/signals.py +++ b/beat/web/navigation/signals.py @@ -25,17 +25,17 @@ # # ############################################################################### +from django.conf import settings +from django.contrib.auth.models import User from django.db.models.signals import post_save from django.dispatch import receiver -from django.contrib.auth.models import User -from django.conf import settings from .models import Agreement + @receiver(post_save, sender=User) def create_agreement(sender, instance, created, **kwargs): """If the user was just created, make sure to instantiate an agreement""" if created and not instance.pk == settings.ANONYMOUS_USER_ID: - agreement = Agreement(user=instance, - version=settings.TERMS_OF_SERVICE_VERSION) + agreement = Agreement(user=instance, version=settings.TERMS_OF_SERVICE_VERSION) agreement.save() diff --git a/beat/web/navigation/views.py b/beat/web/navigation/views.py index 25aee988650bdd7bf1d8e7de45e775269eafadfe..697af8e9dc7c8230faf7466d20fb72af34113b3e 100644 --- a/beat/web/navigation/views.py +++ b/beat/web/navigation/views.py @@ -25,17 +25,17 @@ # # ############################################################################### +from django.conf import settings from django.shortcuts import render from django.template import loader -from django.conf import settings from .middleware import remove_banner_message def terms_of_service(request): - '''Returns an HTML page with the Terms of Service to the user''' + """Returns an HTML page with the Terms of Service to the user""" - template = loader.get_template('navigation/terms_of_service.rst') + template = loader.get_template("navigation/terms_of_service.rst") contents = template.render() # if user is logged-in, make sure to udpate its agreement status @@ -44,22 +44,19 @@ def terms_of_service(request): request.user.agreement.save() else: # equivalent behavior for non-logged in users - request.session['beat_disclaimer_version'] = \ - settings.LEGAL_DISCLAIMER_VERSION + request.session["beat_disclaimer_version"] = settings.LEGAL_DISCLAIMER_VERSION remove_banner_message(request) - return render(request, - 'navigation/terms_of_service.html', - dict(contents=contents)) + return render(request, "navigation/terms_of_service.html", dict(contents=contents)) -#------------------------------------------------ +# ------------------------------------------------ def legal_disclaimer(request): - '''Returns an HTML page with the Legal Disclaimeir to the user''' + """Returns an HTML page with the Legal Disclaimeir to the user""" - template = loader.get_template('navigation/legal_disclaimer.rst') + template = loader.get_template("navigation/legal_disclaimer.rst") contents = template.render() # if user is logged-in, make sure to udpate its agreement status @@ -68,21 +65,17 @@ def legal_disclaimer(request): request.user.agreement.save() else: # equivalent behavior for non-logged in users - request.session['beat_disclaimer_version'] = \ - settings.LEGAL_DISCLAIMER_VERSION + request.session["beat_disclaimer_version"] = settings.LEGAL_DISCLAIMER_VERSION remove_banner_message(request) - return render(request, - 'navigation/legal_disclaimer.html', - dict(contents=contents)) - + return render(request, "navigation/legal_disclaimer.html", dict(contents=contents)) -#------------------------------------------------ +# ------------------------------------------------ def contact(request): - '''Returns an HTML page with the contact information''' + """Returns an HTML page with the contact information""" - return render(request, 'navigation/contact.html') + return render(request, "navigation/contact.html")