Compare commits

...

3 Commits

Author SHA1 Message Date
218ec19bf9 Fix teamwinners/podiumdrivers model
All checks were successful
Build Formula10 Docker Image / build-docker (push) Successful in 42s
2024-02-20 01:08:39 +01:00
7d09e00d60 Add ids to select macros 2024-02-20 01:08:26 +01:00
412b5edf20 Fix season guess frontend selection bug 2024-02-20 01:08:15 +01:00
5 changed files with 18 additions and 11 deletions

View File

@ -161,6 +161,8 @@ def season_guess_post(user_name: str):
seasonguess.dnf_driver_name = guesses[3] # Pylance throws error but nullcheck is done seasonguess.dnf_driver_name = guesses[3] # Pylance throws error but nullcheck is done
seasonguess.gained_driver_name = guesses[4] # Pylance throws error but nullcheck is done seasonguess.gained_driver_name = guesses[4] # Pylance throws error but nullcheck is done
seasonguess.lost_driver_name = guesses[5] # Pylance throws error but nullcheck is done seasonguess.lost_driver_name = guesses[5] # Pylance throws error but nullcheck is done
seasonguess.team_winners_id = user_name
seasonguess.podium_drivers_id = user_name
db.session.commit() db.session.commit()
return redirect(f"/season/{user_name}") return redirect(f"/season/{user_name}")

View File

@ -359,7 +359,8 @@ class SeasonGuess(db.Model):
""" """
__tablename__ = "seasonguess" __tablename__ = "seasonguess"
__csv_header__ = ["user_name", "hot_take", "p2_team_name", __csv_header__ = ["user_name", "hot_take", "p2_team_name",
"overtake_driver_name", "dnf_driver_name", "gained_driver_name", "lost_driver_name"] "overtake_driver_name", "dnf_driver_name", "gained_driver_name", "lost_driver_name",
"team_winners_id", "podium_drivers_id"]
def from_csv(self, row): def from_csv(self, row):
self.user_name = str(row[0]) # Also used as foreign key for teamwinners + podiumdrivers self.user_name = str(row[0]) # Also used as foreign key for teamwinners + podiumdrivers
@ -369,6 +370,8 @@ class SeasonGuess(db.Model):
self.dnf_driver_name = str(row[4]) self.dnf_driver_name = str(row[4])
self.gained_driver_name = str(row[5]) self.gained_driver_name = str(row[5])
self.lost_driver_name = str(row[6]) self.lost_driver_name = str(row[6])
self.team_winners_id = str(row[7])
self.podium_drivers_id = str(row[8])
return self return self
def to_csv(self): def to_csv(self):
@ -380,6 +383,8 @@ class SeasonGuess(db.Model):
self.dnf_driver_name, self.dnf_driver_name,
self.gained_driver_name, self.gained_driver_name,
self.lost_driver_name, self.lost_driver_name,
self.team_winners_id,
self.podium_drivers_id
] ]
user_name: Mapped[str] = mapped_column(ForeignKey("user.name"), primary_key=True) user_name: Mapped[str] = mapped_column(ForeignKey("user.name"), primary_key=True)
@ -390,6 +395,9 @@ class SeasonGuess(db.Model):
gained_driver_name: Mapped[str] = mapped_column(ForeignKey("driver.name")) gained_driver_name: Mapped[str] = mapped_column(ForeignKey("driver.name"))
lost_driver_name: Mapped[str] = mapped_column(ForeignKey("driver.name")) lost_driver_name: Mapped[str] = mapped_column(ForeignKey("driver.name"))
team_winners_id: Mapped[str] = mapped_column(ForeignKey("teamwinners.user_name"))
podium_drivers_id: Mapped[str] = mapped_column(ForeignKey("podiumdrivers.user_name"))
# Relationships # Relationships
user: Mapped["User"] = relationship("User", foreign_keys=[user_name]) user: Mapped["User"] = relationship("User", foreign_keys=[user_name])
p2_team: Mapped["Team"] = relationship("Team", foreign_keys=[p2_team_name]) p2_team: Mapped["Team"] = relationship("Team", foreign_keys=[p2_team_name])
@ -398,7 +406,5 @@ class SeasonGuess(db.Model):
gained_driver: Mapped["Driver"] = relationship("Driver", foreign_keys=[gained_driver_name]) gained_driver: Mapped["Driver"] = relationship("Driver", foreign_keys=[gained_driver_name])
lost_driver: Mapped["Driver"] = relationship("Driver", foreign_keys=[lost_driver_name]) lost_driver: Mapped["Driver"] = relationship("Driver", foreign_keys=[lost_driver_name])
team_winners: Mapped["TeamWinners"] = relationship("TeamWinners", foreign_keys=[user_name], team_winners: Mapped["TeamWinners"] = relationship("TeamWinners", foreign_keys=[team_winners_id])
primaryjoin="SeasonGuess.user_name == TeamWinners.user_name") podium_drivers: Mapped["PodiumDrivers"] = relationship("PodiumDrivers", foreign_keys=[podium_drivers_id])
podium_drivers: Mapped["PodiumDrivers"] = relationship("PodiumDrivers", foreign_keys=[user_name],
primaryjoin="SeasonGuess.user_name == PodiumDrivers.user_name")

