Compare commits

..

278 Commits

Author SHA1 Message Date
70671adac8 Cookie bugfix, removed 'session' string from expiry/age 2021-12-08 11:26:18 +00:00
6be20568a8 Debug form error handlers 2021-12-07 16:17:59 +00:00
7ff786c6e2 Named image 2021-12-07 16:03:56 +00:00
f5061c9ec1 Bug fix and data persistence 2021-12-07 15:52:58 +00:00
ad33251e9d Bugfix: security key location 2021-12-07 15:25:22 +00:00
df33b3889a Bugfix: encryption lockout 2021-12-07 15:15:16 +00:00
37b8b3e0a1 Bug fix: evaluating question 97 2021-12-07 15:03:21 +00:00
5878001862 Merge 2021-12-07 13:37:12 +00:00
05740d5aa5 Merge branch 'master' of https://git.vsnt.uk/viveksantayana/ska-referee-test 2021-12-07 13:34:02 +00:00
7c1370e95c Typo 2021-12-07 13:33:31 +00:00
96d8e48f3a Some more minor fixes to containerising and ignore 2021-12-07 13:29:25 +00:00
bab3674d31 Re-wrote compose and conf removing personal info 2021-12-07 13:26:24 +00:00
32d6268c95 Finesse log in form css 2021-12-07 12:39:29 +00:00
4f79ca6ec4 Finesse log in form css 2021-12-07 12:39:29 +00:00
9088e35157 Finessed remaining block question counter 2021-12-07 12:27:06 +00:00
8c9f0ef5b3 Finessed remaining block question counter 2021-12-07 12:27:06 +00:00
206f50b775 Correcting an error 2021-12-07 07:24:39 +00:00
075094b935 Correcting an error 2021-12-07 07:24:39 +00:00
325ced0cd2 Finesse cookie dismiss button 2021-12-07 07:22:11 +00:00
c23e5aa68a Finesse cookie dismiss button 2021-12-07 07:22:11 +00:00
130cfcf41f Finesse cookie consent display 2021-12-07 07:09:28 +00:00
27a62b5611 Finesse cookie consent display 2021-12-07 07:09:28 +00:00
ab4fb55aa1 removed fake link 2021-12-07 07:04:58 +00:00
a6a85492de removed fake link 2021-12-07 07:04:58 +00:00
bb661a2523 Fixed subject-verb disagreement 2021-12-07 07:00:44 +00:00
480c7f46b2 Fixed subject-verb disagreement 2021-12-07 07:00:44 +00:00
8d1893be01 Merge branch 'master' of https://git.vsnt.uk/viveksantayana/ska-referee-test 2021-12-07 06:55:50 +00:00
c07012c007 Merge branch 'master' of https://git.vsnt.uk/viveksantayana/ska-referee-test 2021-12-07 06:55:50 +00:00
800112a006 Technical issues help email 2021-12-07 06:46:34 +00:00
e69f3ee5e8 Technical issues help email 2021-12-07 06:46:34 +00:00
2f6208369b Remove personal data from document 2021-12-07 06:42:46 +00:00
8c46a16fce Remove personal data from document 2021-12-07 06:42:46 +00:00
4c8e3f8c53 Removed email address 2021-12-07 06:40:57 +00:00
ff4bf5c475 Removed email address 2021-12-07 06:40:57 +00:00
314ede846b Merge branch 'master' of ssh://git.vsnt.uk:2222/viveksantayana/ska-referee-test
Sync
2021-12-07 06:38:54 +00:00
4ea675c938 Merge branch 'master' of ssh://git.vsnt.uk:2222/viveksantayana/ska-referee-test
Sync
2021-12-07 06:38:54 +00:00
4ae180ac82 Started drafting documentation 2021-12-07 06:38:43 +00:00
077afe42ee Started drafting documentation 2021-12-07 06:38:43 +00:00
d01352658c Better precision in expiring quizzes 2021-12-07 00:08:01 +00:00
53d95add63 Better precision in expiring quizzes 2021-12-07 00:08:01 +00:00
1d42d94ef2 Better precision in expiring quizzes 2021-12-07 00:08:01 +00:00
166e98a40e Better precision in expiring quizzes 2021-12-07 00:08:01 +00:00
babea6871a Updated test expiry 2021-12-06 23:37:16 +00:00
326e529ffb Updated test expiry 2021-12-06 23:37:16 +00:00
bfe1f33019 Updated test expiry 2021-12-06 23:37:16 +00:00
31b3d5b170 Updated test expiry 2021-12-06 23:37:16 +00:00
d62fe1daec Corrected bug in exam display 2021-12-06 23:24:57 +00:00
b5d5f7f0e1 Corrected bug in exam display 2021-12-06 23:24:57 +00:00
0f1237b6fb Corrected bug in exam display 2021-12-06 23:24:57 +00:00
ede2ff5355 Corrected bug in exam display 2021-12-06 23:24:57 +00:00
aa9a0272d0 I am bad at debugging. 2021-12-06 23:19:13 +00:00
9e22aa5f98 I am bad at debugging. 2021-12-06 23:19:13 +00:00
89fdbd9607 I am bad at debugging. 2021-12-06 23:19:13 +00:00
ebf6005335 I am bad at debugging. 2021-12-06 23:19:13 +00:00
a8d7d35c12 Close Quiz function 2021-12-06 23:16:33 +00:00
67b424da4d Close Quiz function 2021-12-06 23:16:33 +00:00
5f58c1096c Close Quiz function 2021-12-06 23:16:33 +00:00
8c96bbe1e3 Close Quiz function 2021-12-06 23:16:33 +00:00
792053e886 Remove redundant file 2021-12-06 22:54:40 +00:00
3e07f2f763 Remove redundant file 2021-12-06 22:54:40 +00:00
730d2c1397 Remove redundant file 2021-12-06 22:54:40 +00:00
27ca68bad1 Remove redundant file 2021-12-06 22:54:40 +00:00
f5c964951d Merge branch 'master' of ssh://git.vsnt.uk:2222/viveksantayana/ska-referee-test 2021-12-06 22:54:02 +00:00
e0284ddd17 Merge branch 'master' of ssh://git.vsnt.uk:2222/viveksantayana/ska-referee-test 2021-12-06 22:54:02 +00:00
16ae0bcebf Merge branch 'master' of ssh://git.vsnt.uk:2222/viveksantayana/ska-referee-test 2021-12-06 22:54:02 +00:00
d405e57803 Merge branch 'master' of ssh://git.vsnt.uk:2222/viveksantayana/ska-referee-test 2021-12-06 22:54:02 +00:00
e177a1351d This fixes it, hopefully 2021-12-06 22:47:54 +00:00
eca9e789c1 This fixes it, hopefully 2021-12-06 22:47:54 +00:00
fc8982baa7 This fixes it, hopefully 2021-12-06 22:47:54 +00:00
5c471179b8 This fixes it, hopefully 2021-12-06 22:47:54 +00:00
38806309c3 And again 2021-12-06 22:26:48 +00:00
45a1d3f704 And again 2021-12-06 22:26:48 +00:00
97b2986da1 And again 2021-12-06 22:26:48 +00:00
84d91fff82 And again 2021-12-06 22:26:48 +00:00
cb7ecd9c04 Trying to fix it again 2021-12-06 22:24:34 +00:00
d6fd252f48 Trying to fix it again 2021-12-06 22:24:34 +00:00
d041079900 Trying to fix it again 2021-12-06 22:24:34 +00:00
15c3198b33 Trying to fix it again 2021-12-06 22:24:34 +00:00
c9350eac60 I am really bad at fixing bugs 2021-12-06 22:20:27 +00:00
b6a203a76c I am really bad at fixing bugs 2021-12-06 22:20:27 +00:00
ca3cb323de I am really bad at fixing bugs 2021-12-06 22:20:27 +00:00
4ff56b83a3 I am really bad at fixing bugs 2021-12-06 22:20:27 +00:00
a3d6a37ebc More Bug Fixes 2021-12-06 22:17:52 +00:00
6fdbad0c09 More Bug Fixes 2021-12-06 22:17:52 +00:00
e534c4423e More Bug Fixes 2021-12-06 22:17:52 +00:00
a6ec5eb5cc More Bug Fixes 2021-12-06 22:17:52 +00:00
80f48ca964 Bugfix: lack of submission time in detailed result 2021-12-06 22:11:16 +00:00
f1934f6131 Bugfix: lack of submission time in detailed result 2021-12-06 22:11:16 +00:00
6a09576762 Bugfix: lack of submission time in detailed result 2021-12-06 22:11:16 +00:00
f4fef63475 Bugfix: lack of submission time in detailed result 2021-12-06 22:11:16 +00:00
05fe5f711e OG Meta and navbar bug fix 2021-12-06 21:58:51 +00:00
0be4bbb62d OG Meta and navbar bug fix 2021-12-06 21:58:51 +00:00
598eb12970 OG Meta and navbar bug fix 2021-12-06 21:58:51 +00:00
f08f872d0f OG Meta and navbar bug fix 2021-12-06 21:58:51 +00:00
46050dda85 Merge branch 'master' of https://git.vsnt.uk/viveksantayana/ska-referee-test 2021-12-06 21:53:00 +00:00
686a456dbb Merge branch 'master' of https://git.vsnt.uk/viveksantayana/ska-referee-test 2021-12-06 21:53:00 +00:00
6c886af6d1 Merge branch 'master' of https://git.vsnt.uk/viveksantayana/ska-referee-test 2021-12-06 21:53:00 +00:00
150c592e64 Merge branch 'master' of https://git.vsnt.uk/viveksantayana/ska-referee-test 2021-12-06 21:53:00 +00:00
b136b7235e OG and Cookie settings 2021-12-06 21:51:29 +00:00
32a8fc9e40 OG and Cookie settings 2021-12-06 21:51:29 +00:00
9a9f72dd21 OG and Cookie settings 2021-12-06 21:51:29 +00:00
a6b4bccd51 OG and Cookie settings 2021-12-06 21:51:29 +00:00
fa4111424a Bugfixes: case sensitivity, percent sign rendering
Temporary work-around: disabled client navbar home link to prevent exit
2021-12-06 21:47:02 +00:00
1af2385b1c Bugfixes: case sensitivity, percent sign rendering
Temporary work-around: disabled client navbar home link to prevent exit
2021-12-06 21:47:02 +00:00
8a52c1e4ec Bugfixes: case sensitivity, percent sign rendering
Temporary work-around: disabled client navbar home link to prevent exit
2021-12-06 21:47:02 +00:00
c7b009ed3d Bugfixes: case sensitivity, percent sign rendering
Temporary work-around: disabled client navbar home link to prevent exit
2021-12-06 21:47:02 +00:00
95299d42db Proxy Fix 2021-12-06 20:10:27 +00:00
e26fa2348f Proxy Fix 2021-12-06 20:10:27 +00:00
4ea85bcdc8 Proxy Fix 2021-12-06 20:10:27 +00:00
41a32e98c5 Proxy Fix 2021-12-06 20:10:27 +00:00
Vivek Santayana
f21daa2f11 Merge branch 'master' of https://git.vsnt.uk/viveksantayana/ska-referee-test
Fix config
2021-12-06 19:22:06 +00:00
Vivek Santayana
83c34416ce Merge branch 'master' of https://git.vsnt.uk/viveksantayana/ska-referee-test
Fix config
2021-12-06 19:22:06 +00:00
Vivek Santayana
c4451d565d Merge branch 'master' of https://git.vsnt.uk/viveksantayana/ska-referee-test
Fix config
2021-12-06 19:22:06 +00:00
Vivek Santayana
6fdc9b9ae6 Merge branch 'master' of https://git.vsnt.uk/viveksantayana/ska-referee-test
Fix config
2021-12-06 19:22:06 +00:00
25e0f26b95 Updated config 2021-12-06 19:21:45 +00:00
62bb44b0f9 Updated config 2021-12-06 19:21:45 +00:00
3db7c41ae4 Updated config 2021-12-06 19:21:45 +00:00
c1d4dd2b90 Updated config 2021-12-06 19:21:45 +00:00
Vivek Santayana
66eb06cfa0 Merge branch 'master' of https://git.vsnt.uk/viveksantayana/ska-referee-test
Pull icons
2021-12-06 18:59:05 +00:00
Vivek Santayana
0b20b0f9c6 Merge branch 'master' of https://git.vsnt.uk/viveksantayana/ska-referee-test
Pull icons
2021-12-06 18:59:05 +00:00
Vivek Santayana
a0a418080b Merge branch 'master' of https://git.vsnt.uk/viveksantayana/ska-referee-test
Pull icons
2021-12-06 18:59:05 +00:00
Vivek Santayana
0ac73d8a94 Merge branch 'master' of https://git.vsnt.uk/viveksantayana/ska-referee-test
Pull icons
2021-12-06 18:59:05 +00:00
8ce575bdd6 Favicons and OG Meta 2021-12-06 18:58:42 +00:00
2e0d3cf7a3 Favicons and OG Meta 2021-12-06 18:58:42 +00:00
c6a4fd5045 Favicons and OG Meta 2021-12-06 18:58:42 +00:00
231ca2b824 Favicons and OG Meta 2021-12-06 18:58:42 +00:00
Vivek Santayana
61c5043f5d Merge branch 'master' of https://git.vsnt.uk/viveksantayana/ska-referee-test
Download fonts and remove private files
2021-12-06 18:06:47 +00:00
Vivek Santayana
d2560b3ec8 Merge branch 'master' of https://git.vsnt.uk/viveksantayana/ska-referee-test
Download fonts and remove private files
2021-12-06 18:06:47 +00:00
Vivek Santayana
37c3cd1a8a Merge branch 'master' of https://git.vsnt.uk/viveksantayana/ska-referee-test
Download fonts and remove private files
2021-12-06 18:06:47 +00:00
Vivek Santayana
bece36013c Merge branch 'master' of https://git.vsnt.uk/viveksantayana/ska-referee-test
Download fonts and remove private files
2021-12-06 18:06:47 +00:00
6fb91e1b77 Uploading Fonts 2021-12-06 18:06:11 +00:00
e5c5c32ff0 Uploading Fonts 2021-12-06 18:06:11 +00:00
ab1ad4b00d Uploading Fonts 2021-12-06 18:06:11 +00:00
3ed1a8fb1b Uploading Fonts 2021-12-06 18:06:11 +00:00
Vivek Santayana
c22c1e2f9b Merge branch 'master' of https://git.vsnt.uk/viveksantayana/ska-referee-test 2021-12-06 18:02:59 +00:00
Vivek Santayana
b8c78fa10a Merge branch 'master' of https://git.vsnt.uk/viveksantayana/ska-referee-test 2021-12-06 18:02:59 +00:00
Vivek Santayana
48745ee21b Merge branch 'master' of https://git.vsnt.uk/viveksantayana/ska-referee-test 2021-12-06 18:02:59 +00:00
Vivek Santayana
e20cc1359b Merge branch 'master' of https://git.vsnt.uk/viveksantayana/ska-referee-test 2021-12-06 18:02:59 +00:00
03e1010253 Correct error 2021-12-06 16:56:54 +00:00
ad032efe4e Correct error 2021-12-06 16:56:54 +00:00
ed32aa1fc7 Correct error 2021-12-06 16:56:54 +00:00
02b892eb6d Correct error 2021-12-06 16:56:54 +00:00
72493d622e Added correct answer view 2021-12-06 13:44:40 +00:00
2e96349c15 Added correct answer view 2021-12-06 13:44:40 +00:00
bfe74e24a6 Added correct answer view 2021-12-06 13:44:40 +00:00
f2700ecd90 Added correct answer view 2021-12-06 13:44:40 +00:00
2a692e48b7 Added individual result correct/incorrect flag 2021-12-06 13:42:26 +00:00
eccf0820f2 Added individual result correct/incorrect flag 2021-12-06 13:42:26 +00:00
285b3c5241 Added individual result correct/incorrect flag 2021-12-06 13:42:26 +00:00
b80a274626 Added individual result correct/incorrect flag 2021-12-06 13:42:26 +00:00
11f2f523d8 Added Certbot and Nginx to Docker stack 2021-12-06 13:39:06 +00:00
2b57979466 Added Certbot and Nginx to Docker stack 2021-12-06 13:39:06 +00:00
c9366e405e Added Certbot and Nginx to Docker stack 2021-12-06 13:39:06 +00:00
6fe251909b Added Certbot and Nginx to Docker stack 2021-12-06 13:39:06 +00:00
7323bd2885 Nginx Server 2021-12-06 13:29:20 +00:00
fbf8b12c8b Nginx Server 2021-12-06 13:29:20 +00:00
3b4cd4b9a4 Nginx Server 2021-12-06 13:29:20 +00:00
beae39d628 Nginx Server 2021-12-06 13:29:20 +00:00
1a1ea9d76b Dockerised. Restructured to remove circular import
Moved most of app definitions out of guard function to use wsgi
Updated configuration files and referencing of .env values.
Local version needs dotenv or exporting of env variables.
Dockerised version works fine without load_dotenv.
Ready to test now!
2021-12-05 03:49:31 +00:00
691c2e4bae Dockerised. Restructured to remove circular import
Moved most of app definitions out of guard function to use wsgi
Updated configuration files and referencing of .env values.
Local version needs dotenv or exporting of env variables.
Dockerised version works fine without load_dotenv.
Ready to test now!
2021-12-05 03:49:31 +00:00
1f8e4508c3 Dockerised. Restructured to remove circular import
Moved most of app definitions out of guard function to use wsgi
Updated configuration files and referencing of .env values.
Local version needs dotenv or exporting of env variables.
Dockerised version works fine without load_dotenv.
Ready to test now!
2021-12-05 03:49:31 +00:00
e25d37fecb Dockerised. Restructured to remove circular import
Moved most of app definitions out of guard function to use wsgi
Updated configuration files and referencing of .env values.
Local version needs dotenv or exporting of env variables.
Dockerised version works fine without load_dotenv.
Ready to test now!
2021-12-05 03:49:31 +00:00
0bb18ce75f dockerise 2021-12-05 00:17:54 +00:00
f57229f470 dockerise 2021-12-05 00:17:54 +00:00
452c214c15 dockerise 2021-12-05 00:17:54 +00:00
821c0b115a dockerise 2021-12-05 00:17:54 +00:00
c319a3307c Deleted redundant variable assignment 2021-12-04 21:29:15 +00:00
12b5f53096 Deleted redundant variable assignment 2021-12-04 21:29:15 +00:00
2f77e86450 Deleted redundant variable assignment 2021-12-04 21:29:15 +00:00
05fecdf293 Deleted redundant variable assignment 2021-12-04 21:29:15 +00:00
438d53abc5 Updated footer, added question counters. 2021-12-04 21:25:43 +00:00
1dac71da45 Updated footer, added question counters. 2021-12-04 21:25:43 +00:00
d9145b15f7 Updated footer, added question counters. 2021-12-04 21:25:43 +00:00
524b2d8f9f Updated footer, added question counters. 2021-12-04 21:25:43 +00:00
12fa8b9275 Finished making dashboards 2021-12-04 20:47:43 +00:00
a00edb86c0 Finished making dashboards 2021-12-04 20:47:43 +00:00
f6763b85fd Finished making dashboards 2021-12-04 20:47:43 +00:00
896afa7b2d Finished making dashboards 2021-12-04 20:47:43 +00:00
be78862c72 Added question progress bar 2021-12-04 18:50:09 +00:00
360e3c5930 Added question progress bar 2021-12-04 18:50:09 +00:00
1312729836 Added question progress bar 2021-12-04 18:50:09 +00:00
6cd30c8c0f Added question progress bar 2021-12-04 18:50:09 +00:00
b21a83e28b Added custom 404 display and login redirect 2021-12-04 17:40:01 +00:00
8d7796ab9f Added custom 404 display and login redirect 2021-12-04 17:40:01 +00:00
63180c6488 Added custom 404 display and login redirect 2021-12-04 17:40:01 +00:00
79afc8e1c5 Added custom 404 display and login redirect 2021-12-04 17:40:01 +00:00
ecefc1900d Completed client side time adjustment handling
Corrected error display bug
Removed redundant auth and models in quiz client app
2021-12-04 17:14:28 +00:00
b6f1ee0c8b Completed client side time adjustment handling
Corrected error display bug
Removed redundant auth and models in quiz client app
2021-12-04 17:14:28 +00:00
c0cdc5ca50 Completed client side time adjustment handling
Corrected error display bug
Removed redundant auth and models in quiz client app
2021-12-04 17:14:28 +00:00
e8ca0768ab Completed client side time adjustment handling
Corrected error display bug
Removed redundant auth and models in quiz client app
2021-12-04 17:14:28 +00:00
e735553cb3 Added server and admin-side time limit adjustments 2021-12-04 15:41:47 +00:00
1387ebd49e Added server and admin-side time limit adjustments 2021-12-04 15:41:47 +00:00
52908a548c Added server and admin-side time limit adjustments 2021-12-04 15:41:47 +00:00
ead24674b6 Added server and admin-side time limit adjustments 2021-12-04 15:41:47 +00:00
d2a100d827 Refactored form model for custom validators 2021-12-04 15:41:24 +00:00
79d7a6fec8 Refactored form model for custom validators 2021-12-04 15:41:24 +00:00
239c29b1f5 Refactored form model for custom validators 2021-12-04 15:41:24 +00:00
1962c46b11 Refactored form model for custom validators 2021-12-04 15:41:24 +00:00
7940e7c46f Typo correction 2021-12-04 12:48:01 +00:00
a45684c0e4 Typo correction 2021-12-04 12:48:01 +00:00
bcbb38d0d9 Typo correction 2021-12-04 12:48:01 +00:00
3630dc1c14 Typo correction 2021-12-04 12:48:01 +00:00
2d599629f4 Added results CRUD and result detailed view 2021-12-04 12:20:03 +00:00
2ce03b3e2b Added results CRUD and result detailed view 2021-12-04 12:20:03 +00:00
f222b289c0 Added results CRUD and result detailed view 2021-12-04 12:20:03 +00:00
b83b07b8d8 Added results CRUD and result detailed view 2021-12-04 12:20:03 +00:00
f83f173233 Streamlined post form handlers for admin console 2021-12-01 08:26:08 +00:00
1ffd20b68f Streamlined post form handlers for admin console 2021-12-01 08:26:08 +00:00
bb7b93fc8c Streamlined post form handlers for admin console 2021-12-01 08:26:08 +00:00
ccc94b5bbe Streamlined post form handlers for admin console 2021-12-01 08:26:08 +00:00
c4582503b9 Added footer text to quiz site. 2021-12-01 01:00:53 +00:00
95419c7467 Added footer text to quiz site. 2021-12-01 01:00:53 +00:00
5b7e5e72d8 Added footer text to quiz site. 2021-12-01 01:00:53 +00:00
8ac49e4db3 Added footer text to quiz site. 2021-12-01 01:00:53 +00:00
44985084d2 Added result page. 2021-12-01 00:48:47 +00:00
88e86c59ba Added result page. 2021-12-01 00:48:47 +00:00
e8081a9b30 Added result page. 2021-12-01 00:48:47 +00:00
dc1951745b Added result page. 2021-12-01 00:48:47 +00:00
ace56eed24 Finessing of client. 2021-12-01 00:48:38 +00:00
89eb4ed854 Finessing of client. 2021-12-01 00:48:38 +00:00
d80cd40207 Finessing of client. 2021-12-01 00:48:38 +00:00
ba997ddf5b Finessing of client. 2021-12-01 00:48:38 +00:00
89bf76759b Finessing display on index and instruction pages 2021-12-01 00:48:05 +00:00
7e3a8a5aaa Finessing display on index and instruction pages 2021-12-01 00:48:05 +00:00
ee53c7acda Finessing display on index and instruction pages 2021-12-01 00:48:05 +00:00
73845486b3 Finessing display on index and instruction pages 2021-12-01 00:48:05 +00:00
b110b880b2 Set timer to be hidden by default
Swapped default behaviour of timer around.
2021-12-01 00:47:19 +00:00
6add11e846 Set timer to be hidden by default
Swapped default behaviour of timer around.
2021-12-01 00:47:19 +00:00
197bbe1150 Set timer to be hidden by default
Swapped default behaviour of timer around.
2021-12-01 00:47:19 +00:00
e0f898ef72 Set timer to be hidden by default
Swapped default behaviour of timer around.
2021-12-01 00:47:19 +00:00
c9c991f898 Added text to index and instruction pages. 2021-12-01 00:46:41 +00:00
5740c9ce16 Added text to index and instruction pages. 2021-12-01 00:46:41 +00:00
bd55d19248 Added text to index and instruction pages. 2021-12-01 00:46:41 +00:00
b05a5c70a3 Added text to index and instruction pages. 2021-12-01 00:46:41 +00:00
0eaf842ca8 Added automated email notification of results. 2021-12-01 00:46:21 +00:00
cabc57ea90 Added automated email notification of results. 2021-12-01 00:46:21 +00:00
29730e9987 Added automated email notification of results. 2021-12-01 00:46:21 +00:00
4c004085b1 Added automated email notification of results. 2021-12-01 00:46:21 +00:00
3e013a8e8c Corrected missing assignment of variable 2021-12-01 00:45:56 +00:00
76eaef6f05 Corrected missing assignment of variable 2021-12-01 00:45:56 +00:00
41b54f3264 Corrected missing assignment of variable 2021-12-01 00:45:56 +00:00
1dfd06a331 Corrected missing assignment of variable 2021-12-01 00:45:56 +00:00
e7ca0671f3 Corrected doubled import 2021-12-01 00:45:20 +00:00
e587a6d515 Corrected doubled import 2021-12-01 00:45:20 +00:00
bbbdcee77a Corrected doubled import 2021-12-01 00:45:20 +00:00
4acb3157f1 Corrected doubled import 2021-12-01 00:45:20 +00:00
86b8390acb Exam Code Time Controls 2021-11-30 18:16:52 +00:00
d439ec2dd8 Exam Code Time Controls 2021-11-30 18:16:52 +00:00
46ad21e9c1 Exam Code Time Controls 2021-11-30 18:16:52 +00:00
2cab80bda4 Exam Code Time Controls 2021-11-30 18:16:52 +00:00
de0db1b6af Finished client result API.
Need to work on adjustment user codes and server email notifications.
2021-11-30 18:06:24 +00:00
2463375398 Finished client result API.
Need to work on adjustment user codes and server email notifications.
2021-11-30 18:06:24 +00:00
5dc64507a7 Finished client result API.
Need to work on adjustment user codes and server email notifications.
2021-11-30 18:06:24 +00:00
09aa30694e Finished client result API.
Need to work on adjustment user codes and server email notifications.
2021-11-30 18:06:24 +00:00
ffbdd91d9b Built client interface 2021-11-30 03:11:28 +00:00
10c75845a9 Built client interface 2021-11-30 03:11:28 +00:00
61d2cc3a6d Built client interface 2021-11-30 03:11:28 +00:00
1e953fe21c Built client interface 2021-11-30 03:11:28 +00:00
94541d1813 Added CSRF protection to all ajax requests 2021-11-29 09:13:21 +00:00
979fee8253 Added CSRF protection to all ajax requests 2021-11-29 09:13:21 +00:00
b24f340d91 Added CSRF protection to all ajax requests 2021-11-29 09:13:21 +00:00
1088dc76e4 Added CSRF protection to all ajax requests 2021-11-29 09:13:21 +00:00
37ea8d0191 Added question generating API 2021-11-28 18:17:50 +00:00
c5ca461e3d Added question generating API 2021-11-28 18:17:50 +00:00
6469274f14 Added question generating API 2021-11-28 18:17:50 +00:00
a763ba212a Added question generating API 2021-11-28 18:17:50 +00:00
43acda716b Added functionality for default datasets.
Incorporated dataset selector into test creation.
2021-11-28 17:28:14 +00:00
e5234122c9 Added functionality for default datasets.
Incorporated dataset selector into test creation.
2021-11-28 17:28:14 +00:00
6ff5d159cb Added functionality for default datasets.
Incorporated dataset selector into test creation.
2021-11-28 17:28:14 +00:00
d1d9b1bd1f Added functionality for default datasets.
Incorporated dataset selector into test creation.
2021-11-28 17:28:14 +00:00
81d95bb4b3 Finished data upload
Refactored to move security package inside common
Moved data folder to process root.
2021-11-28 02:30:46 +00:00
f361d25728 Finished data upload
Refactored to move security package inside common
Moved data folder to process root.
2021-11-28 02:30:46 +00:00
0ab06af8be Finished data upload
Refactored to move security package inside common
Moved data folder to process root.
2021-11-28 02:30:46 +00:00
dd085582cc Finished data upload
Refactored to move security package inside common
Moved data folder to process root.
2021-11-28 02:30:46 +00:00
95abec2b4b Refactor to have all models in the models package. 2021-11-25 23:21:48 +00:00
3bde83cf92 Refactor to have all models in the models package. 2021-11-25 23:21:48 +00:00
5b2e6dda67 Refactor to have all models in the models package. 2021-11-25 23:21:48 +00:00
39e80c64fa Refactor to have all models in the models package. 2021-11-25 23:21:48 +00:00

