Spline work on some URLs and views
- Author
- Maarten 'Vngngdn' Vangeneugden
- Date
- Jan. 29, 2018, 1:25 a.m.
- Hash
- 141c227a80e2994519c0d87bf17fd69cad9d47e7
- Parent
- b8e9de04855e787d25bdd347f29c3217a170a0bc
- Modified files
- administration/urls.py
- administration/views.py
- static/css/base.css
administration/urls.py ¶
1 addition and 0 deletions.
View changes Hide changes
1 |
1 |
from django.contrib.auth import views as auth_views |
2 |
2 |
from . import views |
3 |
3 |
from django.utils.translation import gettext_lazy as _ |
4 |
4 |
|
5 |
5 |
urlpatterns = ([ |
6 |
6 |
path('', views.index, name='administration-index'), |
7 |
7 |
path(_('pre-registration'), views.pre_registration, name='administration-pre-registration'), |
8 |
8 |
path(_('settings'), views.settings, name='administration-settings'), |
9 |
9 |
path(_('curriculum'), views.curriculum, name='administration-curriculum'), |
10 |
10 |
path(_('results'), views.results, name='administration-results'), |
11 |
11 |
path(_('results/<slug:course>'), views.result, name='administration-results'), |
12 |
12 |
path(_('results/<int:student_id>'), views.result, name='administration-results'), |
13 |
13 |
path(_('forms'), views.forms, name='administration-forms'), # In Dutch: "Attesten" |
14 |
14 |
path(_('forms/<str:form>'), views.forms, name='administration-forms'), |
15 |
15 |
path(_('rooms'), views.rooms, name='administration-rooms'), |
16 |
16 |
path(_('rooms/<str:room>'), views.rooms, name='administration-rooms'), |
17 |
17 |
path(_('rooms/reservate'), views.room_reservate, name='administration-room-reservate'), |
18 |
18 |
path(_('roster'), views.roster, name='administration-roster'), |
19 |
19 |
|
+ |
20 |
|
20 |
21 |
path('login', views.login, name='administration-login'), |
21 |
22 |
]) |
22 |
23 |
administration/views.py ¶
6 additions and 0 deletions.
View changes Hide changes
1 |
1 |
import datetime |
2 |
2 |
from django.urls import reverse # Why? |
3 |
3 |
from django.utils.translation import gettext as _ |
4 |
4 |
from .models import * |
5 |
5 |
from .forms import UserDataForm |
6 |
6 |
import administration |
7 |
7 |
from django.contrib.auth.decorators import login_required |
8 |
8 |
|
9 |
9 |
@login_required |
10 |
10 |
def roster(request, begin=None, end=None): |
11 |
11 |
"""Collects and renders the data that has to be displayed in the roster. |
12 |
12 |
|
13 |
13 |
The begin and end date can be specified. Only roster points in that range |
14 |
14 |
will be included in the response. If no begin and end are specified, it will |
15 |
15 |
take the current week as begin and end point. If it's |
16 |
16 |
weekend, it will take next week.""" |
17 |
17 |
|
18 |
18 |
template = "administration/roster.djhtml" |
19 |
19 |
|
20 |
20 |
if begin is None or end is None: |
21 |
21 |
today = datetime.date.today() |
22 |
22 |
if today.isoweekday() in {6,7}: # Weekend |
23 |
23 |
begin = today + datetime.timedelta(days=8-today.isoweekday()) |
24 |
24 |
end = today + datetime.timedelta(days=13-today.isoweekday()) |
25 |
25 |
else: # Same week |
26 |
26 |
begin = today - datetime.timedelta(days=today.weekday()) |
27 |
27 |
end = today + datetime.timedelta(days=5-today.isoweekday()) |
28 |
28 |
|
29 |
29 |
|
30 |
30 |
return render(request, template, context) |
31 |
31 |
# TODO Finish! |
32 |
32 |
|
33 |
33 |
def index(request): |
34 |
34 |
template = "administration/index.djhtml" |
35 |
35 |
context = {} |
36 |
36 |
return render(request, template, context) |
37 |
37 |
|
38 |
38 |
pass |
39 |
39 |
|
40 |
40 |
def pre_registration(request): |
41 |
41 |
user_data_form = UserDataForm() |
42 |
42 |
template = "administration/pre_registration.djhtml" |
43 |
43 |
context = dict() |
44 |
44 |
|
45 |
45 |
if request.method == 'POST': |
46 |
46 |
user_data_form = UserDataForm(request.POST) |
47 |
47 |
context['user_data_form'] = user_data_form |
48 |
48 |
if user_data_form.is_valid(): |
49 |
49 |
user_data_form.save() |
50 |
50 |
context['messsage'] = _("Your registration has been completed. You will receive an e-mail shortly.") |
51 |
51 |
else: |
52 |
52 |
context['messsage'] = _("The data you supplied had errors. Please review your submission.") |
53 |
53 |
else: |
54 |
54 |
context['user_data_form'] = UserDataForm(instance = user_data) |
55 |
55 |
|
56 |
56 |
return render(request, template, context) |
57 |
57 |
pass |
58 |
58 |
|
59 |
59 |
@login_required |
60 |
60 |
def settings(request): |
61 |
61 |
user_data = UserData.objects.get(user=request.user) |
62 |
62 |
user_data_form = UserDataForm(instance = user_data) |
63 |
63 |
template = "administration/settings.djhtml" |
64 |
64 |
context = dict() |
65 |
65 |
|
66 |
66 |
if request.method == 'POST': |
67 |
67 |
user_data_form = UserDataForm(request.POST, instance = user_data) |
68 |
68 |
context['user_data_form'] = user_data_form |
69 |
69 |
if user_data_form.is_valid(): |
70 |
70 |
user_data_form.save() |
71 |
71 |
context['messsage'] = _("Your settings were successfully updated.") |
72 |
72 |
else: |
73 |
73 |
context['messsage'] = _("The data you supplied had errors. Please review your submission.") |
74 |
74 |
else: |
75 |
75 |
context['user_data_form'] = UserDataForm(instance = user_data) |
76 |
76 |
|
77 |
77 |
return render(request, template, context) |
78 |
78 |
|
79 |
79 |
@login_required |
80 |
80 |
def exam_commission_decisions(request): |
81 |
81 |
context = dict() |
82 |
82 |
context['decisions'] = ExamCommissionDecision.objects.filter(user=request.user) |
83 |
83 |
template = "administration/exam_commission.djhtml" |
84 |
84 |
return render(request, template, context) |
85 |
85 |
|
86 |
86 |
|
+ |
87 |
context = dict() |
+ |
88 |
template = "administration/jobs.djhtml" |
+ |
89 |
context['decisions'] = ExamCommissionDecision.objects.filter(user=request.user) |
+ |
90 |
return render(request, template, context) |
+ |
91 |
|
+ |
92 |
|
87 |
93 |
def curriculum(request): |
88 |
94 |
return render(request, template, context) |
89 |
95 |
|
90 |
96 |
def result(request): |
91 |
97 |
return render(request, template, context) |
92 |
98 |
|
93 |
99 |
@login_required |
94 |
100 |
def results(request): |
95 |
101 |
results = CourseResult.objects.filter(student=request.user) |
96 |
102 |
template = "administration/results.djhtml" |
97 |
103 |
# TODO |
98 |
104 |
return render(request, template, context) |
99 |
105 |
|
100 |
106 |
def forms(request): |
101 |
107 |
return render(request, template, context) |
102 |
108 |
|
103 |
109 |
def rooms(request): |
104 |
110 |
template = "administration/rooms.djhtml" |
105 |
111 |
return render(request, template, context) |
106 |
112 |
|
107 |
113 |
def room_reservate(request): |
108 |
114 |
return render(request, template, context) |
109 |
115 |
|
110 |
116 |
def login(request): |
111 |
117 |
if request.method == "POST": |
112 |
118 |
name = request.POST['name'] |
113 |
119 |
passphrase = request.POST['password'] |
114 |
120 |
user = authenticate(username=name, password=passphrase) |
115 |
121 |
if user is not None: # The user was successfully authenticated. |
116 |
122 |
login(request, user) |
117 |
123 |
# Because of Leen, I now track when and where is logged in: |
118 |
124 |
loginRecord = Login() |
119 |
125 |
loginRecord.ip = request.META['REMOTE_ADDR'] |
120 |
126 |
loginRecord.name = name |
121 |
127 |
loginRecord.save() |
122 |
128 |
return HttpResponseRedirect(reverse('ITdays-index')) |
123 |
129 |
|
124 |
130 |
template = 'administration/login.djhtml' |
125 |
131 |
|
126 |
132 |
footer_links = [ |
127 |
133 |
["Home", "/"], |
128 |
134 |
["Contact", "mailto:maarten.vangeneugden@student.uhasselt.be"], |
129 |
135 |
] |
130 |
136 |
|
131 |
137 |
context = { |
132 |
138 |
'materialDesign_color': "deep-purple", |
133 |
139 |
'materialDesign_accentColor': "amber", |
134 |
140 |
'navbar_title': "Authentication", |
135 |
141 |
'navbar_fixed': True, |
136 |
142 |
'navbar_backArrow': True, |
137 |
143 |
'footer_title': "Quotebook", |
138 |
144 |
'footer_description': "Een lijst van citaten uit 2BACH Informatica @ UHasselt.", |
139 |
145 |
'footer_links': footer_links, |
140 |
146 |
} |
141 |
147 |
return render(request, template, context) |
142 |
148 |
static/css/base.css ¶
16 additions and 0 deletions.
View changes Hide changes
1 |
1 |
font-family: Verdana, Futura, Arial, sans-serif; |
2 |
2 |
background-color: #dedede; |
3 |
3 |
} |
4 |
4 |
|
+ |
5 |
a.btn { |
+ |
6 |
border-style: solid; |
+ |
7 |
text-transform: uppercase; |
+ |
8 |
border-size: 3em; |
+ |
9 |
border-color: blue; |
+ |
10 |
padding: 0.5em; |
+ |
11 |
text-decoration: none; |
+ |
12 |
color: blue; |
+ |
13 |
font-weight: bold; |
+ |
14 |
} |
+ |
15 |
a.btn:hover { |
+ |
16 |
background-color: blue; |
+ |
17 |
color: white; |
+ |
18 |
} |
+ |
19 |
|
+ |
20 |