Skip to content

Commit 65ec26e

Browse files
committed
add authentication stuff: decorator, template, and decorated views
1 parent af945dd commit 65ec26e

File tree

9 files changed

+82
-2
lines changed

9 files changed

+82
-2
lines changed

rodolphe/main/views/decorators.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
from django.shortcuts import render_to_response
2+
from django.conf import settings
3+
from functools import wraps
4+
5+
6+
def lock_view(request, *args, **kwargs):
7+
return render_to_response('auth.html', {})
8+
9+
def vospapiers(f):
10+
@wraps(f)
11+
def petit_wrap(request, *args, **kwargs):
12+
if settings.PASSWORD:
13+
if settings.PASSWORD in request.get_raw_uri():
14+
request.session["allowed"] = True
15+
if not request.session.get("allowed", False):
16+
return lock_view(request, *args, **kwargs)
17+
return f(request, *args, **kwargs)
18+
19+
return petit_wrap

rodolphe/main/views/paging.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,10 @@
44

55
from main.models import Post
66
from main.forms import PostForm
7+
from main.views.decorators import vospapiers
78

89

10+
@vospapiers
911
def page(request):
1012
paginator = Paginator(Post.objects.filter(active=True, parent=None)
1113
.order_by('-last_resp_at'), 10)

rodolphe/main/views/post.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,12 @@
77
from main.forms import PostForm, DeletePostForm
88
from main.views.thread import view
99
from main.views.paging import page as home
10+
from main.views.decorators import vospapiers
1011

1112
import json
1213

1314

15+
@vospapiers
1416
def raw(request, post_id):
1517
post = get_object_or_404(Post, id=int(post_id), active=True)
1618
infos = {
@@ -26,6 +28,7 @@ def raw(request, post_id):
2628
return HttpResponse(json.dumps(infos))
2729

2830

31+
@vospapiers
2932
def edit(request, post_id):
3033
post = get_object_or_404(Post, id=int(post_id), active=True)
3134
if request.method == 'POST':
@@ -49,6 +52,7 @@ def edit(request, post_id):
4952
return render_to_response('edit.html', context)
5053

5154

55+
@vospapiers
5256
def delete(request, post_id):
5357
post = get_object_or_404(Post, id=int(post_id), active=True)
5458
if request.method == 'POST':
@@ -71,6 +75,7 @@ def delete(request, post_id):
7175
return render_to_response('delete.html', context)
7276

7377

78+
@vospapiers
7479
def history(request, post_id):
7580
post = get_object_or_404(Post, id=int(post_id), active=True)
7681
hist = [post]

rodolphe/main/views/search.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,9 @@
66
from main.models import Post
77
from main.forms import PostForm
88
from utils.search import get_search
9+
from main.views.decorators import vospapiers
910

10-
11+
@vospapiers
1112
def search(request):
1213
q, search = get_search(request)
1314
paginator = Paginator(Post.objects.filter(q, active=True)

rodolphe/main/views/tag.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,14 @@
88
from main.forms import PostForm
99
from utils.search import get_search
1010
from utils.tags import TagsSet
11+
from main.views.decorators import vospapiers
1112

1213
import re
1314
from collections import defaultdict
1415
from urllib.parse import urlencode
1516

1617

18+
@vospapiers
1719
def index(request):
1820
indexed_tags = defaultdict(list)
1921
for tag in Tag.objects.all():

rodolphe/main/views/thread.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,10 @@
33

44
from main.models import Post
55
from main.forms import PostForm
6+
from main.views.decorators import vospapiers
67

78

9+
@vospapiers
810
def view(request, post_id):
911
post = get_object_or_404(Post, id=int(post_id), active=True, parent=None)
1012
if request.method == 'POST':
@@ -24,6 +26,7 @@ def view(request, post_id):
2426
return render_to_response('view.html', context)
2527

2628

29+
@vospapiers
2730
def new(request):
2831
if request.method == 'POST':
2932
form = PostForm(request.POST, request.FILES, instance=Post.default())

rodolphe/rodolphe/settings.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,9 @@
9393

9494
TEMPLATE_DIRS = (os.path.join(BASE_DIR, 'templates'),)
9595

96+
# PASSWORD allow to authenticate users with digit based password.
97+
# No effect if PASSWORD is falsy.
98+
PASSWORD = "0123"
9699

97100
# Local settings
98101

rodolphe/templates/auth.html

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
<html>
2+
<head>
3+
<style>
4+
form {
5+
text-align: center;
6+
}
7+
button {
8+
width: 100px;
9+
height: 100px;
10+
font-size: 5em;
11+
margin: 10px;
12+
}
13+
</style>
14+
<script>
15+
function compose(e) {
16+
num = e.target.innerHTML;
17+
document.getElementById("number").value += num;
18+
}
19+
</script>
20+
</head>
21+
<body>
22+
<form action="">
23+
<input id="number" name="number" type="text" />
24+
<br/>
25+
<button id="box">&#9990;</button>
26+
<br />
27+
<button onclick="compose(event); return false;">1</button>
28+
<button onclick="compose(event); return false;">2</button>
29+
<button onclick="compose(event); return false;">3</button>
30+
<br />
31+
<button onclick="compose(event); return false;">4</button>
32+
<button onclick="compose(event); return false;">5</button>
33+
<button onclick="compose(event); return false;">6</button>
34+
<br />
35+
<button onclick="compose(event); return false;">7</button>
36+
<button onclick="compose(event); return false;">8</button>
37+
<button onclick="compose(event); return false;">9</button>
38+
<br/>
39+
<button onclick="compose(event); return false;">0</button>
40+
</form>
41+
42+
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.0.0-beta1/jquery.min.js"></script>
43+
</body>
44+
</html>
45+

rodolphe/templates/base.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ <h1>{{SITE_NAME}} <small>{% # pagetitle %}</small></h1>
1414

1515
<nav class="navbar" role="navigation">
1616
<ul class="nav navbar-nav">
17-
<li><a href="{% url 'main.views.home' %}">{% bootstrap_icon "home" %} {% trans "home" %}</a></li>
17+
<li><a href="{% url 'home' %}">{% bootstrap_icon "home" %} {% trans "home" %}</a></li>
1818
<li><a href="{% url 'main.views.thread.new' %}">{% bootstrap_icon "plus" %} {% trans "participate" %}</a></li>
1919
<li><a href="{% url 'main.views.about.about' %}">{% bootstrap_icon "info-sign" %} {% trans "about" %}</a></li>
2020
<li><a href="{% url 'main.views.tag.index' %}">{% bootstrap_icon "tag" %} {% trans "tags" %}</a></li>

0 commit comments

Comments
 (0)