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/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/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 %}