Files
estus-shots-py/choices.py

45 lines
1.2 KiB
Python

import models
import db
def season_choices():
""" Query the database for available seasons.
This returns a list of tuples with the season ID and a display string.
"""
sql, args = db.load_season()
seasons = db.query_db(sql, args, cls=models.Season)
choices = [(s.id, f"{s.code}: {s.game}") for s in seasons]
choices.insert(0, (-1, "No Season"))
return choices
def player_choice():
"""
Query database for a list of available players to bind them to a select box
"""
sql, args = db.load_players()
players = db.query_db(sql, args, cls=models.Player)
return [(p.id, p.name) for p in players]
class SeasonChoicesIterable:
"""
This is used to declare choices for WTForms SelectFields at class definition time.
Be aware that this uses an undocumented WTForms feature and is not guaranteed to work.
"""
def __iter__(self):
for choice in season_choices():
yield choice
class PlayerChoiceIterable:
"""
This is used to declare choices for WTForms SelectFields at class definition time.
Be aware that this uses an undocumented WTForms feature and is not guaranteed to work.
"""
def __iter__(self):
for choice in player_choice():
yield choice