File tree Expand file tree Collapse file tree 4 files changed +19
-3
lines changed Expand file tree Collapse file tree 4 files changed +19
-3
lines changed Original file line number Diff line number Diff line change 13
13
14
14
15
15
class User (SimpleUser ):
16
- def __init__ (self , username : str , team : str ) -> None :
16
+ def __init__ (self , username : str , team : Optional [ str ] ) -> None :
17
17
super ().__init__ (username )
18
18
self .team = team
19
19
@@ -61,7 +61,7 @@ async def authenticate(
61
61
62
62
63
63
class DummyBackend (BasicAuthBackend ):
64
- def __init__ (self , team : str = 'SRZ' ) -> None :
64
+ def __init__ (self , team : Optional [ str ] = 'SRZ' ) -> None :
65
65
self .team = team
66
66
67
67
async def validate (self , username : str , password : str ) -> ValidationResult :
Original file line number Diff line number Diff line change 14
14
from starlette .middleware .authentication import AuthenticationMiddleware
15
15
16
16
from . import auth , config
17
+ from .auth import User
17
18
from .tables import Archive , ChoiceHistory
18
19
19
20
database = databases .Database (config .DATABASE_URL , force_rollback = config .TESTING )
@@ -57,6 +58,14 @@ async def homepage(request: Request) -> Response:
57
58
@requires ('authenticated' )
58
59
@database .transaction ()
59
60
async def upload (request : Request ) -> Response :
61
+ user : User = request .user
62
+
63
+ if not user .team :
64
+ return Response (
65
+ "Must be a member of a team to be able to upload files" ,
66
+ status_code = 403 ,
67
+ )
68
+
60
69
form = await request .form ()
61
70
archive = form ['archive' ]
62
71
Original file line number Diff line number Diff line change 31
31
< div class ="container ">
32
32
< h1 > Virtual Competition Code Submission</ h1 >
33
33
< div class ="row ">
34
+ {% if request.user.team %}
34
35
< form
35
36
class ="col-sm-6 "
36
37
action ="{{ request.app.url_path_for('upload') }} "
37
38
enctype ="multipart/form-data "
38
39
method ="POST "
39
40
>
40
- < h3 > Upload a new submission</ h3 >
41
+ < h3 > Upload a new submission for team {{ request.user.team }} </ h3 >
41
42
< div class ="form-group ">
42
43
< label for ="archive "> Select ZIP archive </ label >
43
44
< input
@@ -63,6 +64,9 @@ <h3>Upload a new submission</h3>
63
64
</ div >
64
65
< button class ="btn btn-primary " type ="submit "> Upload</ button >
65
66
</ form >
67
+ {% else %}
68
+ < em > You are not in a team and so cannot upload files.</ em >
69
+ {% endif %}
66
70
</ div >
67
71
< div class ="row ">
68
72
< div class ="col-sm-6 ">
Original file line number Diff line number Diff line change @@ -64,6 +64,9 @@ def test_app(self) -> None:
64
64
response = self .session .get (self .url_path_for ('homepage' ))
65
65
self .assertEqual (200 , response .status_code )
66
66
67
+ html = response .text
68
+ self .assertIn ("Upload a new submission" , html )
69
+
67
70
def test_app_requires_auth (self ) -> None :
68
71
self .session .auth = None
69
72
response = self .session .get (self .url_path_for ('homepage' ))
You can’t perform that action at this time.
0 commit comments