From af945dd1755aef2933608ac24658742d48de3ee6 Mon Sep 17 00:00:00 2001 From: Thomas Date: Thu, 11 Feb 2016 23:13:57 +0100 Subject: [PATCH 1/2] update requirements & urlsconfs to run wth python 3.5.1 and django 1.9.2 --- rodolphe/rodolphe/urls.py | 27 ++++++++++++++------------- stable-req.txt | 8 ++++---- 2 files changed, 18 insertions(+), 17 deletions(-) diff --git a/rodolphe/rodolphe/urls.py b/rodolphe/rodolphe/urls.py index c990035..90872de 100644 --- a/rodolphe/rodolphe/urls.py +++ b/rodolphe/rodolphe/urls.py @@ -2,29 +2,30 @@ from django.conf import settings from django.conf.urls.static import static from django.views.generic.base import TemplateView +from main.views import paging, thread, post, tag, search, about from django.contrib import admin admin.autodiscover() urlpatterns = patterns('', - url(r'^$', 'main.views.paging.page'), + url(r'^$', paging.page, name="home"), - url(r'^view/(?P\d+)$', 'main.views.thread.view'), - url(r'^new$', 'main.views.thread.new'), + url(r'^view/(?P\d+)$', thread.view, name="view"), + url(r'^new$', thread.new), - url(r'^raw/(?P\d+)$', 'main.views.post.raw'), - url(r'^edit/(?P\d+)$', 'main.views.post.edit'), - url(r'^del/(?P\d+)$', 'main.views.post.delete'), - url(r'^h/(?P\d+)$', 'main.views.post.history'), + url(r'^raw/(?P\d+)$', post.raw, name="raw"), + url(r'^edit/(?P\d+)$', post.edit, name="edit"), + url(r'^del/(?P\d+)$', post.delete, name="delete"), + url(r'^h/(?P\d+)$', post.history, name="history"), - url(r'^tags$', 'main.views.tag.index'), - url(r'^tag/(?P(~?\w+)(\|~?\w+)*)$', 'main.views.tag.search'), + url(r'^tags$', tag.index), + url(r'^tag/(?P(~?\w+)(\|~?\w+)*)$', tag.search, name="search_tag"), - url(r'^search$', 'main.views.search.search'), + url(r'^search$', search.search, name="search"), - url(r'^about$', 'main.views.about.about'), - url(r'^markdown$', 'main.views.about.markdown'), - url(r'^render$', 'main.views.about.render'), + url(r'^about$', about.about, name="about"), + url(r'^markdown$', about.markdown, name="about"), + url(r'^render$', about.render), url(r'^admin/', include(admin.site.urls)), url(r'^captcha/', include('captcha.urls')), diff --git a/stable-req.txt b/stable-req.txt index 0a2b814..02c6ead 100644 --- a/stable-req.txt +++ b/stable-req.txt @@ -1,7 +1,7 @@ -Django==1.6.1 +Django==1.9.2 Markdown==2.3.1 Pillow==2.3.0 -django-bootstrap3==4.7.0 -django-simple-captcha==0.4.1 +django-bootstrap3 +django-simple-captcha fake-factory==0.3.2 -six==1.5.2 +six From 65ec26ed91f3566cced901ed6f6636aabf6c2d76 Mon Sep 17 00:00:00 2001 From: Thomas Date: Thu, 11 Feb 2016 22:59:30 +0100 Subject: [PATCH 2/2] add authentication stuff: decorator, template, and decorated views --- rodolphe/main/views/decorators.py | 19 +++++++++++++ rodolphe/main/views/paging.py | 2 ++ rodolphe/main/views/post.py | 5 ++++ rodolphe/main/views/search.py | 3 ++- rodolphe/main/views/tag.py | 2 ++ rodolphe/main/views/thread.py | 3 +++ rodolphe/rodolphe/settings.py | 3 +++ rodolphe/templates/auth.html | 45 +++++++++++++++++++++++++++++++ rodolphe/templates/base.html | 2 +- 9 files changed, 82 insertions(+), 2 deletions(-) create mode 100644 rodolphe/main/views/decorators.py create mode 100644 rodolphe/templates/auth.html diff --git a/rodolphe/main/views/decorators.py b/rodolphe/main/views/decorators.py new file mode 100644 index 0000000..8fcca82 --- /dev/null +++ b/rodolphe/main/views/decorators.py @@ -0,0 +1,19 @@ +from django.shortcuts import render_to_response +from django.conf import settings +from functools import wraps + + +def lock_view(request, *args, **kwargs): + return render_to_response('auth.html', {}) + +def vospapiers(f): + @wraps(f) + def petit_wrap(request, *args, **kwargs): + if settings.PASSWORD: + if settings.PASSWORD in request.get_raw_uri(): + request.session["allowed"] = True + if not request.session.get("allowed", False): + return lock_view(request, *args, **kwargs) + return f(request, *args, **kwargs) + + return petit_wrap diff --git a/rodolphe/main/views/paging.py b/rodolphe/main/views/paging.py index bfd7f03..06003c8 100644 --- a/rodolphe/main/views/paging.py +++ b/rodolphe/main/views/paging.py @@ -4,8 +4,10 @@ from main.models import Post from main.forms import PostForm +from main.views.decorators import vospapiers +@vospapiers def page(request): paginator = Paginator(Post.objects.filter(active=True, parent=None) .order_by('-last_resp_at'), 10) diff --git a/rodolphe/main/views/post.py b/rodolphe/main/views/post.py index 08e8d94..dec49e3 100644 --- a/rodolphe/main/views/post.py +++ b/rodolphe/main/views/post.py @@ -7,10 +7,12 @@ from main.forms import PostForm, DeletePostForm from main.views.thread import view from main.views.paging import page as home +from main.views.decorators import vospapiers import json +@vospapiers def raw(request, post_id): post = get_object_or_404(Post, id=int(post_id), active=True) infos = { @@ -26,6 +28,7 @@ def raw(request, post_id): return HttpResponse(json.dumps(infos)) +@vospapiers def edit(request, post_id): post = get_object_or_404(Post, id=int(post_id), active=True) if request.method == 'POST': @@ -49,6 +52,7 @@ def edit(request, post_id): return render_to_response('edit.html', context) +@vospapiers def delete(request, post_id): post = get_object_or_404(Post, id=int(post_id), active=True) if request.method == 'POST': @@ -71,6 +75,7 @@ def delete(request, post_id): return render_to_response('delete.html', context) +@vospapiers def history(request, post_id): post = get_object_or_404(Post, id=int(post_id), active=True) hist = [post] diff --git a/rodolphe/main/views/search.py b/rodolphe/main/views/search.py index a745b70..9ce1b1f 100644 --- a/rodolphe/main/views/search.py +++ b/rodolphe/main/views/search.py @@ -6,8 +6,9 @@ from main.models import Post from main.forms import PostForm from utils.search import get_search +from main.views.decorators import vospapiers - +@vospapiers def search(request): q, search = get_search(request) paginator = Paginator(Post.objects.filter(q, active=True) diff --git a/rodolphe/main/views/tag.py b/rodolphe/main/views/tag.py index dab95ba..40164c5 100644 --- a/rodolphe/main/views/tag.py +++ b/rodolphe/main/views/tag.py @@ -8,12 +8,14 @@ from main.forms import PostForm from utils.search import get_search from utils.tags import TagsSet +from main.views.decorators import vospapiers import re from collections import defaultdict from urllib.parse import urlencode +@vospapiers def index(request): indexed_tags = defaultdict(list) for tag in Tag.objects.all(): diff --git a/rodolphe/main/views/thread.py b/rodolphe/main/views/thread.py index 13dda06..5d1b5cf 100644 --- a/rodolphe/main/views/thread.py +++ b/rodolphe/main/views/thread.py @@ -3,8 +3,10 @@ from main.models import Post from main.forms import PostForm +from main.views.decorators import vospapiers +@vospapiers def view(request, post_id): post = get_object_or_404(Post, id=int(post_id), active=True, parent=None) if request.method == 'POST': @@ -24,6 +26,7 @@ def view(request, post_id): return render_to_response('view.html', context) +@vospapiers def new(request): if request.method == 'POST': form = PostForm(request.POST, request.FILES, instance=Post.default()) diff --git a/rodolphe/rodolphe/settings.py b/rodolphe/rodolphe/settings.py index 7a3bf82..d365597 100644 --- a/rodolphe/rodolphe/settings.py +++ b/rodolphe/rodolphe/settings.py @@ -93,6 +93,9 @@ TEMPLATE_DIRS = (os.path.join(BASE_DIR, 'templates'),) +# PASSWORD allow to authenticate users with digit based password. +# No effect if PASSWORD is falsy. +PASSWORD = "0123" # Local settings diff --git a/rodolphe/templates/auth.html b/rodolphe/templates/auth.html new file mode 100644 index 0000000..7539bba --- /dev/null +++ b/rodolphe/templates/auth.html @@ -0,0 +1,45 @@ + + + + + + +
+ +
+ +
+ + + +
+ + + +
+ + + +
+ +
+ + + + + diff --git a/rodolphe/templates/base.html b/rodolphe/templates/base.html index 1d56179..d3c2049 100644 --- a/rodolphe/templates/base.html +++ b/rodolphe/templates/base.html @@ -14,7 +14,7 @@

{{SITE_NAME}} {% # pagetitle %}