View File

@ -1,207 +0,0 @@
from flask import flash, make_response, Response, session
from flask.helpers import url_for
from flask.json import jsonify
from werkzeug.security import generate_password_hash, check_password_hash
from werkzeug.utils import redirect
from flask_mail import Message
import secrets
from common.security import encrypt, decrypt
from common.security.database import decrypt_find_one, encrypted_update
from datetime import datetime, timedelta
class User:
def __init__(self, _id=None, username=None, password=None, email=None, remember=False):
self._id = _id
self.username = username
self.email = email
self.password = password
self.remember = remember
def start_session(self, resp:Response):
from main import app
resp.set_cookie(
key = '_id',
value = self._id,
max_age = timedelta(days=14) if self.remember else None,
path = '/',
expires = datetime.utcnow() + timedelta(days=14) if self.remember else None,
domain = f'.{app.config["SERVER_NAME"]}',
secure = True
)
if self.remember:
resp.set_cookie (
key = 'remember',
value = 'True',
max_age = timedelta(days=14),
path = '/',
expires = datetime.utcnow() + timedelta(days=14),
domain = f'.{app.config["SERVER_NAME"]}',
secure = True
)
def register(self):
from main import db
from ..views import get_id_from_cookie
user = {
'_id': self._id,
'email': encrypt(self.email),
'password': generate_password_hash(self.password, method='sha256'),
'username': encrypt(self.username)
}
if decrypt_find_one(db.users, { 'username': self.username }):
return jsonify({ 'error': f'Username {self.username} is not available.' }), 400
if db.users.insert_one(user):
flash(f'User {self.username} has been created successfully. You may now use it to log in and administer the tests.', 'success')
resp = make_response(jsonify(user), 200)
if not get_id_from_cookie:
self.start_session(resp)
return resp
return jsonify({ 'error': f'Registration failed. An error occurred.' }), 400
def login(self):
from main import db
user = decrypt_find_one( db.users, { 'username': self.username })
if not user:
return jsonify({ 'error': f'Username {self.username} does not exist.' }), 401
if not check_password_hash( user['password'], self.password ):
return jsonify({ 'error': f'The password you entered is incorrect.' }), 401
response = {
'success': f'Successfully logged in user {self.username}.'
}
if 'prev_page' in session:
response['redirect_to'] = session['prev_page']
session.pop('prev_page')
resp = make_response(jsonify(response), 200)
self._id = user['_id']
self.start_session(resp)
return resp
def logout(self):
resp = make_response(redirect(url_for('admin_auth.login')))
from main import app
resp.set_cookie(
key = '_id',
value = '',
max_age = timedelta(days=-1),
path = '/',
expires= datetime.utcnow() + timedelta(days=-1),
domain = f'.{app.config["SERVER_NAME"]}',
secure = True
)
resp.set_cookie (
key = 'cookie_consent',
value = 'True',
max_age = None,
path = '/',
expires = None,
domain = f'.{app.config["SERVER_NAME"]}',
secure = True
)
resp.set_cookie (
key = 'remember',
value = 'True',
max_age = timedelta(days=-1),
path = '/',
expires = datetime.utcnow() + timedelta(days=-1),
domain = f'.{app.config["SERVER_NAME"]}',
secure = True
)
flash('You have been logged out. All cookies pertaining to your account have been deleted. Have a nice day.', 'alert')
return resp
def reset_password(self):
from main import db, mail
user = decrypt_find_one(db.users, { 'username': self.username })
if not user:
return jsonify({ 'error': f'Username {self.username} does not exist.' }), 401
if not user['email'] == self.email:
return jsonify({ 'error': f'The email address {self.email} does not match the user account {self.username}.' }), 401
new_password = secrets.token_hex(12)
reset_token = secrets.token_urlsafe(16)
verification_token = secrets.token_urlsafe(16)
user['password'] = generate_password_hash(new_password, method='sha256')
if encrypted_update(db.users, { 'username': self.username }, { '$set': {'password': user['password'], 'reset_token': reset_token, 'verification_token': verification_token } } ):
flash(f'Your password has been reset. Instructions to recover your account have been sent to {self.email}. Please be sure to check your spam folder in case you have not received the email.', 'alert')
email = Message(
subject = 'RefTest | Password Reset',
recipients = [self.email],
body = f"""
Hello {user['username']}, \n\n
This email was generated because we received a request to reset the password for your administrator account for the SKA RefTest app.\n\n
If you did not make this request, please ignore this email.\n\n
If you did make this request, then you have two options to recover your account.\n\n
For the time being, your password has been reset to the following:\n\n
{new_password}\n\n
You may use this to log back in to your account, and subsequently change your password to something more suitable.\n\n
Alternatively, you may visit the following private link using your unique token to override your password. Copy and paste the following link in a web browser. Please note that this token is only valid once:\n\n
{url_for('admin_auth.reset_gateway', token1 = reset_token, token2 = verification_token, _external = True)}\n\n
Have a nice day.
""",
html = f"""
<p>Hello {user['username']},</p>
<p>This email was generated because we received a request to reset the password for your administrator account for the SKA RefTest app. </p>
<p>If you did not make this request, please ignore this email.</p>
<p>If you did make this request, then you have two options to recover your account.</p>
<p>For the time being, your password has been reset to the following:</p>
<strong>{new_password}</strong>
<p>You may use this to log back in to your account, and subsequently change your password to something more suitable.</p>
<p>Alternatively, you may visit the following private link using your unique token to override your password. Click on the following link, or copy and paste it into a browser. <strong>Please note that this token is only valid once</strong>:</p>
<p><a href='{url_for('admin_auth.reset_gateway', token1 = reset_token, token2 = verification_token, _external = True)}'>{url_for('admin_auth.reset_gateway', token1 = reset_token, token2 = verification_token, _external = True)}</a></p>
<p>Have a nice day.</p>
"""
)
mail.send(email)
return jsonify({ 'success': 'Password reset request has been processed.'}), 200
def update(self):
from main import db
from ..views import get_id_from_cookie
retrieved_user = decrypt_find_one(db.users, { '_id': self._id })
if not retrieved_user:
return jsonify({ 'error': f'User {retrieved_user["username"]} does not exist.' }), 401
user = {}
updated = []
if not self.email == '' and self.email is not None:
user['email'] = self.email
updated.append('email')
if not self.password == '' and self.password is not None:
user['password'] = generate_password_hash(self.password, method='sha256')
updated.append('password')
output = ''
if len(updated) == 0:
flash(f'There were no changes requested for your account.', 'alert'), 200
return jsonify({'success': 'There were no changes requested for your account.'}), 200
elif len(updated) == 1:
output = updated[0]
elif len(updated) == 2:
output = ' and '.join(updated)
elif len(updated) > 2:
output = updated[0]
for index in range(1,len(updated)):
if index < len(updated) - 2:
output = ', '.join([output, updated[index]])
elif index == len(updated) - 2:
output = ', and '.join([output, updated[index]])
else:
output = ''.join([output, updated[index]])
encrypted_update(db.users, {'_id': self._id}, { '$set': user })
if self._id == get_id_from_cookie():
_output = 'Your '
elif retrieved_user['username'][-1] == 's':
_output = '&rsquo;'.join([retrieved_user['username'], ''])
else:
_output = '&rsquo;'.join([retrieved_user['username'], 's'])
_output = f'{_output} {output} {"has" if len(updated) == 1 else "have"} been updated.'
flash(_output)
return jsonify({'success': _output}), 200
def delete(self):
from main import db
retrieved_user = decrypt_find_one(db.users, { '_id': self._id })
if not retrieved_user:
return jsonify({ 'error': f'User does not exist.' }), 401
db.users.find_one_and_delete({'_id': self._id})
flash(f'User {retrieved_user["username"]} has been deleted.')
return jsonify({'success': f'User {retrieved_user["username"]} has been deleted.'}), 200