Skip to content

Commit 8624096

Browse files
committed
updated
1 parent 8ff0a4a commit 8624096

File tree

5,672 files changed

+573696
-17
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

5,672 files changed

+573696
-17
lines changed

adventurers/adventurers/settings.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@
104104
# Internationalization
105105
# https://docs.djangoproject.com/en/1.11/topics/i18n/
106106

107-
LANGUAGE_CODE = 'en-us'
107+
LANGUAGE_CODE = 'zh-hant'
108108

109109
TIME_ZONE = 'Asia/Taipei'
110110

adventurers/db.sqlite3

0 Bytes
Binary file not shown.

adventurers/missionboard/forms.py

+44
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
from django import forms
2+
from django.contrib.auth.models import User
3+
from django.contrib.auth import authenticate
24

35

46
class RegisterForm(forms.Form):
@@ -33,6 +35,33 @@ class RegisterForm(forms.Form):
3335
'type': 'password'})
3436
)
3537

38+
def clean(self):
39+
username = self.cleaned_data['name']
40+
email = self.cleaned_data['email']
41+
password = self.cleaned_data['password']
42+
password2 = self.cleaned_data['password2']
43+
44+
try:
45+
u = User.objects.get(username=username)
46+
if u is not None:
47+
raise DuplicatedInfoException("duplicated usernames!")
48+
except DuplicatedInfoException:
49+
self.add_error('name', '使用者名稱已被使用')
50+
except User.DoesNotExist:
51+
pass
52+
53+
try:
54+
u = User.objects.get(email=email)
55+
if u is not None:
56+
raise DuplicatedInfoException("duplicated email!")
57+
except DuplicatedInfoException:
58+
self.add_error('email', 'Email已被使用')
59+
except User.DoesNotExist:
60+
pass
61+
62+
if password != password2:
63+
self.add_error('password2', '密碼不一致!')
64+
3665

3766
class SigninForm(forms.Form):
3867
name = forms.CharField(
@@ -49,3 +78,18 @@ class SigninForm(forms.Form):
4978
'placeholder': 'Password',
5079
'type': 'password'})
5180
)
81+
82+
def clean(self):
83+
username = self.cleaned_data['name']
84+
password = self.cleaned_data['password']
85+
86+
u = authenticate(username=username, password=password)
87+
if u is not None:
88+
if not u.is_active:
89+
self.add_error('name', '你的帳號已被停用!')
90+
else:
91+
self.add_error('password', '帳號或密碼錯誤!')
92+
93+
94+
class DuplicatedInfoException(Exception):
95+
pass

adventurers/missionboard/templates/index.html

+1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
{% block content %}
55
<div id="main">
6+
{% csrf_token %}
67
<div class="inner">
78
<header>
89
<h1>這是一個給新手練習的場地</h1>

adventurers/missionboard/templates/layout/header.html

+6-2
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,18 @@
22
<header id="header">
33
<div class="inner">
44

5-
<!-- Logo -->
5+
<!-- Logo -->
66
<a href="{% url 'missionboard_index' %}" class="logo">
7-
<span class="symbol"><img src="{% static "images/logo.svg" %}" alt="" /></span><span class="title">初心者公會</span>
7+
<span class="symbol"><img src="{% static "images/logo.svg" %}" alt="" /></span>
8+
<span class="title">初心者公會</span>
89
</a>
910

1011
<!-- Nav -->
1112
<nav>
1213
<ul>
14+
{% if u %}
15+
<li><strong>{{u.username}}</strong></li>
16+
{% endif %}
1317
<li><a href="#menu">Menu</a></li>
1418
</ul>
1519
</nav>

adventurers/missionboard/templates/layout/menu.html

+6-2
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,13 @@
22
<h2>Menu</h2>
33
<ul>
44
<li><a href={% url 'missionboard_index' %}>Home</a></li>
5-
<li><a href={% url 'missionboard_signin' %}>Sign in</a></li>
6-
<li><a href={% url 'missionboard_register' %}>Register</a></li>
75
<li><a href={% url 'missionboard_aboutus' %}>About us</a></li>
86
<li><a href={% url 'missionboard_donate' %}>Donate</a></li>
7+
{% if u %}
8+
<li><a href={% url 'missionboard_signout' %}>Sign out</a></li>
9+
{% else %}
10+
<li><a href={% url 'missionboard_signin' %}>Sign in</a></li>
11+
<li><a href={% url 'missionboard_register' %}>Register</a></li>
12+
{% endif %}
913
</ul>
1014
</nav>

adventurers/missionboard/templates/register.html

