88
99blueprint = Blueprint ("roster" , __name__ )
1010
11- @min_level ('instructor' )
11+ # IMPORTANT: @blueprint.route must always be outermost decorator,
12+ # any other decorators such as, auth decorators (min_level, exact_level) must go below it
13+
1214@blueprint .route ("/upload-roster" , methods = ["POST" ])
15+ @min_level ('instructor' )
1316def upload_roster ():
1417 """
1518 Role: instructor or admin
@@ -72,8 +75,8 @@ def upload_roster():
7275
7376# TODO: get roster
7477
75- @min_level ('instructor' )
7678@blueprint .route ("/get-roster" , methods = ["GET" ])
79+ @min_level ('instructor' )
7780def get_roster ():
7881 """
7982 Role: instructor or admin
@@ -102,8 +105,8 @@ def get_roster():
102105
103106
104107
105- @min_level ('student' )
106108@blueprint .route ("/update-name" , methods = ["PATCH" ])
109+ @min_level ('student' )
107110def update_preferred_name ():
108111 user = get_user (request .cookies )
109112
@@ -120,8 +123,8 @@ def update_preferred_name():
120123 return {"message" : "Updated preferred name." }
121124
122125
123- @min_level ('instructor' )
124126@blueprint .route ("/enroll" , methods = ["POST" ])
127+ @min_level ('instructor' )
125128def enroll_user ():
126129 """
127130 Enroll a single user. Won't enroll admins.
@@ -164,9 +167,9 @@ def enroll_user():
164167 return {"message" : "Successfully enrolled user" ,
165168 "id" : user_id }
166169
167- @min_level ('instructor' )
168170@blueprint .route ("/visits/<user_id>" , methods = ["GET" ])
169171@blueprint .route ("/visits" , methods = ["GET" ], defaults = {"user_id" : None })
172+ @min_level ('instructor' )
170173def get_visits (user_id ):
171174 """
172175 Get a list of visits. If a user_id is specified, only include
0 commit comments