feat(perf): borner les vues de liste, et choisir le motif une bonne fois
MNT-14. Chaque vue de liste faisait .all() sur sa table. L'audit evaluait l'impact a nul -- justement, a l'echelle d'une association etudiante -- et recommandait de choisir le motif maintenant plutot que de le retro-adapter plus tard. C'est ce que ceci est. Applique a list_users, list_evaluations et team_matches.list_matches. Pour cette derniere, la pagination borne aussi la boucle sur les participants, qui est le N+1 que le constat designait comme le premier a se degrader. Trois decisions, parce que ce sont celles qui se prennent deux fois differemment sinon. error_out=False : les numeros de page arrivent par l'URL, donc ?page=999 est une chose qu'on tape ou qu'un signet perime contient. Le defaut de Flask-SQLAlchemy y repond par un 404, ce qui est deroutant pour quelqu'un qui est simplement alle une page trop loin. Un plafond sur per_page : c'est aussi un parametre d'URL, et sans plafond ?per_page=100000 redonne a la main exactement la requete non bornee que la pagination existe pour empecher. page_url est un global Jinja plutot qu'une valeur que chaque vue passe. Ce qui se rate avec des liens de pagination, c'est le reste de la chaine de requete : la liste d'evaluations porte sort et order, celle des matchs d'equipe porte team_id, et un lien qui les perd reinitialise silencieusement la vue que la personne regardait. Les deux tests qui l'epinglent tombent si page_url cesse de les recopier -- verifie par mutation. Les tris sont completes par une cle unique : une requete paginee sans ORDER BY stable peut montrer la meme ligne deux fois et jamais une autre. Au passage, huit entrees fuzzy corrigees dans les catalogues, dont deux laissees par le commit SEC-16 : une entree fuzzy est ignoree a l'execution, donc ces messages retombaient en anglais. Co-Authored-By: Claude Opus 5 <[email protected]>
This commit is contained in:
Binary file not shown.
@@ -8,7 +8,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: team-tryouts VERSION\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2026-08-11 18:57-0400\n"
|
||||
"POT-Creation-Date: 2026-08-11 20:15-0400\n"
|
||||
"PO-Revision-Date: 2026-08-07 20:22-0400\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language: en\n"
|
||||
@@ -19,7 +19,7 @@ msgstr ""
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Generated-By: Babel 2.18.0\n"
|
||||
|
||||
#: app/app.py:555
|
||||
#: app/app.py:562
|
||||
msgid "Please log in to access this page."
|
||||
msgstr "Please log in to access this page."
|
||||
|
||||
@@ -90,95 +90,127 @@ msgstr "Player must be selected."
|
||||
msgid "Notes must be 2000 characters or less."
|
||||
msgstr "Notes must be 2000 characters or less."
|
||||
|
||||
#: app/validators.py:476
|
||||
#: app/validators.py:482
|
||||
msgid "Date must be in YYYY-MM-DD format."
|
||||
msgstr "Date must be in YYYY-MM-DD format."
|
||||
|
||||
#: app/validators.py:481 app/validators.py:508
|
||||
#: app/validators.py:483
|
||||
msgid "A date is required."
|
||||
msgstr "A date is required."
|
||||
|
||||
#: app/validators.py:489 app/validators.py:554
|
||||
msgid "Start time must be in HH:MM format."
|
||||
msgstr "Start time must be in HH:MM format."
|
||||
|
||||
#: app/validators.py:485
|
||||
#: app/validators.py:490 app/validators.py:555
|
||||
msgid "A start time is required."
|
||||
msgstr "A start time is required."
|
||||
|
||||
#: app/validators.py:496
|
||||
msgid "End time must be in HH:MM format."
|
||||
msgstr "End time must be in HH:MM format."
|
||||
|
||||
#: app/validators.py:488
|
||||
#: app/validators.py:497
|
||||
msgid "An end time is required."
|
||||
msgstr "An end time is required."
|
||||
|
||||
#: app/validators.py:501
|
||||
msgid "Points must be 2000 characters or less."
|
||||
msgstr "Points must be 2000 characters or less."
|
||||
|
||||
#: app/validators.py:504
|
||||
#: app/validators.py:516
|
||||
msgid "End time must be after start time."
|
||||
msgstr "End time must be after start time."
|
||||
|
||||
#: app/validators.py:545 app/validators.py:547
|
||||
msgid "Day must be 0 (Monday) to 6 (Sunday)."
|
||||
msgstr "Day must be 0 (Monday) to 6 (Sunday)."
|
||||
|
||||
#: app/validators.py:535
|
||||
#: app/validators.py:548
|
||||
msgid "A day is required."
|
||||
msgstr "A day is required."
|
||||
|
||||
#: app/validators.py:583
|
||||
msgid "Player selection is malformed."
|
||||
msgstr "Player selection is malformed."
|
||||
|
||||
#: app/validators.py:561 app/validators.py:671
|
||||
#: app/validators.py:609 app/validators.py:719
|
||||
msgid "A title is required."
|
||||
msgstr "A title is required."
|
||||
|
||||
#: app/validators.py:570
|
||||
#: app/validators.py:618
|
||||
msgid "Invalid date format."
|
||||
msgstr "Invalid date format."
|
||||
|
||||
#: app/validators.py:575 app/validators.py:582
|
||||
#: app/validators.py:623 app/validators.py:630
|
||||
msgid "Invalid time format."
|
||||
msgstr "Invalid time format."
|
||||
|
||||
#: app/validators.py:576
|
||||
#: app/validators.py:624
|
||||
msgid "Start time is required. Please select a time slot."
|
||||
msgstr "Start time is required. Please select a time slot."
|
||||
|
||||
#: app/validators.py:590
|
||||
#: app/validators.py:638
|
||||
msgid "Unknown match status."
|
||||
msgstr "Unknown match status."
|
||||
|
||||
#: app/validators.py:606
|
||||
#: app/validators.py:654
|
||||
msgid "The end time must come after the start time."
|
||||
msgstr "The end time must come after the start time."
|
||||
|
||||
#: app/validators.py:620
|
||||
#: app/validators.py:668
|
||||
msgid "Unknown match type."
|
||||
msgstr "Unknown match type."
|
||||
|
||||
#: app/validators.py:632
|
||||
#: app/validators.py:680
|
||||
msgid "A team cannot play against itself."
|
||||
msgstr "A team cannot play against itself."
|
||||
|
||||
#: app/validators.py:680
|
||||
#: app/validators.py:728
|
||||
msgid "Unknown game."
|
||||
msgstr "Unknown game."
|
||||
|
||||
#: app/validators.py:685
|
||||
#: app/validators.py:733
|
||||
msgid "Invalid start date format."
|
||||
msgstr "Invalid start date format."
|
||||
|
||||
#: app/validators.py:686
|
||||
#: app/validators.py:734
|
||||
msgid "A start date is required."
|
||||
msgstr "A start date is required."
|
||||
|
||||
#: app/validators.py:692
|
||||
#: app/validators.py:740
|
||||
msgid "Invalid end date format."
|
||||
msgstr "Invalid end date format."
|
||||
|
||||
#: app/validators.py:700
|
||||
#: app/validators.py:748
|
||||
msgid "A tryout must allow at least one player."
|
||||
msgstr "A tryout must allow at least one player."
|
||||
|
||||
#: app/validators.py:703
|
||||
#: app/validators.py:751
|
||||
msgid "The player limit must be a whole number."
|
||||
msgstr "The player limit must be a whole number."
|
||||
|
||||
#: app/validators.py:715
|
||||
#: app/validators.py:763
|
||||
msgid "End date cannot be before start date."
|
||||
msgstr "End date cannot be before start date."
|
||||
|
||||
#: app/validators.py:724
|
||||
#: app/validators.py:790 app/validators.py:791
|
||||
msgid "Team name is required."
|
||||
msgstr "Team name is required."
|
||||
|
||||
#: app/validators.py:797
|
||||
msgid "Invalid coach selection."
|
||||
msgstr "Invalid coach selection."
|
||||
|
||||
#: app/validators.py:803
|
||||
msgid "Invalid manager selection."
|
||||
msgstr "Invalid manager selection."
|
||||
|
||||
#: app/validators.py:815
|
||||
msgid "Scores run from 1 to 10."
|
||||
msgstr "Scores run from 1 to 10."
|
||||
|
||||
#: app/validators.py:725
|
||||
#: app/validators.py:816
|
||||
msgid "A score must be a whole number from 1 to 10."
|
||||
msgstr "A score must be a whole number from 1 to 10."
|
||||
|
||||
@@ -203,11 +235,11 @@ msgstr ""
|
||||
msgid "Your registration could not be processed. Please try again."
|
||||
msgstr "Your registration could not be processed. Please try again."
|
||||
|
||||
#: app/routes/auth.py:388 app/routes/users/accounts.py:325
|
||||
#: app/routes/auth.py:388 app/routes/users/accounts.py:329
|
||||
msgid "Username already exists."
|
||||
msgstr "Username already exists."
|
||||
|
||||
#: app/routes/auth.py:392 app/routes/users/accounts.py:329
|
||||
#: app/routes/auth.py:392 app/routes/users/accounts.py:333
|
||||
msgid "Email already registered."
|
||||
msgstr "Email already registered."
|
||||
|
||||
@@ -251,7 +283,7 @@ msgstr "Discord account connected! Your profile has been pre-filled."
|
||||
msgid "You have been logged out."
|
||||
msgstr "You have been logged out."
|
||||
|
||||
#: app/routes/evaluations.py:36
|
||||
#: app/routes/evaluations.py:37
|
||||
msgid "You do not have permission to view evaluations."
|
||||
msgstr "You do not have permission to view evaluations."
|
||||
|
||||
@@ -279,9 +311,9 @@ msgstr "Evaluation submitted successfully!"
|
||||
msgid "Evaluation updated!"
|
||||
msgstr "Evaluation updated!"
|
||||
|
||||
#: app/routes/evaluations.py:210 app/routes/teams.py:289
|
||||
#: app/routes/teams.py:330 app/routes/teams.py:371 app/routes/teams.py:396
|
||||
#: app/routes/teams.py:421 app/routes/teams.py:456 app/routes/tryouts.py:437
|
||||
#: app/routes/evaluations.py:210 app/routes/teams.py:305
|
||||
#: app/routes/teams.py:346 app/routes/teams.py:387 app/routes/teams.py:412
|
||||
#: app/routes/teams.py:437 app/routes/teams.py:472 app/routes/tryouts.py:437
|
||||
#: app/routes/tryouts.py:453 app/routes/tryouts.py:473
|
||||
#: app/routes/tryouts.py:512 app/routes/tryouts.py:548
|
||||
#: app/routes/tryouts.py:567
|
||||
@@ -304,15 +336,15 @@ msgstr "This tryout has ended. Matches can no longer be created or modified."
|
||||
msgid "Match scheduled successfully!"
|
||||
msgstr "Match scheduled successfully!"
|
||||
|
||||
#: app/routes/matches.py:444 app/routes/team_matches.py:212
|
||||
#: app/routes/matches.py:444 app/routes/team_matches.py:220
|
||||
msgid "You do not have permission to edit this match."
|
||||
msgstr "You do not have permission to edit this match."
|
||||
|
||||
#: app/routes/matches.py:539 app/routes/team_matches.py:242
|
||||
#: app/routes/matches.py:539 app/routes/team_matches.py:250
|
||||
msgid "Match updated successfully!"
|
||||
msgstr "Match updated successfully!"
|
||||
|
||||
#: app/routes/matches.py:575 app/routes/team_matches.py:257
|
||||
#: app/routes/matches.py:575 app/routes/team_matches.py:265
|
||||
msgid "You do not have permission to delete this match."
|
||||
msgstr "You do not have permission to delete this match."
|
||||
|
||||
@@ -320,155 +352,151 @@ msgstr "You do not have permission to delete this match."
|
||||
msgid "This tryout has ended. Matches can no longer be deleted."
|
||||
msgstr "This tryout has ended. Matches can no longer be deleted."
|
||||
|
||||
#: app/routes/matches.py:591 app/routes/team_matches.py:261
|
||||
#: app/routes/matches.py:591 app/routes/team_matches.py:269
|
||||
msgid "Match deleted successfully."
|
||||
msgstr "Match deleted successfully."
|
||||
|
||||
#: app/routes/team_matches.py:105
|
||||
#: app/routes/team_matches.py:113
|
||||
msgid "You do not have permission to schedule matches for this team."
|
||||
msgstr "You do not have permission to schedule matches for this team."
|
||||
|
||||
#: app/routes/team_matches.py:197
|
||||
#: app/routes/team_matches.py:205
|
||||
#, python-format
|
||||
msgid "Team match \"%(title)s\" scheduled successfully!"
|
||||
msgstr "Team match \"%(title)s\" scheduled successfully!"
|
||||
|
||||
#: app/routes/teams.py:41
|
||||
#: app/routes/teams.py:44
|
||||
msgid "Use My Team(s) to view your teams."
|
||||
msgstr "Use My Team(s) to view your teams."
|
||||
|
||||
#: app/routes/teams.py:44
|
||||
#: app/routes/teams.py:47
|
||||
msgid "You do not have permission to view teams."
|
||||
msgstr "You do not have permission to view teams."
|
||||
|
||||
#: app/routes/teams.py:71
|
||||
#: app/routes/teams.py:74
|
||||
msgid "This page is for players."
|
||||
msgstr "This page is for players."
|
||||
|
||||
#: app/routes/teams.py:124
|
||||
#: app/routes/teams.py:150
|
||||
msgid "You do not have permission to create teams."
|
||||
msgstr "You do not have permission to create teams."
|
||||
|
||||
#: app/routes/teams.py:132 app/routes/teams.py:177
|
||||
msgid "Team name is required."
|
||||
msgstr "Team name is required."
|
||||
|
||||
#: app/routes/teams.py:137 app/routes/teams.py:182
|
||||
#: app/routes/teams.py:161 app/routes/teams.py:203
|
||||
#, python-format
|
||||
msgid "Team \"%(name)s\" already exists."
|
||||
msgstr "Team \"%(name)s\" already exists."
|
||||
|
||||
#: app/routes/teams.py:159
|
||||
#: app/routes/teams.py:182
|
||||
#, python-format
|
||||
msgid "Team \"%(name)s\" created successfully!"
|
||||
msgstr "Team \"%(name)s\" created successfully!"
|
||||
|
||||
#: app/routes/teams.py:169
|
||||
#: app/routes/teams.py:192
|
||||
msgid "You do not have permission to edit this team."
|
||||
msgstr "You do not have permission to edit this team."
|
||||
|
||||
#: app/routes/teams.py:220
|
||||
#: app/routes/teams.py:236
|
||||
#, python-format
|
||||
msgid "Team \"%(name)s\" updated successfully!"
|
||||
msgstr "Team \"%(name)s\" updated successfully!"
|
||||
|
||||
#: app/routes/teams.py:248
|
||||
#: app/routes/teams.py:264
|
||||
msgid "You do not have permission to delete teams."
|
||||
msgstr "You do not have permission to delete teams."
|
||||
|
||||
#: app/routes/teams.py:279
|
||||
#: app/routes/teams.py:295
|
||||
#, python-format
|
||||
msgid "Team \"%(name)s\" deleted successfully."
|
||||
msgstr "Team \"%(name)s\" deleted successfully."
|
||||
|
||||
#: app/routes/teams.py:294
|
||||
#: app/routes/teams.py:310
|
||||
msgid "Please select a coach."
|
||||
msgstr "Please select a coach."
|
||||
|
||||
#: app/routes/teams.py:299
|
||||
#: app/routes/teams.py:315
|
||||
msgid "Only coaches can be assigned as coach."
|
||||
msgstr "Only coaches can be assigned as coach."
|
||||
|
||||
#: app/routes/teams.py:305
|
||||
#: app/routes/teams.py:321
|
||||
#, python-format
|
||||
msgid "%(username)s is already a coach of %(name)s."
|
||||
msgstr "%(username)s is already a coach of %(name)s."
|
||||
|
||||
#: app/routes/teams.py:318
|
||||
#: app/routes/teams.py:334
|
||||
#, python-format
|
||||
msgid "%(username)s added as coach of %(name)s."
|
||||
msgstr "%(username)s added as coach of %(name)s."
|
||||
|
||||
#: app/routes/teams.py:335
|
||||
#: app/routes/teams.py:351
|
||||
msgid "Please select a manager."
|
||||
msgstr "Please select a manager."
|
||||
|
||||
#: app/routes/teams.py:340
|
||||
#: app/routes/teams.py:356
|
||||
msgid "Only managers can be assigned as manager."
|
||||
msgstr "Only managers can be assigned as manager."
|
||||
|
||||
#: app/routes/teams.py:346
|
||||
#: app/routes/teams.py:362
|
||||
#, python-format
|
||||
msgid "%(username)s is already a manager of %(name)s."
|
||||
msgstr "%(username)s is already a manager of %(name)s."
|
||||
|
||||
#: app/routes/teams.py:359
|
||||
#: app/routes/teams.py:375
|
||||
#, python-format
|
||||
msgid "%(username)s added as manager of %(name)s."
|
||||
msgstr "%(username)s added as manager of %(name)s."
|
||||
|
||||
#: app/routes/teams.py:386
|
||||
#: app/routes/teams.py:402
|
||||
#, python-format
|
||||
msgid "Coach removed from %(name)s."
|
||||
msgstr "Coach removed from %(name)s."
|
||||
|
||||
#: app/routes/teams.py:411
|
||||
#: app/routes/teams.py:427
|
||||
#, python-format
|
||||
msgid "Manager removed from %(name)s."
|
||||
msgstr "Manager removed from %(name)s."
|
||||
|
||||
#: app/routes/teams.py:427 app/routes/tryouts.py:477 app/routes/tryouts.py:578
|
||||
#: app/routes/teams.py:443 app/routes/tryouts.py:477 app/routes/tryouts.py:578
|
||||
msgid "Please select a player."
|
||||
msgstr "Please select a player."
|
||||
|
||||
#: app/routes/teams.py:432
|
||||
#: app/routes/teams.py:448
|
||||
msgid "Can only assign players to teams."
|
||||
msgstr "Can only assign players to teams."
|
||||
|
||||
#: app/routes/teams.py:438
|
||||
#: app/routes/teams.py:454
|
||||
#, python-format
|
||||
msgid "%(username)s is already on %(name)s."
|
||||
msgstr "%(username)s is already on %(name)s."
|
||||
|
||||
#: app/routes/teams.py:446
|
||||
#: app/routes/teams.py:462
|
||||
#, python-format
|
||||
msgid "%(username)s added to %(name)s!"
|
||||
msgstr "%(username)s added to %(name)s!"
|
||||
|
||||
#: app/routes/teams.py:463 app/routes/teams.py:537
|
||||
#: app/routes/teams.py:479 app/routes/teams.py:553
|
||||
#, python-format
|
||||
msgid "%(username)s is not on %(name)s."
|
||||
msgstr "%(username)s is not on %(name)s."
|
||||
|
||||
#: app/routes/teams.py:471
|
||||
#: app/routes/teams.py:487
|
||||
#, python-format
|
||||
msgid "%(username)s removed from %(name)s."
|
||||
msgstr "%(username)s removed from %(name)s."
|
||||
|
||||
#: app/routes/teams.py:508 app/routes/teams.py:526
|
||||
#: app/routes/teams.py:524 app/routes/teams.py:542
|
||||
msgid "You do not have permission to add notes to this team."
|
||||
msgstr "You do not have permission to add notes to this team."
|
||||
|
||||
#: app/routes/teams.py:516
|
||||
#: app/routes/teams.py:532
|
||||
msgid "Team notes added successfully!"
|
||||
msgstr "Team notes added successfully!"
|
||||
|
||||
#: app/routes/teams.py:531 app/routes/users/notes.py:207
|
||||
#: app/routes/teams.py:547 app/routes/users/notes.py:207
|
||||
#: app/routes/users/notes.py:250
|
||||
msgid "Can only add notes for players."
|
||||
msgstr "Can only add notes for players."
|
||||
|
||||
#: app/routes/teams.py:547
|
||||
#: app/routes/teams.py:563
|
||||
#, python-format
|
||||
msgid "Note added for %(username)s!"
|
||||
msgstr "Note added for %(username)s!"
|
||||
@@ -582,23 +610,23 @@ msgstr "Only PDF files are allowed for contracts."
|
||||
msgid "That file is not a PDF, whatever its name says."
|
||||
msgstr "That file is not a PDF, whatever its name says."
|
||||
|
||||
#: app/routes/users/accounts.py:54
|
||||
#: app/routes/users/accounts.py:55
|
||||
msgid "Only the president can manage users."
|
||||
msgstr "Only the president can manage users."
|
||||
|
||||
#: app/routes/users/accounts.py:66
|
||||
#: app/routes/users/accounts.py:70
|
||||
msgid "Only the president can edit users."
|
||||
msgstr "Only the president can edit users."
|
||||
|
||||
#: app/routes/users/accounts.py:107
|
||||
#: app/routes/users/accounts.py:111
|
||||
msgid "Email already in use by another account."
|
||||
msgstr "Email already in use by another account."
|
||||
|
||||
#: app/routes/users/accounts.py:118
|
||||
#: app/routes/users/accounts.py:122
|
||||
msgid "You cannot change your own role. Ask another president to do it."
|
||||
msgstr "You cannot change your own role. Ask another president to do it."
|
||||
|
||||
#: app/routes/users/accounts.py:131
|
||||
#: app/routes/users/accounts.py:135
|
||||
msgid ""
|
||||
"This is the last active president. Promote another account before "
|
||||
"changing this one."
|
||||
@@ -606,34 +634,34 @@ msgstr ""
|
||||
"This is the last active president. Promote another account before "
|
||||
"changing this one."
|
||||
|
||||
#: app/routes/users/accounts.py:210
|
||||
#: app/routes/users/accounts.py:214
|
||||
#, python-format
|
||||
msgid "User %(username)s updated successfully!"
|
||||
msgstr "User %(username)s updated successfully!"
|
||||
|
||||
#: app/routes/users/accounts.py:231
|
||||
#: app/routes/users/accounts.py:235
|
||||
msgid "Only the president can delete users."
|
||||
msgstr "Only the president can delete users."
|
||||
|
||||
#: app/routes/users/accounts.py:235
|
||||
#: app/routes/users/accounts.py:239
|
||||
msgid "You cannot delete your own account."
|
||||
msgstr "You cannot delete your own account."
|
||||
|
||||
#: app/routes/users/accounts.py:294
|
||||
#: app/routes/users/accounts.py:298
|
||||
#, python-format
|
||||
msgid "User %(deleted_username)s has been removed."
|
||||
msgstr "User %(deleted_username)s has been removed."
|
||||
|
||||
#: app/routes/users/accounts.py:305
|
||||
#: app/routes/users/accounts.py:309
|
||||
msgid "Only the president can create users."
|
||||
msgstr "Only the president can create users."
|
||||
|
||||
#: app/routes/users/accounts.py:353
|
||||
#: app/routes/users/accounts.py:357
|
||||
#, python-format
|
||||
msgid "User %(full_name)s created as %(role)s!"
|
||||
msgstr "User %(full_name)s created as %(role)s!"
|
||||
|
||||
#: app/routes/users/availability.py:187
|
||||
#: app/routes/users/availability.py:210
|
||||
msgid "Only coaches can manage availability."
|
||||
msgstr "Only coaches can manage availability."
|
||||
|
||||
@@ -714,52 +742,48 @@ msgstr "Only coaches can add personal notes."
|
||||
msgid "Note added successfully."
|
||||
msgstr "Note added successfully."
|
||||
|
||||
#: app/routes/users/one_on_one.py:20
|
||||
#: app/routes/users/one_on_one.py:23
|
||||
msgid "Only players can request One on One sessions."
|
||||
msgstr "Only players can request One on One sessions."
|
||||
|
||||
#: app/routes/users/one_on_one.py:33
|
||||
#: app/routes/users/one_on_one.py:36
|
||||
msgid "You do not have a coach assigned to your team."
|
||||
msgstr "You do not have a coach assigned to your team."
|
||||
|
||||
#: app/routes/users/one_on_one.py:68
|
||||
#: app/routes/users/one_on_one.py:67
|
||||
msgid "Cannot request One on One - no coach assigned."
|
||||
msgstr "Cannot request One on One - no coach assigned."
|
||||
|
||||
#: app/routes/users/one_on_one.py:76
|
||||
msgid "Invalid date or time format."
|
||||
msgstr "Invalid date or time format."
|
||||
|
||||
#: app/routes/users/one_on_one.py:90
|
||||
#: app/routes/users/one_on_one.py:93
|
||||
msgid "The requested time is not within the coach's availability."
|
||||
msgstr "The requested time is not within the coach's availability."
|
||||
|
||||
#: app/routes/users/one_on_one.py:118
|
||||
#: app/routes/users/one_on_one.py:121
|
||||
msgid "Your One on One request has been submitted!"
|
||||
msgstr "Your One on One request has been submitted!"
|
||||
|
||||
#: app/routes/users/one_on_one.py:163
|
||||
#: app/routes/users/one_on_one.py:166
|
||||
msgid "Only coaches can accept One on One requests."
|
||||
msgstr "Only coaches can accept One on One requests."
|
||||
|
||||
#: app/routes/users/one_on_one.py:169 app/routes/users/one_on_one.py:219
|
||||
#: app/routes/users/one_on_one.py:172 app/routes/users/one_on_one.py:222
|
||||
msgid "This request is not for you."
|
||||
msgstr "This request is not for you."
|
||||
|
||||
#: app/routes/users/one_on_one.py:173 app/routes/users/one_on_one.py:223
|
||||
#: app/routes/users/one_on_one.py:176 app/routes/users/one_on_one.py:226
|
||||
msgid "This request has already been processed."
|
||||
msgstr "This request has already been processed."
|
||||
|
||||
#: app/routes/users/one_on_one.py:200
|
||||
#: app/routes/users/one_on_one.py:203
|
||||
#, python-format
|
||||
msgid "One on One request from %(player)s has been approved!"
|
||||
msgstr "One on One request from %(player)s has been approved!"
|
||||
|
||||
#: app/routes/users/one_on_one.py:213
|
||||
#: app/routes/users/one_on_one.py:216
|
||||
msgid "Only coaches can reject One on One requests."
|
||||
msgstr "Only coaches can reject One on One requests."
|
||||
|
||||
#: app/routes/users/one_on_one.py:255
|
||||
#: app/routes/users/one_on_one.py:258
|
||||
#, python-format
|
||||
msgid "One on One request from %(player)s has been rejected."
|
||||
msgstr "One on One request from %(player)s has been rejected."
|
||||
@@ -897,6 +921,30 @@ msgstr "Try Again"
|
||||
msgid "Language"
|
||||
msgstr "Language"
|
||||
|
||||
#: app/templates/layouts/_pagination.html:19
|
||||
msgid "Pagination"
|
||||
msgstr "Pagination"
|
||||
|
||||
#: app/templates/layouts/_pagination.html:22
|
||||
#: app/templates/layouts/_pagination.html:24
|
||||
msgid "Previous"
|
||||
msgstr "Previous"
|
||||
|
||||
#: app/templates/layouts/_pagination.html:28
|
||||
#, python-format
|
||||
msgid "Page %(page)s of %(pages)s"
|
||||
msgstr "Page %(page)s of %(pages)s"
|
||||
|
||||
#: app/templates/layouts/_pagination.html:30
|
||||
#, python-format
|
||||
msgid "%(total)s in total"
|
||||
msgstr "%(total)s in total"
|
||||
|
||||
#: app/templates/layouts/_pagination.html:35
|
||||
#: app/templates/layouts/_pagination.html:37
|
||||
msgid "Next"
|
||||
msgstr "Next"
|
||||
|
||||
#: app/templates/layouts/base.html:48 app/templates/layouts/base.html:154
|
||||
#: app/templates/pages/dashboard.html:2 app/templates/pages/dashboard.html:3
|
||||
msgid "Dashboard"
|
||||
@@ -913,8 +961,8 @@ msgid "Calendar"
|
||||
msgstr "Calendar"
|
||||
|
||||
#: app/templates/layouts/base.html:67 app/templates/pages/dashboard.html:43
|
||||
#: app/templates/pages/evaluations.html:2
|
||||
#: app/templates/pages/evaluations.html:3
|
||||
#: app/templates/pages/evaluations.html:4
|
||||
msgid "Evaluations"
|
||||
msgstr "Evaluations"
|
||||
|
||||
@@ -927,8 +975,8 @@ msgstr "My Team(s)"
|
||||
msgid "Manage Teams"
|
||||
msgstr "Manage Teams"
|
||||
|
||||
#: app/templates/layouts/base.html:90 app/templates/pages/users.html:2
|
||||
#: app/templates/pages/users.html:3
|
||||
#: app/templates/layouts/base.html:90 app/templates/pages/users.html:3
|
||||
#: app/templates/pages/users.html:4
|
||||
msgid "Manage Users"
|
||||
msgstr "Manage Users"
|
||||
|
||||
@@ -1121,12 +1169,12 @@ msgid "Confirm"
|
||||
msgstr "Confirm"
|
||||
|
||||
#: app/templates/pages/calendar.html:102
|
||||
#: app/templates/pages/team_matches.html:102
|
||||
#: app/templates/pages/team_matches.html:103
|
||||
msgid "Delete Match"
|
||||
msgstr "Delete Match"
|
||||
|
||||
#: app/templates/pages/calendar.html:105
|
||||
#: app/templates/pages/team_matches.html:97
|
||||
#: app/templates/pages/team_matches.html:98
|
||||
msgid "Edit Match"
|
||||
msgstr "Edit Match"
|
||||
|
||||
@@ -1169,7 +1217,7 @@ msgid "Contract Dropbox"
|
||||
msgstr "Contract Dropbox"
|
||||
|
||||
#: app/templates/pages/contracts.html:26 app/templates/pages/notes.html:87
|
||||
#: app/templates/pages/team_matches.html:26
|
||||
#: app/templates/pages/team_matches.html:27
|
||||
msgid "Team"
|
||||
msgstr "Team"
|
||||
|
||||
@@ -1186,8 +1234,8 @@ msgstr "Contract"
|
||||
#: app/templates/pages/notes.html:126 app/templates/pages/one_on_one.html:73
|
||||
#: app/templates/pages/players_to_evaluate.html:19
|
||||
#: app/templates/pages/team_match_form.html:61
|
||||
#: app/templates/pages/team_matches.html:32 app/templates/pages/teams.html:146
|
||||
#: app/templates/pages/users.html:23 app/templates/pages/view_tryout.html:149
|
||||
#: app/templates/pages/team_matches.html:33 app/templates/pages/teams.html:146
|
||||
#: app/templates/pages/users.html:24 app/templates/pages/view_tryout.html:149
|
||||
#: app/templates/pages/view_tryout.html:321
|
||||
msgid "Status"
|
||||
msgstr "Status"
|
||||
@@ -1199,8 +1247,8 @@ msgstr "Uploaded"
|
||||
#: app/templates/pages/contracts.html:30 app/templates/pages/dashboard.html:175
|
||||
#: app/templates/pages/notes.html:127
|
||||
#: app/templates/pages/players_to_evaluate.html:20
|
||||
#: app/templates/pages/team_matches.html:33 app/templates/pages/teams.html:151
|
||||
#: app/templates/pages/users.html:25 app/templates/pages/view_tryout.html:154
|
||||
#: app/templates/pages/team_matches.html:34 app/templates/pages/teams.html:151
|
||||
#: app/templates/pages/users.html:26 app/templates/pages/view_tryout.html:154
|
||||
#: app/templates/pages/view_tryout.html:323
|
||||
msgid "Actions"
|
||||
msgstr "Actions"
|
||||
@@ -1280,7 +1328,7 @@ msgstr "Enter full name"
|
||||
|
||||
#: app/templates/pages/create_user.html:17
|
||||
#: app/templates/pages/edit_profile.html:13 app/templates/pages/login.html:7
|
||||
#: app/templates/pages/register.html:15 app/templates/pages/users.html:20
|
||||
#: app/templates/pages/register.html:15 app/templates/pages/users.html:21
|
||||
msgid "Username"
|
||||
msgstr "Username"
|
||||
|
||||
@@ -1291,7 +1339,7 @@ msgstr "Choose username"
|
||||
#: app/templates/pages/create_user.html:23
|
||||
#: app/templates/pages/edit_profile.html:23
|
||||
#: app/templates/pages/edit_user.html:17 app/templates/pages/register.html:20
|
||||
#: app/templates/pages/teams.html:148 app/templates/pages/users.html:21
|
||||
#: app/templates/pages/teams.html:148 app/templates/pages/users.html:22
|
||||
msgid "Email"
|
||||
msgstr "Email"
|
||||
|
||||
@@ -1311,7 +1359,7 @@ msgstr "Phone number"
|
||||
|
||||
#: app/templates/pages/create_user.html:31
|
||||
#: app/templates/pages/dashboard.html:74 app/templates/pages/edit_user.html:27
|
||||
#: app/templates/pages/users.html:22
|
||||
#: app/templates/pages/users.html:23
|
||||
msgid "Role"
|
||||
msgstr "Role"
|
||||
|
||||
@@ -1349,11 +1397,11 @@ msgstr "Upcoming"
|
||||
msgid "Recent Users"
|
||||
msgstr "Recent Users"
|
||||
|
||||
#: app/templates/pages/dashboard.html:74 app/templates/pages/users.html:19
|
||||
#: app/templates/pages/dashboard.html:74 app/templates/pages/users.html:20
|
||||
msgid "Name"
|
||||
msgstr "Name"
|
||||
|
||||
#: app/templates/pages/dashboard.html:74 app/templates/pages/users.html:24
|
||||
#: app/templates/pages/dashboard.html:74 app/templates/pages/users.html:25
|
||||
msgid "Joined"
|
||||
msgstr "Joined"
|
||||
|
||||
@@ -1371,7 +1419,7 @@ msgstr "Title"
|
||||
#: app/templates/pages/match_form.html:55 app/templates/pages/my_teams.html:92
|
||||
#: app/templates/pages/notes.html:123 app/templates/pages/one_on_one.html:70
|
||||
#: app/templates/pages/team_match_form.html:34
|
||||
#: app/templates/pages/team_matches.html:28
|
||||
#: app/templates/pages/team_matches.html:29
|
||||
#: app/templates/pages/view_tryout.html:317
|
||||
msgid "Date"
|
||||
msgstr "Date"
|
||||
@@ -1384,7 +1432,7 @@ msgstr "Upcoming Matches"
|
||||
#: app/templates/pages/dashboard.html:118
|
||||
#: app/templates/pages/dashboard.html:202
|
||||
#: app/templates/pages/dashboard.html:285 app/templates/pages/my_teams.html:90
|
||||
#: app/templates/pages/notes.html:69 app/templates/pages/team_matches.html:25
|
||||
#: app/templates/pages/notes.html:69 app/templates/pages/team_matches.html:26
|
||||
#: app/templates/pages/teams.html:132 app/templates/pages/view_tryout.html:315
|
||||
msgid "Match"
|
||||
msgstr "Match"
|
||||
@@ -1439,7 +1487,7 @@ msgid "My Next Matches"
|
||||
msgstr "My Next Matches"
|
||||
|
||||
#: app/templates/pages/dashboard.html:285 app/templates/pages/my_teams.html:91
|
||||
#: app/templates/pages/team_matches.html:27
|
||||
#: app/templates/pages/team_matches.html:28
|
||||
msgid "Opponent"
|
||||
msgstr "Opponent"
|
||||
|
||||
@@ -1736,7 +1784,7 @@ msgstr "Overall"
|
||||
msgid "Position"
|
||||
msgstr "Position"
|
||||
|
||||
#: app/templates/pages/evaluations.html:96
|
||||
#: app/templates/pages/evaluations.html:97
|
||||
msgid "No evaluations yet"
|
||||
msgstr "No evaluations yet"
|
||||
|
||||
@@ -1807,7 +1855,7 @@ msgstr "Cancelled"
|
||||
|
||||
#: app/templates/pages/match_form.html:69 app/templates/pages/my_teams.html:94
|
||||
#: app/templates/pages/team_match_form.html:54
|
||||
#: app/templates/pages/team_matches.html:30
|
||||
#: app/templates/pages/team_matches.html:31
|
||||
#: app/templates/pages/tryout_form.html:49
|
||||
msgid "Location"
|
||||
msgstr "Location"
|
||||
@@ -1962,14 +2010,14 @@ msgstr "No players on this team."
|
||||
|
||||
#: app/templates/pages/my_teams.html:93 app/templates/pages/notes.html:124
|
||||
#: app/templates/pages/one_on_one.html:71
|
||||
#: app/templates/pages/team_matches.html:29
|
||||
#: app/templates/pages/team_matches.html:30
|
||||
#: app/templates/pages/view_tryout.html:319
|
||||
msgid "Time"
|
||||
msgstr "Time"
|
||||
|
||||
#: app/templates/pages/my_teams.html:95
|
||||
#: app/templates/pages/team_match_form.html:115
|
||||
#: app/templates/pages/team_matches.html:31
|
||||
#: app/templates/pages/team_matches.html:32
|
||||
#: app/templates/pages/view_tryout.html:320
|
||||
msgid "Presence"
|
||||
msgstr "Presence"
|
||||
@@ -2462,28 +2510,28 @@ msgstr "Participants"
|
||||
msgid "No participants recorded."
|
||||
msgstr "No participants recorded."
|
||||
|
||||
#: app/templates/pages/team_matches.html:2
|
||||
#: app/templates/pages/team_matches.html:3
|
||||
#: app/templates/pages/team_matches.html:4
|
||||
msgid "Team Matches"
|
||||
msgstr "Team Matches"
|
||||
|
||||
#: app/templates/pages/team_matches.html:10
|
||||
#: app/templates/pages/team_matches.html:11
|
||||
msgid "+ Schedule Match"
|
||||
msgstr "+ Schedule Match"
|
||||
|
||||
#: app/templates/pages/team_matches.html:100
|
||||
#: app/templates/pages/team_matches.html:101
|
||||
msgid "Delete this match?"
|
||||
msgstr "Delete this match?"
|
||||
|
||||
#: app/templates/pages/team_matches.html:131
|
||||
#: app/templates/pages/team_matches.html:133
|
||||
msgid "No Team Matches"
|
||||
msgstr "No Team Matches"
|
||||
|
||||
#: app/templates/pages/team_matches.html:132
|
||||
#: app/templates/pages/team_matches.html:134
|
||||
msgid "Regular season matches have not been scheduled yet."
|
||||
msgstr "Regular season matches have not been scheduled yet."
|
||||
|
||||
#: app/templates/pages/team_matches.html:136
|
||||
#: app/templates/pages/team_matches.html:138
|
||||
msgid "-- Schedule a Match --"
|
||||
msgstr "-- Schedule a Match --"
|
||||
|
||||
@@ -2540,7 +2588,7 @@ msgstr "-- No manager assigned --"
|
||||
msgid "Create Team"
|
||||
msgstr "Create Team"
|
||||
|
||||
#: app/templates/pages/teams.html:64 app/templates/pages/users.html:50
|
||||
#: app/templates/pages/teams.html:64 app/templates/pages/users.html:51
|
||||
#: app/templates/pages/view_tryout.html:29
|
||||
#: app/templates/pages/view_tryout.html:453
|
||||
msgid "Edit"
|
||||
@@ -2743,11 +2791,11 @@ msgstr "Notes (Optional)"
|
||||
msgid "Add any notes about this contract..."
|
||||
msgstr "Add any notes about this contract..."
|
||||
|
||||
#: app/templates/pages/users.html:8
|
||||
#: app/templates/pages/users.html:9
|
||||
msgid "Add User"
|
||||
msgstr "Add User"
|
||||
|
||||
#: app/templates/pages/users.html:53
|
||||
#: app/templates/pages/users.html:54
|
||||
#, python-format
|
||||
msgid "Delete %(name)s? This cannot be undone."
|
||||
msgstr "Delete %(name)s? This cannot be undone."
|
||||
@@ -2925,3 +2973,6 @@ msgstr "View Profile"
|
||||
#~ msgid "Invalid end time format."
|
||||
#~ msgstr "Invalid end time format."
|
||||
|
||||
#~ msgid "Invalid date or time format."
|
||||
#~ msgstr "Invalid date or time format."
|
||||
|
||||
|
||||
Reference in New Issue
Block a user