From dfcb1a234f0bc90b5f0f35511b0f94c9c74a6f06 Mon Sep 17 00:00:00 2001 From: Pavel 'LEdoian' Turinsky Date: Tue, 9 Nov 2021 19:29:40 +0100 Subject: [PATCH] =?UTF-8?q?Nov=C3=A1=20aplikace:=20'Fakt=20Ale=20Nebude?= =?UTF-8?q?=C5=A1=20Interagovat=20K=C3=A1mo'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Jo, určitě to to znamená… Anyway, je to při troše štěstí elementární ukázka, jak se píše a používá middleware. Ne že by na tom bylo něco objevného… TODO: Aktuálně se nejde odhlásit, takže má člověk smůlu. Asi bych to neměl považovat za featuru, ale aktuálně si tím nejsem moc jistý. Pokud se to nenasadí na produkci, tak to nikomu vadit asi nebude… --- fanik/__init__.py | 0 fanik/admin.py | 3 +++ fanik/apps.py | 5 +++++ fanik/middleware.py | 31 +++++++++++++++++++++++++++++++ fanik/migrations/__init__.py | 0 fanik/models.py | 3 +++ fanik/tests.py | 3 +++ fanik/views.py | 3 +++ mamweb/settings_common.py | 1 + 9 files changed, 49 insertions(+) create mode 100644 fanik/__init__.py create mode 100644 fanik/admin.py create mode 100644 fanik/apps.py create mode 100644 fanik/middleware.py create mode 100644 fanik/migrations/__init__.py create mode 100644 fanik/models.py create mode 100644 fanik/tests.py create mode 100644 fanik/views.py diff --git a/fanik/__init__.py b/fanik/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/fanik/admin.py b/fanik/admin.py new file mode 100644 index 00000000..8c38f3f3 --- /dev/null +++ b/fanik/admin.py @@ -0,0 +1,3 @@ +from django.contrib import admin + +# Register your models here. diff --git a/fanik/apps.py b/fanik/apps.py new file mode 100644 index 00000000..1ddc3fc1 --- /dev/null +++ b/fanik/apps.py @@ -0,0 +1,5 @@ +from django.apps import AppConfig + + +class FanikConfig(AppConfig): + name = 'fanik' diff --git a/fanik/middleware.py b/fanik/middleware.py new file mode 100644 index 00000000..cf819ef9 --- /dev/null +++ b/fanik/middleware.py @@ -0,0 +1,31 @@ +from random import choices +from django.shortcuts import render + +def fanik_middleware(get_response): + # Mapování uživatelských jmen na blbý kecy (+ váhy), obsah odkazu ap. + config = { + 'fanik': { + 'kecy': [ + (r'

Co je web?

– 8. 11. 2021

', 10), + (r'

Mě to nezajímá.

– 8. 11. 2021

', 5), + ], + 'link': r'Svůj postoj jsem přehodnotil', + }, + } + + def middleware(request): + if request.user.is_authenticated: + username = request.user.username + if username in config: + kecy = config[username]['kecy'] + vahy = [x[1] for x in kecy] + kec = choices([x[0] for x in kecy], weights=vahy, k=1)[0] + template_name = 'universal.html' + context = {} + context['raw_html'] = kec + config[username]['link'] + return render(request,template_name,context) + + # Ve všech ostatních případech vrátíme výsledek původního dotazu + return get_response(request) + + return middleware diff --git a/fanik/migrations/__init__.py b/fanik/migrations/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/fanik/models.py b/fanik/models.py new file mode 100644 index 00000000..71a83623 --- /dev/null +++ b/fanik/models.py @@ -0,0 +1,3 @@ +from django.db import models + +# Create your models here. diff --git a/fanik/tests.py b/fanik/tests.py new file mode 100644 index 00000000..7ce503c2 --- /dev/null +++ b/fanik/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/fanik/views.py b/fanik/views.py new file mode 100644 index 00000000..91ea44a2 --- /dev/null +++ b/fanik/views.py @@ -0,0 +1,3 @@ +from django.shortcuts import render + +# Create your views here. diff --git a/mamweb/settings_common.py b/mamweb/settings_common.py index 3c850245..b8b1dcc6 100644 --- a/mamweb/settings_common.py +++ b/mamweb/settings_common.py @@ -65,6 +65,7 @@ MIDDLEWARE = ( 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', 'django.contrib.flatpages.middleware.FlatpageFallbackMiddleware', + 'fanik.middleware.fanik_middleware', ) TEMPLATES = [