QUA-002, seconde moitie. Le depot etant formate, l elargissement porte sur
des defauts et non sur du brassage.
Ajoute a la selection : B (bugbear), C4, RET, SIM, UP. Le lot entier n a
produit que 24 signalements sur 76 fichiers -- le code etait plus propre
que l audit ne le craignait. Neuf corriges automatiquement, quinze a la
main.
SIM108 est ignore : forcer un ternaire se lit moins bien que le if/else
qu il remplace, au seul endroit ou il se declenche.
isort (I) n est PAS active. Il reordonnerait les imports de 48 fichiers,
soit une seconde passe de pur brassage juste apres le commit de formatage.
A faire, mais seul.
Deux vrais defauts trouves par les nouvelles regles
- team_matches.edit_match faisait `except ValueError: pass` sur l heure de
debut et l heure de fin, trois lignes sous un champ date qui, lui,
signale et redirige. Une heure mal saisie etait donc acceptee par le
formulaire, jetee, l ancienne valeur conservee -- et la page annoncait
la reussite. Meme traitement que la date desormais.
- backup.py levait BackupError depuis deux blocs `except` sans `from`,
ce qui perdait la cause d origine dans la trace.
Ainsi que : un `return` explicite dans force_https, `%`-formatage remplace
dans log_auth_event (operations de chaine avant journalisation, pas des
gabarits de logger -- la redaction n est pas affectee), une compréhension
inutile, un `set(...)` en compréhension d ensemble, `open(..., 'r')`, une
variable de boucle inutilisee, et `contextlib.suppress` dans conftest.
CI : `ruff format --check` remplace le commentaire qui expliquait pourquoi
il etait absent.
263 tests passent. Les deux nouveaux messages sont traduits ; attention,
pybabel les avait apparies en `fuzzy` avec des entrees « date » existantes,
et une entree fuzzy est ignoree a l execution.
Co-Authored-By: Claude Opus 5 <[email protected]>
45 lines
1.4 KiB
Python
45 lines
1.4 KiB
Python
"""Player — registers for tryouts, manages their own profile."""
|
|
|
|
from app.models.user_model.user import User
|
|
|
|
|
|
class Player(User):
|
|
"""Player — registers for tryouts, manages their own profile."""
|
|
|
|
__mapper_args__ = {'polymorphic_identity': 'player'}
|
|
|
|
def get_visible_tryouts(self):
|
|
from app.models.tryout.tryout import Tryout
|
|
from app.models.match_model.match import Match
|
|
from app.models.participant.match_participant import MatchParticipant
|
|
|
|
# tryouts they registered for
|
|
player_tryout_ids = [r.tryout_id for r in self.tryout_registrations.all()]
|
|
tryouts = (
|
|
Tryout.query.filter(Tryout.id.in_(player_tryout_ids)).order_by(Tryout.date).all()
|
|
if player_tryout_ids
|
|
else []
|
|
)
|
|
|
|
# plus tryouts where they participate in a match
|
|
player_matches = (
|
|
Match.query.join(MatchParticipant)
|
|
.filter(
|
|
MatchParticipant.player_id == self.id,
|
|
)
|
|
.all()
|
|
)
|
|
extra_ids = {m.tryout_id for m in player_matches}
|
|
extra = (
|
|
Tryout.query.filter(
|
|
Tryout.id.in_(extra_ids),
|
|
)
|
|
.order_by(Tryout.date)
|
|
.all()
|
|
if extra_ids
|
|
else []
|
|
)
|
|
|
|
all_ids = {t.id for t in tryouts}
|
|
return tryouts + [t for t in extra if t.id not in all_ids]
|