View File

@ -108,7 +108,6 @@ class TemplateModel:
if self._all_race_results is None: if self._all_race_results is None:
self._all_race_results = RaceResult.query.join(RaceResult.race).order_by(desc(Race.number)).all() self._all_race_results = RaceResult.query.join(RaceResult.race).order_by(desc(Race.number)).all()
print(self._all_race_results)
return self._all_race_results return self._all_race_results
def race_result_by(self, *, race_name: str) -> RaceResult | None: def race_result_by(self, *, race_name: str) -> RaceResult | None:

View File

@ -4,7 +4,7 @@
{# Simple driver dropdown. Requires list of drivers. #} {# Simple driver dropdown. Requires list of drivers. #}
{% macro driver_select(name='', label='', include_none=true) %} {% macro driver_select(name='', label='', include_none=true) %}
<div class="form-floating"> <div class="form-floating">
<select name="{{ name }}" class="form-select" aria-label="{{ name }}"> <select name="{{ name }}" id="{{ name }}" class="form-select" aria-label="{{ name }}">
<option value="" selected disabled hidden></option> <option value="" selected disabled hidden></option>
{% if include_none == true %} {% if include_none == true %}
{% set drivers = model.all_drivers() %} {% set drivers = model.all_drivers() %}
@ -23,7 +23,7 @@
{# Driver dropdown where a value might be preselected. Requires list of drivers. #} {# Driver dropdown where a value might be preselected. Requires list of drivers. #}
{% macro driver_select_with_preselect(match='', name='', label='', include_none=true) %} {% macro driver_select_with_preselect(match='', name='', label='', include_none=true) %}
<div class="form-floating"> <div class="form-floating">
<select name="{{ name }}" class="form-select" aria-label="{{ name }}"> <select name="{{ name }}" id="{{ name }}" class="form-select" aria-label="{{ name }}">
{# Use namespace wrapper to persist scope between loop iterations #} {# Use namespace wrapper to persist scope between loop iterations #}
{% set user_has_chosen = namespace(driverpre="false") %} {% set user_has_chosen = namespace(driverpre="false") %}
@ -54,7 +54,7 @@
{# Simple team dropdown. Requires list of teams. #} {# Simple team dropdown. Requires list of teams. #}
{% macro team_select(name='', label='') %} {% macro team_select(name='', label='') %}
<div class="form-floating"> <div class="form-floating">
<select name="{{ name }}" class="form-select" aria-label="{{ name }}"> <select name="{{ name }}" id="{{ name }}" class="form-select" aria-label="{{ name }}">
<option value="" selected disabled hidden></option> <option value="" selected disabled hidden></option>
{% for team in model.all_teams() %} {% for team in model.all_teams() %}
<option value="{{ team.name }}">{{ team.name }}</option> <option value="{{ team.name }}">{{ team.name }}</option>
@ -67,7 +67,7 @@
{# Team dropdown where a value might be preselected. Requires list of teams. #} {# Team dropdown where a value might be preselected. Requires list of teams. #}
{% macro team_select_with_preselect(match='', name='', label='') %} {% macro team_select_with_preselect(match='', name='', label='') %}
<div class="form-floating"> <div class="form-floating">
<select name="{{ name }}" class="form-select" aria-label="{{ name }}"> <select name="{{ name }}" id="{{ name }}" class="form-select" aria-label="{{ name }}">
{# Use namespace wrapper to persist scope between loop iterations #} {# Use namespace wrapper to persist scope between loop iterations #}
{% set user_has_chosen = namespace(teampre="false") %} {% set user_has_chosen = namespace(teampre="false") %}

View File

@ -85,7 +85,7 @@
<div class="input-group mt-2"> <div class="input-group mt-2">
{{ driver_select_with_preselect(user_guess.gained_driver.abbr if user_guess is not none else "", {{ driver_select_with_preselect(user_guess.gained_driver.abbr if user_guess is not none else "",
"gainedselect", "Most WDC places gained:", false) }} "gainedselect", "Most WDC places gained:", false) }}
{{ driver_select_with_preselect(user_guess.gained_driver.abbr if user_guess is not none else "", {{ driver_select_with_preselect(user_guess.lost_driver.abbr if user_guess is not none else "",
"lostselect", "Most WDC places lost:", false) }} "lostselect", "Most WDC places lost:", false) }}
</div> </div>