+9
Original file line numberDiff line numberDiff line change
@@ -10,15 +10,24 @@ <h1>Register</h1>
1010
{% csrf_token %}
1111
<div class="field ">
1212
{{form.name}}
13+
{% if form.name.errors %}
14+
<b style="color: red;">{{ form.name.errors }}</b>
15+
{% endif %}
1316
</div>
1417
<div class="field">
1518
{{form.email}}
19+
{% if form.email.errors %}
20+
<b style="color: red;">{{ form.email.errors }}</b>
21+
{% endif %}
1622
</div>
1723
<div class="field">
1824
{{form.password}}
1925
</div>
2026
<div class="field">
2127
{{form.password2}}
28+
{% if form.password2.errors %}
29+
<b style="color: red;">{{ form.password2.errors }}</b>
30+
{% endif %}
2231
</div>
2332
<ul class="actions">
2433
<li><input type="submit" value="Send" class="special" /></li>

adventurers/missionboard/templates/signin.html

+6
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,15 @@ <h1>Sign in</h1>
1010
{% csrf_token %}
1111
<div class="field ">
1212
{{form.name}}
13+
{% if form.name.errors %}
14+
<b style="color: red;">{{ form.name.errors }}</b>
15+
{% endif %}
1316
</div>
1417
<div class="field">
1518
{{form.password}}
19+
{% if form.password.errors %}
20+
<b style="color: red;">{{ form.password.errors }}</b>
21+
{% endif %}
1622
</div>
1723
<ul class="actions">
1824
<li><input type="submit" value="Send" class="special" /></li>

adventurers/missionboard/urls.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,10 @@
22
from .views import auth, pages
33

44
urlpatterns = [
5-
url(r'^$', pages.index, name='missionboard_index'),
65
url(r'^signin', auth.signin, name='missionboard_signin'),
6+
url(r'^signout', auth.signout, name='missionboard_signout'),
77
url(r'^register', auth.register, name='missionboard_register'),
88
url(r'^aboutus', pages.aboutus, name='missionboard_aboutus'),
99
url(r'^donate', pages.donate, name='missionboard_donate'),
10+
url(r'^$', pages.index, name='missionboard_index'),
1011
]
+28-10
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,48 @@
1-
from django.shortcuts import render
1+
from django.shortcuts import render, redirect
2+
from django.contrib.auth.models import User
3+
from django.contrib.auth.decorators import login_required
4+
from django.contrib.auth import authenticate, login, logout
25
from missionboard.forms import RegisterForm, SigninForm
36

4-
import random
5-
# from collections import namedtuple
6-
# nt_category = namedtuple('Category', 'name, description')
7-
87

98
def signin(request):
9+
if request.user.is_authenticated:
10+
return redirect('missionboard_index')
11+
1012
if request.method == 'GET':
1113
form = SigninForm()
1214
context = {'form': form}
1315
return render(request, 'signin.html', context)
1416
elif request.method == 'POST':
15-
return render(request, 'signin.html')
17+
form = SigninForm(request.POST)
18+
if form.is_valid():
19+
username = form.cleaned_data['name']
20+
password = form.cleaned_data['password']
21+
u = authenticate(request, username=username, password=password)
22+
login(request, u)
23+
return redirect('missionboard_index')
24+
else:
25+
return render(request, 'signin.html', {'form': form})
26+
27+
@login_required
28+
def signout(request):
29+
logout(request)
30+
return redirect('missionboard_index')
1631

1732

1833
def register(request):
1934
if request.method == 'GET':
2035
form = RegisterForm()
21-
context = {'form': form}
22-
23-
return render(request, 'register.html', context)
36+
return render(request, 'register.html', {'form': form})
2437

2538
elif request.method == 'POST':
2639
form = RegisterForm(request.POST)
2740
if form.is_valid():
28-
return render(request, 'register.html')
41+
username = form.cleaned_data['name']
42+
email = form.cleaned_data['email']
43+
password = form.cleaned_data['password']
44+
password2 = form.cleaned_data['password2']
45+
User.objects.create_user(username, email, password)
46+
return redirect('signin.html')
2947
else:
3048
return render(request, 'register.html', {'form': form})

adventurers/missionboard/views/pages.py

+4-1
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,10 @@ def index(request):
1313
c.style = 'style%s' % str(random.randrange(1, 6))
1414
c.img = 'images/pic%s.jpg' % str(random.randrange(1, 13)).zfill(2)
1515

16-
context = {'categories': categories}
16+
if request.user.is_authenticated:
17+
context = {'u':request.user, 'categories': categories}
18+
else:
19+
context = {'categories':categories}
1720
return render(request, 'index.html', context)
1821

1922
def aboutus(request):
279 Bytes
Binary file not shown.

env/bin/activate

