Compare View
Commits (2)
Diff
Showing 1 changed file Side-by-side Diff
DesignUseCases.tex
View file @
6c83601
... | ... | @@ -47,11 +47,9 @@ Kevin Mach & User Interface Specialist\\ |
47 | 47 | \section{Accounts} |
48 | 48 | \subsection{[A1] User Registration} |
49 | 49 | \begin{description}[style=multiline,leftmargin=3cm] |
50 | -\item[Description]{To create and save decks, the system requires the user | |
51 | -to create an account prior. The user will be able to create an account | |
52 | -through registering.} | |
50 | +\item[Description]{To create flashcards and save them into decks, the system requires the user to create an account prior. The user will be able to create an account by registering.} | |
53 | 51 | \item[Desired Outcome]{An account will be created for the user from the |
54 | -specified username, password, email. The user will be able to log into | |
52 | +specified username, password, and email. The user will be able to log into | |
55 | 53 | the aforementioned account.} |
56 | 54 | \\ |
57 | 55 | \item[User Goals]{The user shall have an account to participate in the |
... | ... | @@ -65,7 +63,7 @@ application's activities.} |
65 | 63 | |
66 | 64 | \item[Status]{Implemented} |
67 | 65 | |
68 | -\item[Pre-conditions]: None. | |
66 | +\item[Pre-conditions]{None} | |
69 | 67 | |
70 | 68 | \item[Post-conditions] |
71 | 69 | |
... | ... | @@ -84,37 +82,33 @@ application's activities.} |
84 | 82 | \item |
85 | 83 | {The frontend renders the login form described in login.html.} |
86 | 84 | \item |
87 | - {The User shall click the sign up toggle.} | |
85 | + {The user shall click the sign up tab.} | |
88 | 86 | \item |
89 | - {The frontend shall render a registration form and display it to the User.} | |
87 | + {The frontend shall render a registration form and display it to the user.} | |
90 | 88 | \item |
91 | - {The User shal fill in the form.} | |
89 | + {The user shall fill in the form.} | |
92 | 90 | \item |
93 | 91 | {The frontend checks that the provided email is not invalid, and that |
94 | - the password is not valid. If anything is not valid, it displays an | |
92 | + the password is not invalid. If anything is not valid, it displays an | |
95 | 93 | error and returns this to the user. } |
96 | 94 | \item |
97 | - {If the form is valid, the frontent POSTs the form in JSON format to the | |
98 | - server API at /api/verify\_email/.} | |
95 | + {If the form is valid, the frontend POSTs the form in JSON format to the | |
96 | + backend API at /api/verify\_email/.} | |
99 | 97 | \item |
100 | - {The backend deserializes and validates the data in /api/register. If it's not valid, it | |
101 | - returns an error to the frontend.} | |
98 | + {The backend deserializes and validates the data in /api/register. If it's not valid, it returns an error to the frontend.} | |
102 | 99 | \item |
103 | - {The backend creates a new User object from the provided data, filling | |
100 | + {The backend creates a new user object from the provided data, filling | |
104 | 101 | in the email and password fields in models.py in model method create\_user.} |
105 | 102 | \item |
106 | - {The backend saves the User object in models.py.} | |
103 | + {The backend saves the user object in models.py.} | |
107 | 104 | \item |
108 | - {The backend marks the User's email as unverified.} | |
105 | + {The backend marks the user's email as unverified.} | |
109 | 106 | \item |
110 | - {The backend sends an email to the User's address with a link to | |
111 | - validate the user's email address from models.py in function send\_confirmation\_email.} | |
107 | + {The backend sends an email to the user's address with a link to validate the user's email address from models.py in function send\_confirmation\_email.} | |
112 | 108 | \item |
113 | - {The backend responds with success and logs the User in on a new | |
114 | - session for the User. } | |
109 | + {The backend responds with success and logs the user in on a new session for the User.} | |
115 | 110 | \item |
116 | - {The frontend reports success to the User and stores the sessionid for | |
117 | - future requests.} | |
111 | + {The frontend reports success to the user and stores the sessionid for future requests.} | |
118 | 112 | \end{enumerate} |
119 | 113 | |
120 | 114 | {Verification Workflow:} |
... | ... | @@ -122,18 +116,16 @@ application's activities.} |
122 | 116 | \begin{enumerate} |
123 | 117 | \itemsep1pt\parskip0pt\parsep0pt |
124 | 118 | \item |
125 | - {The User receives an email with a link to verify their email. The | |
126 | - User clicks the link} | |
119 | + {The user receives an email with a link to verify their email. The user clicks the link} | |
127 | 120 | \item |
128 | 121 | {The frontend in VerifyEmailController submits a POST request to the backend.} |
129 | 122 | \item |
130 | - {The backend validates the code in views.py in function veryify\_email. If the code is not valid, it returns | |
131 | - an error to the frontend.} | |
123 | + {The backend validates the code in views.py in function veryify\_email. If the code is not valid, it returns an error to the frontend.} | |
132 | 124 | \item |
133 | - {The backend marks the user's email as confirmed and saves the User object | |
125 | + {The backend marks the user's email as confirmed and saves the user object | |
134 | 126 | again in models.py in function confirm\_email. The user's account is now active.} |
135 | 127 | \item |
136 | - {The frontend's VerifyEmailController.js reports success and logs the User in to the application. } | |
128 | + {The frontend's VerifyEmailController.js reports success and logs the user in to the application.} | |
137 | 129 | \end{enumerate} |
138 | 130 | |
139 | 131 | \end{description} |
... | ... | @@ -142,7 +134,7 @@ application's activities.} |
142 | 134 | \subsection{[A2] User Login} |
143 | 135 | |
144 | 136 | \begin{description} |
145 | -\item[Description]{User is able to login to personal account.} | |
137 | +\item[Description]{The user is able to login to personal account.} | |
146 | 138 | |
147 | 139 | \item[Desired Outcome]{The user shall be able to provide their username and |
148 | 140 | password to access their courses and flash cards. The user shall gain |
... | ... | @@ -165,8 +157,8 @@ device, or use the site after logging out.} |
165 | 157 | \begin{itemize} |
166 | 158 | \itemsep1pt\parskip0pt\parsep0pt |
167 | 159 | \item |
168 | - {The User has registered an account.} | |
169 | - {The User knows their email and password.} | |
160 | + {The user has registered an account.} | |
161 | + {The user knows their email and password.} | |
170 | 162 | \end{itemize} |
171 | 163 | |
172 | 164 | \item[Post-conditions] |
... | ... | @@ -174,10 +166,10 @@ device, or use the site after logging out.} |
174 | 166 | \begin{itemize} |
175 | 167 | \itemsep1pt\parskip0pt\parsep0pt |
176 | 168 | \item |
177 | - {The User can navigate the site and see their data.} | |
169 | + {The user can navigate the site and see their data.} | |
178 | 170 | \end{itemize} |
179 | 171 | |
180 | -\item[Trigger]{The User wants to use the application and its core features.} | |
172 | +\item[Trigger]{The user wants to use the application and its core features.} | |
181 | 173 | |
182 | 174 | \item[Workflow] |
183 | 175 | |
... | ... | @@ -186,29 +178,29 @@ device, or use the site after logging out.} |
186 | 178 | \item |
187 | 179 | {The frontend shall render the login form described in login.html and implemented in LoginController.js} |
188 | 180 | \item |
189 | -{The User shall type in their email and password.} | |
181 | +{The user shall type in their email and password.} | |
190 | 182 | \item |
191 | - {The backend shall verify that the User has submitted their email and password in views.py in function login.} | |
183 | + {The backend shall verify that the user has submitted their email and password in views.py in function login.} | |
192 | 184 | \item |
193 | - {The backend shall check that the User is active in views.py in function login.} | |
185 | + {The backend shall check that the user is active in views.py in function login.} | |
194 | 186 | \item |
195 | - {The backend shall log the User in using the Django login feature.} | |
187 | + {The backend shall log the user in using the Django login feature.} | |
196 | 188 | \item |
197 | - {The frontend shall displays the home page for the User.} | |
189 | + {The frontend shall displays the home page for the user.} | |
198 | 190 | \end{enumerate} |
199 | 191 | \end{description} |
200 | 192 | \newpage |
201 | 193 | |
202 | 194 | \subsection{[A3] Add a Class} |
203 | 195 | \begin{description} |
204 | -\item[Description]{The User shall be able to add a class and access the | |
196 | +\item[Description]{The user shall be able to add a class and access the | |
205 | 197 | flashcards associated with that class.} |
206 | 198 | |
207 | 199 | \item[Desired Outcome]{The class shall be connected to the student's account |
208 | -and the User shall have the ability to read and publish flashcards | |
200 | +and the user shall have the ability to read and publish flashcards | |
209 | 201 | for this class.} |
210 | 202 | \\ |
211 | -\item[User Goals]{The User wants to publish flashcards for this class, and | |
203 | +\item[User Goals]{The user wants to publish flashcards for this class, and | |
212 | 204 | read the flashcards for this class that are published by other users.} |
213 | 205 | |
214 | 206 | \item[Primary Actor]{User (student)} |
... | ... | @@ -225,9 +217,9 @@ Login} |
225 | 217 | \begin{itemize} |
226 | 218 | \itemsep1pt\parskip0pt\parsep0pt |
227 | 219 | \item |
228 | - {The User has registered an account.} | |
220 | + {The user has registered an account.} | |
229 | 221 | \item |
230 | - {The User has successfully logged in to the application.} | |
222 | + {The user has successfully logged in to the application.} | |
231 | 223 | \end{itemize} |
232 | 224 | |
233 | 225 | \item[Post-conditions] |
... | ... | @@ -235,25 +227,25 @@ Login} |
235 | 227 | \begin{itemize} |
236 | 228 | \itemsep1pt\parskip0pt\parsep0pt |
237 | 229 | \item |
238 | - {The User can view the flashcards being published for the class and | |
230 | + {The user can view the flashcards being published for the class and | |
239 | 231 | add them to their deck.} |
240 | 232 | \item |
241 | - {The User can publish flashcards to be viewed and added by other users | |
233 | + {The user can publish flashcards to be viewed and added by other users | |
242 | 234 | in the same class.} |
243 | 235 | \end{itemize} |
244 | 236 | |
245 | -\item[Trigger]{The User wants to make flashcards and view flashcards for a class.} | |
237 | +\item[Trigger]{The user wants to make flashcards and view flashcards for a class.} | |
246 | 238 | |
247 | 239 | \item[Workflow] |
248 | 240 | |
249 | 241 | \begin{enumerate} |
250 | 242 | \itemsep1pt\parskip0pt\parsep0pt |
251 | 243 | \item |
252 | - {The User shall click "Add a Class" from the drop down menu in the upper left hand corner.} | |
244 | + {The user shall click "Add a Class" from the "Classes" drop down menu in the upper left hand corner.} | |
253 | 245 | \item |
254 | 246 | {The frontend shall navigate to the new page described by addclass.html.} |
255 | 247 | \item |
256 | - {The User shall begin to type the class department code, course title, course number, or instructor in the text box.} | |
248 | + {The user shall begin to type the class department code, course title, course number, or instructor in the text box.} | |
257 | 249 | \item |
258 | 250 | {The frontend in ClassAddController.js shall send a get request to the backend at api/sections/search/.} |
259 | 251 | \item |
... | ... | @@ -261,11 +253,11 @@ Login} |
261 | 253 | \item |
262 | 254 | {The frontend shall show the classes that the backend has found.} |
263 | 255 | \item |
264 | - {The User shall select from the classes the one that they want to add.} | |
256 | + {The user shall select from the classes the one that they want to add.} | |
265 | 257 | \item |
266 | 258 | {The frontend shall enable the 'Add Class' button.} |
267 | 259 | \item |
268 | - {The User shall click 'Add Class' button to the right of the text box.} | |
260 | + {The user shall click 'Add Class' button to the right of the text box.} | |
269 | 261 | \item |
270 | 262 | {The frontend shall send a post request to api/sections/.} |
271 | 263 | \item |
... | ... | @@ -273,7 +265,7 @@ Login} |
273 | 265 | \item |
274 | 266 | {The backend in models.py in function enroll shall add the class to the User's sections.} |
275 | 267 | \item |
276 | - {The frontend shall redirect the User to the class's Live Feed using the ClassAddController.js.} | |
268 | + {The frontend shall redirect the user to the class's Live Feed using the ClassAddController.js.} | |
277 | 269 | \item |
278 | 270 | {The frontend shall present the live feed for the class by using feed.html and FeedController.js.} |
279 | 271 | |
... | ... | @@ -285,20 +277,20 @@ Login} |
285 | 277 | \itemsep1pt\parskip0pt\parsep0pt |
286 | 278 | \item []{ Precondition: The class has a whitelist, a whitelist is a list of email addresses that can add themselves to the class.\\} |
287 | 279 | \item |
288 | - {The User shall select their desired class, which has a whitelist, by clicking on ``Add Class''.} | |
280 | + {The user shall select their desired class, which has a whitelist, by clicking on ``Add Class''.} | |
289 | 281 | \item |
290 | 282 | {The frontend shall submit a POST request to /api/me/sections with |
291 | 283 | the course ID that the User typed. } |
292 | 284 | \item |
293 | 285 | {The backend shall check if there is a whitelist for the class that the |
294 | - User has selected in models.py at function is\_whitelisted.} | |
286 | + user has selected in models.py at function is\_whitelisted.} | |
295 | 287 | \item |
296 | 288 | {The backend shall check if the user is on the whitelist in models.py |
297 | 289 | in function is\_user\_on\_whitelist.} |
298 | 290 | \item |
299 | - {The backend shall add the User to the class following steps above.} | |
291 | + {The backend shall add the user to the class following steps above.} | |
300 | 292 | \item |
301 | - {The frontend shall redirect the User to the class's live feed followed the last step in the Workflow above.} | |
293 | + {The frontend shall redirect the user to the class's live feed followed the last step in the Workflow above.} | |
302 | 294 | \end{enumerate} |
303 | 295 | |
304 | 296 | \item[Alternate Workflow: User is not whitelisted.] |
... | ... | @@ -322,14 +314,14 @@ Login} |
322 | 314 | \subsection{[A4] Drop a Class} |
323 | 315 | |
324 | 316 | \begin{description} |
325 | -\item[Description]{The User can remove themselves from a course he/she is | |
317 | +\item[Description]{The user can remove themselves from a course he/she is | |
326 | 318 | registered to} |
327 | 319 | |
328 | -\item[Desired Outcome]{The User has dropped the class and no longer need | |
320 | +\item[Desired Outcome]{The user has dropped the class and no longer need | |
329 | 321 | access to the flashcards for said class. This means they can no longer |
330 | 322 | see the flashcards associated to the class that they dropped } |
331 | 323 | \\ |
332 | -\item[User Goals]{The User shall not have access to a class and the | |
324 | +\item[User Goals]{The user shall not have access to a class and the | |
333 | 325 | flashcards associated with that class. They will no longer see the class |
334 | 326 | listed in their drop down menu.} |
335 | 327 | |
... | ... | @@ -347,13 +339,13 @@ Login, {[}A3{]} Add a Class} |
347 | 339 | \begin{itemize} |
348 | 340 | \itemsep1pt\parskip0pt\parsep0pt |
349 | 341 | \item |
350 | - {The User has a valid account.} | |
342 | + {The user has a valid account.} | |
351 | 343 | \item |
352 | - {The User is logged in.} | |
344 | + {The user is logged in.} | |
353 | 345 | \item |
354 | - {The User has enrolled in at least one class.} | |
346 | + {The user has enrolled in at least one class.} | |
355 | 347 | \item |
356 | - {The User has navigated to the Settings page.} | |
348 | + {The user has navigated to the Settings page.} | |
357 | 349 | \end{itemize} |
358 | 350 | |
359 | 351 | \item[Post-conditions]{} |
... | ... | @@ -361,25 +353,25 @@ Login, {[}A3{]} Add a Class} |
361 | 353 | \begin{itemize} |
362 | 354 | \itemsep1pt\parskip0pt\parsep0pt |
363 | 355 | \item |
364 | - {User shall no longer have access to dropped class, or associated | |
356 | + {The user shall no longer have access to dropped class, or associated | |
365 | 357 | flashcards} |
366 | 358 | \end{itemize} |
367 | 359 | |
368 | -\item[Trigger]{User no longer wants to see flashcards from that class.} | |
360 | +\item[Trigger]{The user no longer wants to see flashcards from that class.} | |
369 | 361 | |
370 | 362 | \item[Workflow] |
371 | 363 | |
372 | 364 | \begin{enumerate} |
373 | 365 | \itemsep1pt\parskip0pt\parsep0pt |
374 | 366 | \item |
375 | - {The User shall click `Drop' button to the right of the class they wish to drop.} | |
367 | + {The user shall click `Drop' button to the right of the class they wish to drop.} | |
376 | 368 | \item |
377 | 369 | {The frontend shall submit a DELETE request to |
378 | 370 | /api/me/sections/\textless{}section ID number\textgreater{}.} |
379 | 371 | \item |
380 | - {The backend shall check that the User is enrolled in the section in models.py in function drop.} | |
372 | + {The backend shall check that the user is enrolled in the section in models.py in function drop.} | |
381 | 373 | \item |
382 | - {The server shall remove the selected class from a user's list of section in models.py in function drop. } | |
374 | + {The server shall remove the selected class from a user's list of section in models.py in function drop.} | |
383 | 375 | \item |
384 | 376 | {The frontend shall remove the class from the list in setting and show toast reading 'Dropped'.} |
385 | 377 | \end{enumerate} |
... | ... | @@ -391,10 +383,10 @@ Login, {[}A3{]} Add a Class} |
391 | 383 | \subsection{[A5] Password change} |
392 | 384 | |
393 | 385 | \begin{description} |
394 | -\item[Description]{The User shall be able to change the password for their | |
386 | +\item[Description]{The user shall be able to change the password for their | |
395 | 387 | account in the account settings. } |
396 | 388 | |
397 | -\item[Desired Outcome]{The User's password shall be changed and the User | |
389 | +\item[Desired Outcome]{The user's password shall be changed and the User | |
398 | 390 | shall be able to log in with the new password in the future} |
399 | 391 | \\\\ |
400 | 392 | \item[User Goals]{The User wants to use a different password in the future} |
... | ... | @@ -404,7 +396,7 @@ shall be able to log in with the new password in the future} |
404 | 396 | \item[Dependency Use Cases]{{[}A1{]} User Registration, {[}A2{]} User |
405 | 397 | Login} |
406 | 398 | \\ |
407 | -\item[Details]{The User provides their current password and a new password | |
399 | +\item[Details]{The user provides their current password and a new password | |
408 | 400 | in a form. If the current password is correct, the system updates their |
409 | 401 | password to the requested new password.} |
410 | 402 | |
... | ... | @@ -417,13 +409,13 @@ password to the requested new password.} |
417 | 409 | \begin{itemize} |
418 | 410 | \itemsep1pt\parskip0pt\parsep0pt |
419 | 411 | \item |
420 | - {The User has registered an account.} | |
412 | + {The user has registered an account.} | |
421 | 413 | \item |
422 | - {The User has logged in.} | |
414 | + {The user has logged in.} | |
423 | 415 | \item |
424 | - {The User knows their current password.} | |
416 | + {The user knows their current password.} | |
425 | 417 | \item |
426 | - {The User has navigated to the Settings page.} | |
418 | + {The user has navigated to the Settings page.} | |
427 | 419 | \end{itemize} |
428 | 420 | |
429 | 421 | \item[Post-conditions] |
... | ... | @@ -431,24 +423,24 @@ password to the requested new password.} |
431 | 423 | \begin{itemize} |
432 | 424 | \itemsep1pt\parskip0pt\parsep0pt |
433 | 425 | \item |
434 | - {The User's password is changed} | |
426 | + {The user's password is changed} | |
435 | 427 | \item |
436 | - {The User can log in with the new password} | |
428 | + {The user can log in with the new password} | |
437 | 429 | \end{itemize} |
438 | 430 | |
439 | -\item[Trigger]{The User wants to change their password.} | |
431 | +\item[Trigger]{The user wants to change their password.} | |
440 | 432 | |
441 | 433 | \item[Error Handling] |
442 | 434 | \begin{description} |
443 | 435 | \item[\small Missing Fields] \begin{itemize} |
444 | -\item The client shall enforce required fields | |
445 | -\item The server will return an HTTP Bad Request error to the client. | |
436 | +\item The frontend shall enforce required fields | |
437 | +\item The backend will return an HTTP Bad Request error to the frontend. | |
446 | 438 | \end{itemize} |
447 | 439 | \item[\small Incorrect Old Password] \begin{itemize} |
448 | -\item The server will return an HTTP Forbidden error to the client. | |
440 | +\item The backend will return an HTTP Forbidden error to the frontend. | |
449 | 441 | \end{itemize} |
450 | 442 | \item[\small Blank New Password] \begin{itemize} |
451 | -\item The server will return an HTTP Bad Request error to the client. | |
443 | +\item The backend will return an HTTP Bad Request error to the frontend. | |
452 | 444 | \end{itemize} |
453 | 445 | \end{description} |
454 | 446 | \item[Workflow] |
... | ... | @@ -459,7 +451,7 @@ password to the requested new password.} |
459 | 451 | {The frontend shall render a form that requires the user to enter their |
460 | 452 | old password and new password from settings.html} |
461 | 453 | \item |
462 | - {The User shall type in their current password, the desired new | |
454 | + {The user shall type in their current password, the desired new | |
463 | 455 | password, and retype the desired new password to confirm.} |
464 | 456 | \item |
465 | 457 | {The frontend shall submit the data to the server by sending a PATCH |
... | ... | @@ -470,7 +462,7 @@ password to the requested new password.} |
470 | 462 | {The backend shall check the user's current password in views.py in function patch under UserDetail.} |
471 | 463 | \item The backend shall update the user's current password in views.py in function patch under UserDetail. |
472 | 464 | \item |
473 | - {The frontend shall present a toast reading "Password successfully changed" and redirect the User to the Add a Class page.} | |
465 | + {The frontend shall present a toast reading "Password successfully changed" and redirect the user to the Add a Class page.} | |
474 | 466 | \end{enumerate} |
475 | 467 | \end{description} |
476 | 468 | {} |
... | ... | @@ -482,13 +474,13 @@ password to the requested new password.} |
482 | 474 | \subsection{[A6] Password reset} |
483 | 475 | |
484 | 476 | \begin{description} |
485 | -\item[Description]{The User shall be able to reset their password without | |
477 | +\item[Description]{The user shall be able to reset their password without | |
486 | 478 | being logged in.} |
487 | 479 | |
488 | -\item[Desired Outcome]{The User's password shall be changed to one that | |
480 | +\item[Desired Outcome]{The user's password shall be changed to one that | |
489 | 481 | they remember.} |
490 | 482 | \\ |
491 | -\item[User Goals]{The User will be able to log into the site with a new password.} | |
483 | +\item[User Goals]{The user will be able to log into the site with a new password.} | |
492 | 484 | |
493 | 485 | \item[Primary Actor]{User (student)} |
494 | 486 | |
... | ... | @@ -497,7 +489,7 @@ they remember.} |
497 | 489 | \item[Details]{The user provides their email in a password reset form. If |
498 | 490 | the address is valid, the site sends a password reset link with a random |
499 | 491 | token to that address. If the address is invalid, the site does not send |
500 | -a link. For security reasons, we do not reveal to the user whether the | |
492 | +a link. For security reasons, we do not reveal to the User whether the | |
501 | 493 | email address was valid, and we expire the link after 24 hours. When a |
502 | 494 | user visits the link emailed to them, they are able to specify a new |
503 | 495 | password in a form. When they submit the form, their password is updated |
... | ... | @@ -512,11 +504,11 @@ if the token is correct. } |
512 | 504 | \begin{itemize} |
513 | 505 | \itemsep1pt\parskip0pt\parsep0pt |
514 | 506 | \item |
515 | - {The User has created an account before.} | |
507 | + {The user has created an account before.} | |
516 | 508 | \item |
517 | - {The User knows the email address attached to their account for our application.} | |
509 | + {The user knows the email address attached to their account for our application.} | |
518 | 510 | \item |
519 | - {The User can log into their email account.} | |
511 | + {The user can log into their email account.} | |
520 | 512 | \end{itemize} |
521 | 513 | |
522 | 514 | \item[Post-conditions] |
... | ... | @@ -524,12 +516,12 @@ if the token is correct. } |
524 | 516 | \begin{itemize} |
525 | 517 | \itemsep1pt\parskip0pt\parsep0pt |
526 | 518 | \item |
527 | - {The User's password is changed.} | |
519 | + {The user's password is changed.} | |
528 | 520 | \item |
529 | - {The User can log in with the new password.} | |
521 | + {The user can log in with the new password.} | |
530 | 522 | \end{itemize} |
531 | 523 | |
532 | -\item[Trigger]{The User wants to log into the site but does not know their password.} | |
524 | +\item[Trigger]{The user wants to log into the site but does not know their password.} | |
533 | 525 | \item[Workflow] |
534 | 526 | |
535 | 527 | \begin{enumerate} |
... | ... | @@ -539,7 +531,7 @@ if the token is correct. } |
539 | 531 | \item |
540 | 532 | {The frontend shall render the password reset page from the template requestpasswordreset.html.} |
541 | 533 | \item |
542 | - {The User shall type in their email address for their account and click the "Reset" button.} | |
534 | + {The user shall type in their email address for their account and click the "Reset" button.} | |
543 | 535 | \item |
544 | 536 | {The frontend shall send a POST request to /api/request\_password\_reset/ from RequestResetController.js.} |
545 | 537 | \item |
... | ... | @@ -549,14 +541,13 @@ if the token is correct. } |
549 | 541 | {The backend shal send an email to the User with a link to the password reset page in models.py in function |
550 | 542 | request\_password\_reset.} |
551 | 543 | \item |
552 | - {The User will navigate to their email account, open the email, and click the link.} | |
544 | + {The user will navigate to their email account, open the email, and click the link.} | |
553 | 545 | \item |
554 | 546 | {The frontend shall render the password reset page from the template resetpassword.html.} |
555 | 547 | \item |
556 | - {The User shall type in their new password and re-type it to confirm it.} | |
548 | + {The user shall type in their new password and re-type it to confirm it.} | |
557 | 549 | \item |
558 | - {The frontend shall check if the new password is long enough and if the confirmed password is the same as | |
559 | - the new password in ResetPasswordController.js.} | |
550 | + {The frontend shall check if the new password is long enough and if the confirmed password is the same as the new password in ResetPasswordController.js.} | |
560 | 551 | \item |
561 | 552 | {The frontend shall send a POST request to /api/reset\_password from ResetPasswordController.js.} |
562 | 553 | \item |
... | ... | @@ -564,7 +555,7 @@ if the token is correct. } |
564 | 555 | \item |
565 | 556 | {The frontend shall redirect the User to the login page. } |
566 | 557 | \item |
567 | - {The User shall use their new password to login to the application.} | |
558 | + {The user shall use their new password to login to the application.} | |
568 | 559 | \end{enumerate} |
569 | 560 | \end{description} |
570 | 561 | \newpage |
... | ... | @@ -574,16 +565,12 @@ if the token is correct. } |
574 | 565 | \subsection{[A7] Limit Student Access to Courses} |
575 | 566 | |
576 | 567 | \begin{description} |
577 | -\item[Description]{The instructor shall be able to limit access to the | |
578 | -courses that he is in charge of by whitelisting only those students that | |
579 | -are actually in the class.} | |
568 | +\item[Description]{The instructor shall be able to limit access to the courses that they are in charge of by whitelisting only those students that are actually in the class.} | |
580 | 569 | |
581 | -\item[Desired Outcome]{The class will have limited access and only those | |
582 | -users who are whitelisted may enroll in the class.} | |
570 | +\item[Desired Outcome]{The class will have limited access and only those Users who are whitelisted may enroll in the class.} | |
583 | 571 | \\ |
584 | -\item[User Goals]{The instructor wants to limit access to his class so only | |
585 | -the students who are actually in his class participate, and nobody | |
586 | -else.} | |
572 | +\item[User Goals]{The instructor wants to limit access to their class so only | |
573 | +the students who are actually in their class participate, and nobody else.} | |
587 | 574 | |
588 | 575 | \item[Primary Actor]{Instructor} |
589 | 576 | |
... | ... | @@ -599,7 +586,7 @@ Login} |
599 | 586 | \begin{itemize} |
600 | 587 | \itemsep1pt\parskip0pt\parsep0pt |
601 | 588 | \item |
602 | - {User has valid instructor's account} | |
589 | + {The user has valid instructor's account} | |
603 | 590 | \end{itemize} |
604 | 591 | |
605 | 592 | \item[Post-conditions] |
... | ... | @@ -611,15 +598,15 @@ Login} |
611 | 598 | \end{itemize} |
612 | 599 | |
613 | 600 | \item[Trigger]{The course instructor wants to limit the students who |
614 | -can add his class on our application.} | |
601 | +can add their class on our application.} | |
615 | 602 | |
616 | 603 | \item[Workflow] |
617 | 604 | |
618 | 605 | \begin{enumerate} |
619 | 606 | \itemsep1pt\parskip0pt\parsep0pt |
620 | 607 | \item |
621 | - {The instructor emails the administrators from his UCSD email address | |
622 | - and requests to limit access to his course. He provides a list of | |
608 | + {The instructor emails the administrators from their UCSD email address | |
609 | + and requests to limit access to their course. They provides a list of | |
623 | 610 | emails of the students that are to be whitelisted.} |
624 | 611 | \item |
625 | 612 | {The administrators visit a custom admin page, select the course, and |
... | ... | @@ -630,7 +617,7 @@ can add his class on our application.} |
630 | 617 | attaching it to the section taught by the instructor.} |
631 | 618 | \item |
632 | 619 | {The backend shall add any existing users whose email addresses appear |
633 | - in the whitelist to the class. } | |
620 | + in the whitelist to the class.} | |
634 | 621 | \end{enumerate} |
635 | 622 | \end{description} |
636 | 623 | \newpage |
... | ... | @@ -638,14 +625,14 @@ can add his class on our application.} |
638 | 625 | \subsection{[A8] User Logout} |
639 | 626 | |
640 | 627 | \begin{description} |
641 | -\item[Description]{The User shall be able to log out of his/her account on | |
628 | +\item[Description]{The user shall be able to log out of their account on | |
642 | 629 | the site.} |
643 | 630 | |
644 | -\item[Desired Outcome]{The User's information and data will no longer be | |
631 | +\item[Desired Outcome]{The user's information and data will no longer be | |
645 | 632 | accessible after logging out. } |
646 | 633 | \\ |
647 | -\item[User Goals]{The User is done with his/her session of using the | |
648 | -website, and wants to make sure others cannot access the data in his/her | |
634 | +\item[User Goals]{The user is done with his/her session of using the | |
635 | +website, and wants to make sure others cannot access the data in their | |
649 | 636 | account.} |
650 | 637 | |
651 | 638 | \item[Primary Actor]{User (student)} |
... | ... | @@ -660,16 +647,16 @@ account.} |
660 | 647 | |
661 | 648 | \item[Post-conditions]{}{The user's data can no longer be accessed.} |
662 | 649 | |
663 | -\item[Trigger]{The User no longer wants to be logged into the application.} | |
650 | +\item[Trigger]{The user no longer wants to be logged into the application.} | |
664 | 651 | |
665 | 652 | \item[Workflow] |
666 | 653 | |
667 | 654 | \begin{enumerate} |
668 | 655 | \itemsep1pt\parskip0pt\parsep0pt |
669 | 656 | \item |
670 | - {The User clicks the 'Logout' button in the upper right hand corner.} | |
657 | + {The user clicks the 'Logout' button in the upper right hand corner.} | |
671 | 658 | \item |
672 | - {The backend shall log the User out using the Django logout feature.} | |
659 | + {The backend shall log the user out using the Django logout feature.} | |
673 | 660 | \item |
674 | 661 | {The frontend renders the application login page using login.html.} |
675 | 662 | \end{enumerate} |
... | ... | @@ -683,12 +670,12 @@ account.} |
683 | 670 | \subsection{[A9] Contact Admin} |
684 | 671 | |
685 | 672 | \begin{description} |
686 | -\item[Description]{The User shall be able to contact the admin.} | |
673 | +\item[Description]{The user shall be able to contact the admin.} | |
687 | 674 | |
688 | -\item[Desired Outcome]{The User shall send a message to the admin; the | |
675 | +\item[Desired Outcome]{The user shall send a message to the admin; the | |
689 | 676 | admin shall receive the message.} |
690 | 677 | |
691 | -{User Goals:}{The User sends a message to the admin.} | |
678 | +{User Goals:}{The user sends a message to the admin.} | |
692 | 679 | |
693 | 680 | \item[Primary Actor]{User} |
694 | 681 | |
... | ... | @@ -702,7 +689,7 @@ admin shall receive the message.} |
702 | 689 | |
703 | 690 | \item[Post-conditions]{The admin receives the user's message.} |
704 | 691 | |
705 | -\item[Trigger]{The User wants to contact the adiminstators of the site with | |
692 | +\item[Trigger]{The user wants to contact the adiminstators of the site with | |
706 | 693 | bug reports, questions, or praise. } |
707 | 694 | |
708 | 695 | \item[Workflow] |
... | ... | @@ -710,17 +697,17 @@ bug reports, questions, or praise. } |
710 | 697 | \begin{enumerate} |
711 | 698 | \itemsep1pt\parskip0pt\parsep0pt |
712 | 699 | \item |
713 | - {The User shall click the '?' button in the right corner of the navigation bar.} | |
700 | + {The user shall click the '?' button in the right corner of the navigation bar.} | |
714 | 701 | \item |
715 | 702 | {The frontend shall render the page using the help.html template.} |
716 | 703 | \item |
717 | - {The User shall scroll to the bottom of the page.} | |
704 | + {The user shall scroll to the bottom of the page.} | |
718 | 705 | \item |
719 | - {The User shall click the text reading "Send Us an Email!"} | |
706 | + {The user shall click the text reading "Send Us an Email!"} | |
720 | 707 | \item |
721 | 708 | {The frontend shall open Microsoft Outlook or a similar application using the HelpController.js.} |
722 | 709 | \item |
723 | - {The User shall see our email address in the recipients text box.} | |
710 | + {The user shall see our email address in the recipients text box.} | |
724 | 711 | \end{enumerate} |
725 | 712 | \end{description} |
726 | 713 | \newpage |
... | ... | @@ -730,13 +717,13 @@ bug reports, questions, or praise. } |
730 | 717 | \subsection{[F1] Push Flashcard} |
731 | 718 | |
732 | 719 | \begin{description} |
733 | -\item[Description]{The User shall be able to create a flashcard with their | |
720 | +\item[Description]{The user shall be able to create a flashcard with their | |
734 | 721 | input. } |
735 | 722 | |
736 | -\item[Desired Outcome]{The User shall have the flashcard added to their own | |
723 | +\item[Desired Outcome]{The user shall have the flashcard added to their own | |
737 | 724 | deck and the Live Feed. } |
738 | 725 | \\ |
739 | -\item[User Goals]{The User will see their flashcard in their deck and the | |
726 | +\item[User Goals]{The user will see their flashcard in their deck and the | |
740 | 727 | flashcard will be shared with others. } |
741 | 728 | |
742 | 729 | \item[Dependency Use Cases]{{[}A1{]} User Registration, {[}A2{]} User |
... | ... | @@ -747,11 +734,11 @@ Login, {[}A3{]} Add a Class} |
747 | 734 | \begin{itemize} |
748 | 735 | \itemsep1pt\parskip0pt\parsep0pt |
749 | 736 | \item |
750 | - {The User has an account.} | |
737 | + {The user has an account.} | |
751 | 738 | \item |
752 | - {The User has added at least one class.} | |
739 | + {The user has added at least one class.} | |
753 | 740 | \item |
754 | - {The User has navigated to the live feed for a class.} | |
741 | + {The user has navigated to the live feed for a class.} | |
755 | 742 | \end{itemize} |
756 | 743 | |
757 | 744 | \item[Post-conditions] |
... | ... | @@ -759,31 +746,31 @@ Login, {[}A3{]} Add a Class} |
759 | 746 | \begin{itemize} |
760 | 747 | \itemsep1pt\parskip0pt\parsep0pt |
761 | 748 | \item |
762 | - {The User has flashcard added to their deck.} | |
749 | + {The user has flashcard added to their deck.} | |
763 | 750 | \item |
764 | 751 | {The Flashcard is shown in the Live Feed.} |
765 | 752 | \item |
766 | 753 | {Other users can add this flashcard to their decks.} |
767 | 754 | \end{itemize} |
768 | 755 | |
769 | -\item[Trigger]{The User wants to make a flashcard to study.} | |
756 | +\item[Trigger]{The user wants to make a flashcard to study.} | |
770 | 757 | |
771 | 758 | \item[Workflow] |
772 | 759 | |
773 | 760 | \begin{enumerate} |
774 | 761 | \itemsep1pt\parskip0pt\parsep0pt |
775 | 762 | \item |
776 | - {The User is at the live feed for the class from feed.html.} | |
763 | + {The user is at the live feed for the class from feed.html.} | |
777 | 764 | \item |
778 | - {The User shall click on the '+' button at the bottom right of the screen.} | |
765 | + {The user shall click on the '+' button at the bottom right of the screen.} | |
779 | 766 | \item |
780 | 767 | {The frontend shall present a modal for inputting the flashcard text to the User.} |
781 | 768 | \item |
782 | - {The User shall type in the content of their flashcard.} | |
769 | + {The user shall type in the content of their flashcard.} | |
783 | 770 | \item |
784 | - {The User shall highlight keywords in the flashcard text.} | |
771 | + {The user shall highlight keywords in the flashcard text.} | |
785 | 772 | \item |
786 | - {The User shall click on the `Contribute' button.} | |
773 | + {The user shall click on the `Contribute' button.} | |
787 | 774 | \item {The frontend shall generate a POST request consisting of the flashcard text, |
788 | 775 | blanks, and material date, in JSON form in FeedController.js and send it to /api/flashcards/.} |
789 | 776 | \item |