+78
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
# This file must be used with "source bin/activate" *from bash*
2+
# you cannot run it directly
3+
4+
deactivate () {
5+
unset -f pydoc >/dev/null 2>&1
6+
7+
# reset old environment variables
8+
# ! [ -z ${VAR+_} ] returns true if VAR is declared at all
9+
if ! [ -z "${_OLD_VIRTUAL_PATH+_}" ] ; then
10+
PATH="$_OLD_VIRTUAL_PATH"
11+
export PATH
12+
unset _OLD_VIRTUAL_PATH
13+
fi
14+
if ! [ -z "${_OLD_VIRTUAL_PYTHONHOME+_}" ] ; then
15+
PYTHONHOME="$_OLD_VIRTUAL_PYTHONHOME"
16+
export PYTHONHOME
17+
unset _OLD_VIRTUAL_PYTHONHOME
18+
fi
19+
20+
# This should detect bash and zsh, which have a hash command that must
21+
# be called to get it to forget past commands. Without forgetting
22+
# past commands the $PATH changes we made may not be respected
23+
if [ -n "${BASH-}" ] || [ -n "${ZSH_VERSION-}" ] ; then
24+
hash -r 2>/dev/null
25+
fi
26+
27+
if ! [ -z "${_OLD_VIRTUAL_PS1+_}" ] ; then
28+
PS1="$_OLD_VIRTUAL_PS1"
29+
export PS1
30+
unset _OLD_VIRTUAL_PS1
31+
fi
32+
33+
unset VIRTUAL_ENV
34+
if [ ! "${1-}" = "nondestructive" ] ; then
35+
# Self destruct!
36+
unset -f deactivate
37+
fi
38+
}
39+
40+
# unset irrelevant variables
41+
deactivate nondestructive
42+
43+
VIRTUAL_ENV="/mnt/d/Users/eason.tse/Documents/Codes/106-team11/env"
44+
export VIRTUAL_ENV
45+
46+
_OLD_VIRTUAL_PATH="$PATH"
47+
PATH="$VIRTUAL_ENV/bin:$PATH"
48+
export PATH
49+
50+
# unset PYTHONHOME if set
51+
if ! [ -z "${PYTHONHOME+_}" ] ; then
52+
_OLD_VIRTUAL_PYTHONHOME="$PYTHONHOME"
53+
unset PYTHONHOME
54+
fi
55+
56+
if [ -z "${VIRTUAL_ENV_DISABLE_PROMPT-}" ] ; then
57+
_OLD_VIRTUAL_PS1="$PS1"
58+
if [ "x" != x ] ; then
59+
PS1="$PS1"
60+
else
61+
PS1="(`basename \"$VIRTUAL_ENV\"`) $PS1"
62+
fi
63+
export PS1
64+
fi
65+
66+
# Make sure to unalias pydoc if it's already there
67+
alias pydoc 2>/dev/null >/dev/null && unalias pydoc
68+
69+
pydoc () {
70+
python -m pydoc "$@"
71+
}
72+
73+
# This should detect bash and zsh, which have a hash command that must
74+
# be called to get it to forget past commands. Without forgetting
75+
# past commands the $PATH changes we made may not be respected
76+
if [ -n "${BASH-}" ] || [ -n "${ZSH_VERSION-}" ] ; then
77+
hash -r 2>/dev/null
78+
fi

env/bin/activate.csh

+36
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
# This file must be used with "source bin/activate.csh" *from csh*.
2+
# You cannot run it directly.
3+
# Created by Davide Di Blasi <[email protected]>.
4+
5+
alias deactivate 'test $?_OLD_VIRTUAL_PATH != 0 && setenv PATH "$_OLD_VIRTUAL_PATH" && unset _OLD_VIRTUAL_PATH; rehash; test $?_OLD_VIRTUAL_PROMPT != 0 && set prompt="$_OLD_VIRTUAL_PROMPT" && unset _OLD_VIRTUAL_PROMPT; unsetenv VIRTUAL_ENV; test "\!:*" != "nondestructive" && unalias deactivate && unalias pydoc'
6+
7+
# Unset irrelevant variables.
8+
deactivate nondestructive
9+
10+
setenv VIRTUAL_ENV "/mnt/d/Users/eason.tse/Documents/Codes/106-team11/env"
11+
12+
set _OLD_VIRTUAL_PATH="$PATH"
13+
setenv PATH "$VIRTUAL_ENV/bin:$PATH"
14+
15+
16+
17+
if ("" != "") then
18+
set env_name = ""
19+
else
20+
set env_name = `basename "$VIRTUAL_ENV"`
21+
endif
22+
23+
# Could be in a non-interactive environment,
24+
# in which case, $prompt is undefined and we wouldn't
25+
# care about the prompt anyway.
26+
if ( $?prompt ) then
27+
set _OLD_VIRTUAL_PROMPT="$prompt"
28+
set prompt = "[$env_name] $prompt"
29+
endif
30+
31+
unset env_name
32+
33+
alias pydoc python -m pydoc
34+
35+
rehash
36+

0 commit comments

Comments
 (0)