Don't differentiate seasons
This commit is contained in:
@ -1,23 +1,23 @@
|
|||||||
name,team_id,country_code,active
|
name,team_id,country_code
|
||||||
NONE,NONE,NO,0
|
NONE,NONE,NO
|
||||||
Max Verstappen,RedBull,NL,1
|
Max Verstappen,RedBull,NL
|
||||||
Sergio Perez,RedBull,MX,1
|
Sergio Perez,RedBull,MX
|
||||||
Lewis Hamilton,Mercedes,UK,1
|
Lewis Hamilton,Mercedes,UK
|
||||||
George Russel,Mercedes,UK,1
|
George Russel,Mercedes,UK
|
||||||
Charles Leclerc,Ferrari,MC,1
|
Charles Leclerc,Ferrari,MC
|
||||||
Carlos Sainz,Ferrari,ES,1
|
Carlos Sainz,Ferrari,ES
|
||||||
Lando Norris,McLaren,UK,1
|
Lando Norris,McLaren,UK
|
||||||
Oscar Piastri,McLaren,AU,1
|
Oscar Piastri,McLaren,AU
|
||||||
Fernando Alonso,Aston Martin,ES,1
|
Fernando Alonso,Aston Martin,ES
|
||||||
Lance Stroll,Aston Martin,CA,1
|
Lance Stroll,Aston Martin,CA
|
||||||
Pierre Gasly,Alpine,FR,1
|
Pierre Gasly,Alpine,FR
|
||||||
Esteban Ocon,Alpine,FR,1
|
Esteban Ocon,Alpine,FR
|
||||||
Alexander Albon,Williams,TH,1
|
Alexander Albon,Williams,TH
|
||||||
Logan Sargeant,Williams,US,1
|
Logan Sargeant,Williams,US
|
||||||
Yuki Tsunoda,AlphaTauri,JP,1
|
Yuki Tsunoda,AlphaTauri,JP
|
||||||
Daniel Ricciardo,AlphaTauri,AU,1
|
Daniel Ricciardo,AlphaTauri,AU
|
||||||
Valteri Bottas,Alfa Romeo,FL,1
|
Valteri Bottas,Alfa Romeo,FL
|
||||||
Zhou Guanyu,Alfa Romeo,CN,1
|
Zhou Guanyu,Alfa Romeo,CN
|
||||||
Nico Hulkenberg,Haas,DE,1
|
Nico Hulkenberg,Haas,DE
|
||||||
Kevin Magnussen,Haas,DK,1
|
Kevin Magnussen,Haas,DK
|
||||||
Nyck de Vries,AlphaTauri,NL,1
|
Nyck de Vries,AlphaTauri,NL
|
||||||
|
@ -1,20 +1,20 @@
|
|||||||
id,user_id,race_id,season_id,p10_id,dnf_id,raceresult_id
|
id,user_id,race_id,p10_id,dnf_id,raceresult_id
|
||||||
1,Henri,1,2023,Valteri Bottas,Zhou Guanyu,1
|
1,Henri,1,Valteri Bottas,Zhou Guanyu,1
|
||||||
2,Henri,2,2023,Valteri Bottas,Logan Sargeant,2
|
2,Henri,2,Valteri Bottas,Logan Sargeant,2
|
||||||
3,Henri,3,2023,Alexander Albon,Valteri Bottas,3
|
3,Henri,3,Alexander Albon,Valteri Bottas,3
|
||||||
4,Henri,4,2023,Oscar Piastri,Nyck de Vries,4
|
4,Henri,4,Oscar Piastri,Nyck de Vries,4
|
||||||
5,Henri,5,2023,Esteban Ocon,Charles Leclerc,5
|
5,Henri,5,Esteban Ocon,Charles Leclerc,5
|
||||||
6,Henri,7,2023,Yuki Tsunoda,Charles Leclerc,6
|
6,Henri,7,Yuki Tsunoda,Charles Leclerc,6
|
||||||
7,Henri,8,2023,Charles Leclerc,Carlos Sainz,7
|
7,Henri,8,Charles Leclerc,Carlos Sainz,7
|
||||||
8,Henri,9,2023,Oscar Piastri,Kevin Magnussen,8
|
8,Henri,9,Oscar Piastri,Kevin Magnussen,8
|
||||||
9,Henri,10,2023,Alexander Albon,NONE,9
|
9,Henri,10,Alexander Albon,NONE,9
|
||||||
10,Henri,11,2023,Pierre Gasly,Yuki Tsunoda,10
|
10,Henri,11,Pierre Gasly,Yuki Tsunoda,10
|
||||||
11,Henri,12,2023,Esteban Ocon,Kevin Magnussen,11
|
11,Henri,12,Esteban Ocon,Kevin Magnussen,11
|
||||||
12,Henri,13,2023,Lance Stroll,Esteban Ocon,12
|
12,Henri,13,Lance Stroll,Esteban Ocon,12
|
||||||
13,Henri,14,2023,Lance Stroll,Pierre Gasly,13
|
13,Henri,14,Lance Stroll,Pierre Gasly,13
|
||||||
14,Henri,15,2023,Oscar Piastri,Alexander Albon,14
|
14,Henri,15,Oscar Piastri,Alexander Albon,14
|
||||||
15,Henri,16,2023,Pierre Gasly,Logan Sargeant,15
|
15,Henri,16,Pierre Gasly,Logan Sargeant,15
|
||||||
16,Henri,17,2023,Fernando Alonso,Logan Sargeant,16
|
16,Henri,17,Fernando Alonso,Logan Sargeant,16
|
||||||
17,Henri,18,2023,Alexander Albon,Logan Sargeant,17
|
17,Henri,18,Alexander Albon,Logan Sargeant,17
|
||||||
18,Henri,19,2023,Yuki Tsunoda,Logan Sargeant,18
|
18,Henri,19,Yuki Tsunoda,Logan Sargeant,18
|
||||||
19,Henri,20,2023,Valteri Bottas,Logan Sargeant,19
|
19,Henri,20,Valteri Bottas,Logan Sargeant,19
|
||||||
|
@ -1,20 +1,20 @@
|
|||||||
id,race_id,season_id,p10_id,dnf_id
|
id,race_id,p10_id,dnf_id
|
||||||
1,1,2023,Alexander Albon,Oscar Piastri
|
1,1,Alexander Albon,Oscar Piastri
|
||||||
2,2,2023,Kevin Magnussen,Lance Stroll
|
2,2,Kevin Magnussen,Lance Stroll
|
||||||
3,3,2023,Yuki Tsunoda,Charles Leclerc
|
3,3,Yuki Tsunoda,Charles Leclerc
|
||||||
4,4,2023,Yuki Tsunoda,Nyck de Vries
|
4,4,Yuki Tsunoda,Nyck de Vries
|
||||||
5,5,2023,Kevin Magnussen,NONE
|
5,5,Kevin Magnussen,NONE
|
||||||
6,7,2023,Oscar Piastri,Lance Stroll
|
6,7,Oscar Piastri,Lance Stroll
|
||||||
7,8,2023,Pierre Gasly,NONE
|
7,8,Pierre Gasly,NONE
|
||||||
8,9,2023,Valteri Bottas,Logan Sargeant
|
8,9,Valteri Bottas,Logan Sargeant
|
||||||
9,10,2023,Pierre Gasly,Nico Hulkenberg
|
9,10,Pierre Gasly,Nico Hulkenberg
|
||||||
10,11,2023,Carlos Sainz,Esteban Ocon
|
10,11,Carlos Sainz,Esteban Ocon
|
||||||
11,12,2023,Lance Stroll,Pierre Gasly
|
11,12,Lance Stroll,Pierre Gasly
|
||||||
12,13,2023,Yuki Tsunoda,Oscar Piastri
|
12,13,Yuki Tsunoda,Oscar Piastri
|
||||||
13,14,2023,Esteban Ocon,Logan Sargeant
|
13,14,Esteban Ocon,Logan Sargeant
|
||||||
14,15,2023,Valteri Bottas,Esteban Ocon
|
14,15,Valteri Bottas,Esteban Ocon
|
||||||
15,16,2023,Kevin Magnussen,Yuki Tsunoda
|
15,16,Kevin Magnussen,Yuki Tsunoda
|
||||||
16,17,2023,Pierre Gasly,Valteri Bottas
|
16,17,Pierre Gasly,Valteri Bottas
|
||||||
17,18,2023,Sergio Perez,Lewis Hamilton
|
17,18,Sergio Perez,Lewis Hamilton
|
||||||
18,19,2023,Logan Sargeant,Esteban Ocon
|
18,19,Logan Sargeant,Esteban Ocon
|
||||||
19,20,2023,Esteban Ocon,Sergio Perez
|
19,20,Esteban Ocon,Sergio Perez
|
||||||
|
@ -1,24 +1,24 @@
|
|||||||
id,grandprix_id,season_id,number,date
|
id,grandprix_id,number,date
|
||||||
1,Bahrain,2023,1,2023-03-05
|
1,Bahrain,1,2023-03-05
|
||||||
2,Saudi Arabia,2023,2,2023-03-19
|
2,Saudi Arabia,2,2023-03-19
|
||||||
3,Melbourne,2023,3,2023-04-02
|
3,Melbourne,3,2023-04-02
|
||||||
4,Baku,2023,4,2023-04-30
|
4,Baku,4,2023-04-30
|
||||||
5,Miami,2023,5,2023-05-07
|
5,Miami,5,2023-05-07
|
||||||
6,Imola,2023,6,2023-05-21
|
6,Imola,6,2023-05-21
|
||||||
7,Monaco,2023,7,2023-05-28
|
7,Monaco,7,2023-05-28
|
||||||
8,Barcelona,2023,8,2023-06-04
|
8,Barcelona,8,2023-06-04
|
||||||
9,Montreal,2023,9,2023-06-18
|
9,Montreal,9,2023-06-18
|
||||||
10,Spielberg,2023,10,2023-07-02
|
10,Spielberg,10,2023-07-02
|
||||||
11,Silverstone,2023,11,2023-07-09
|
11,Silverstone,11,2023-07-09
|
||||||
12,Budapest,2023,12,2023-07-23
|
12,Budapest,12,2023-07-23
|
||||||
13,Spa,2023,13,2023-07-30
|
13,Spa,13,2023-07-30
|
||||||
14,Zandvoort,2023,14,2023-08-27
|
14,Zandvoort,14,2023-08-27
|
||||||
15,Monza,2023,15,2023-09-03
|
15,Monza,15,2023-09-03
|
||||||
16,Singapore,2023,16,2023-09-17
|
16,Singapore,16,2023-09-17
|
||||||
17,Suzuka,2023,17,2023-09-24
|
17,Suzuka,17,2023-09-24
|
||||||
18,Qatar,2023,18,2023-10-08
|
18,Qatar,18,2023-10-08
|
||||||
19,Austin,2023,19,2023-10-22
|
19,Austin,19,2023-10-22
|
||||||
20,Mexico,2023,20,2023-10-29
|
20,Mexico,20,2023-10-29
|
||||||
21,Brazil,2023,21,2023-11-05
|
21,Brazil,21,2023-11-05
|
||||||
22,Las Vegas,2023,22,2023-11-18
|
22,Las Vegas,22,2023-11-18
|
||||||
23,Abu Dhabi,2023,23,2023-11-26
|
23,Abu Dhabi,23,2023-11-26
|
||||||
|
@ -1,3 +0,0 @@
|
|||||||
year,active
|
|
||||||
2023,1
|
|
||||||
2024,0
|
|
||||||
|
@ -1,2 +1,2 @@
|
|||||||
name,active
|
name
|
||||||
Henri,1
|
Henri
|
||||||
|
|||||||
|
@ -1,17 +1,20 @@
|
|||||||
import csv
|
import csv
|
||||||
from model import *
|
from model import *
|
||||||
|
|
||||||
|
|
||||||
def load_csv(filename):
|
def load_csv(filename):
|
||||||
with open("data/" + filename + ".csv", newline="") as file:
|
with open("data/" + filename + ".csv", newline="") as file:
|
||||||
reader = csv.reader(file, delimiter=",")
|
reader = csv.reader(file, delimiter=",")
|
||||||
next(reader, None) # skip header
|
next(reader, None) # skip header
|
||||||
return list(reader)
|
return list(reader)
|
||||||
|
|
||||||
|
|
||||||
# @todo CSV-Writer
|
# @todo CSV-Writer
|
||||||
def write_csv(filename):
|
def write_csv(filename):
|
||||||
with open("data/" + filename + ".csv", newline="") as file:
|
with open("data/" + filename + ".csv", newline="") as file:
|
||||||
writer = csv.writer(file, delimiter=",")
|
writer = csv.writer(file, delimiter=",")
|
||||||
|
|
||||||
|
|
||||||
# @todo Complete CSV Files
|
# @todo Complete CSV Files
|
||||||
# @todo Reload Static Data
|
# @todo Reload Static Data
|
||||||
# Reload static database data, this has to be called from the app context
|
# Reload static database data, this has to be called from the app context
|
||||||
@ -24,7 +27,6 @@ def reload_static_data(db):
|
|||||||
Team.query.delete()
|
Team.query.delete()
|
||||||
Driver.query.delete()
|
Driver.query.delete()
|
||||||
GrandPrix.query.delete()
|
GrandPrix.query.delete()
|
||||||
Season.query.delete()
|
|
||||||
Race.query.delete()
|
Race.query.delete()
|
||||||
RaceResult.query.delete()
|
RaceResult.query.delete()
|
||||||
User.query.delete()
|
User.query.delete()
|
||||||
@ -37,8 +39,6 @@ def reload_static_data(db):
|
|||||||
db.session.add(Driver().from_csv(row))
|
db.session.add(Driver().from_csv(row))
|
||||||
for row in load_csv("grandsprix"):
|
for row in load_csv("grandsprix"):
|
||||||
db.session.add(GrandPrix().from_csv(row))
|
db.session.add(GrandPrix().from_csv(row))
|
||||||
for row in load_csv("seasons"):
|
|
||||||
db.session.add(Season().from_csv(row))
|
|
||||||
for row in load_csv("races"):
|
for row in load_csv("races"):
|
||||||
db.session.add(Race().from_csv(row))
|
db.session.add(Race().from_csv(row))
|
||||||
for row in load_csv("raceresults"):
|
for row in load_csv("raceresults"):
|
||||||
@ -50,6 +50,7 @@ def reload_static_data(db):
|
|||||||
|
|
||||||
db.session.commit()
|
db.session.commit()
|
||||||
|
|
||||||
|
|
||||||
# @todo Export Dynamic Data
|
# @todo Export Dynamic Data
|
||||||
def export_dynamic_data():
|
def export_dynamic_data():
|
||||||
pass
|
pass
|
||||||
@ -13,12 +13,12 @@ db.init_app(app)
|
|||||||
@app.route("/")
|
@app.route("/")
|
||||||
def index():
|
def index():
|
||||||
users = User.query.all()
|
users = User.query.all()
|
||||||
raceresults = RaceResult.query.filter_by(season_id=2023).all()
|
raceresults = RaceResult.query.all()
|
||||||
|
|
||||||
guesses = dict()
|
guesses = dict()
|
||||||
for raceresult in raceresults:
|
for raceresult in raceresults:
|
||||||
guesses[raceresult.race_id] = dict()
|
guesses[raceresult.race_id] = dict()
|
||||||
for guess in Guess.query.filter_by(season_id=2023).all():
|
for guess in Guess.query.all():
|
||||||
guesses[guess.race_id][guess.user_id] = guess
|
guesses[guess.race_id][guess.user_id] = guess
|
||||||
|
|
||||||
return render_template("index.jinja", users=users, raceresults=raceresults, guesses=guesses)
|
return render_template("index.jinja", users=users, raceresults=raceresults, guesses=guesses)
|
||||||
|
|||||||
45
model.py
45
model.py
@ -5,7 +5,6 @@ from datetime import datetime
|
|||||||
|
|
||||||
db = SQLAlchemy()
|
db = SQLAlchemy()
|
||||||
|
|
||||||
# Modeling these entities separately should make it easier to add new guess categories, for example team guesses or GP guesses
|
|
||||||
|
|
||||||
# This table contains meta information about the GPs, not specific to seasons (can be reused).
|
# This table contains meta information about the GPs, not specific to seasons (can be reused).
|
||||||
class GrandPrix(db.Model):
|
class GrandPrix(db.Model):
|
||||||
@ -19,17 +18,6 @@ class GrandPrix(db.Model):
|
|||||||
name: Mapped[str] = mapped_column(String(64), primary_key=True)
|
name: Mapped[str] = mapped_column(String(64), primary_key=True)
|
||||||
country_code: Mapped[str] = mapped_column(String(2)) # alpha-2 code
|
country_code: Mapped[str] = mapped_column(String(2)) # alpha-2 code
|
||||||
|
|
||||||
# This table contains season information
|
|
||||||
class Season(db.Model):
|
|
||||||
__tablename__ = "season"
|
|
||||||
|
|
||||||
def from_csv(self, row):
|
|
||||||
self.year = int(row[0])
|
|
||||||
self.active = bool(row[1])
|
|
||||||
return self
|
|
||||||
|
|
||||||
year: Mapped[int] = mapped_column(Integer, primary_key=True) # This is the year
|
|
||||||
active: Mapped[bool] = mapped_column(Boolean) # Only allow guessing the current season
|
|
||||||
|
|
||||||
# This table contains manifestations of GPs, with dates
|
# This table contains manifestations of GPs, with dates
|
||||||
class Race(db.Model):
|
class Race(db.Model):
|
||||||
@ -38,19 +26,17 @@ class Race(db.Model):
|
|||||||
def from_csv(self, row):
|
def from_csv(self, row):
|
||||||
self.id = int(row[0])
|
self.id = int(row[0])
|
||||||
self.grandprix_id = str(row[1])
|
self.grandprix_id = str(row[1])
|
||||||
self.season_id = int(row[2])
|
self.number = int(row[2])
|
||||||
self.number = int(row[3])
|
self.date = datetime.strptime(row[3], "%Y-%m-%d")
|
||||||
self.date = datetime.strptime(row[4], "%Y-%m-%d")
|
|
||||||
return self
|
return self
|
||||||
|
|
||||||
id: Mapped[int] = mapped_column(Integer, primary_key=True)
|
id: Mapped[int] = mapped_column(Integer, primary_key=True)
|
||||||
grandprix_id: Mapped[str] = mapped_column(ForeignKey("grandprix.name"))
|
grandprix_id: Mapped[str] = mapped_column(ForeignKey("grandprix.name"))
|
||||||
season_id: Mapped[int] = mapped_column(ForeignKey("season.year"))
|
|
||||||
number: Mapped[int] = mapped_column(Integer)
|
number: Mapped[int] = mapped_column(Integer)
|
||||||
date: Mapped[datetime] = mapped_column(DateTime)
|
date: Mapped[datetime] = mapped_column(DateTime)
|
||||||
|
|
||||||
grandprix: Mapped["GrandPrix"] = relationship("GrandPrix", foreign_keys=[grandprix_id])
|
grandprix: Mapped["GrandPrix"] = relationship("GrandPrix", foreign_keys=[grandprix_id])
|
||||||
season: Mapped["Season"] = relationship("Season", foreign_keys=[season_id])
|
|
||||||
|
|
||||||
# This table contains teams, e.g. RedBull
|
# This table contains teams, e.g. RedBull
|
||||||
class Team(db.Model):
|
class Team(db.Model):
|
||||||
@ -64,6 +50,7 @@ class Team(db.Model):
|
|||||||
name: Mapped[str] = mapped_column(String(32), primary_key=True)
|
name: Mapped[str] = mapped_column(String(32), primary_key=True)
|
||||||
country_code: Mapped[str] = mapped_column(String(2)) # alpha-2 code
|
country_code: Mapped[str] = mapped_column(String(2)) # alpha-2 code
|
||||||
|
|
||||||
|
|
||||||
# This table contains drivers and their team associations, e.g. Max Verschtappen
|
# This table contains drivers and their team associations, e.g. Max Verschtappen
|
||||||
class Driver(db.Model):
|
class Driver(db.Model):
|
||||||
__tablename__ = "driver"
|
__tablename__ = "driver"
|
||||||
@ -72,30 +59,27 @@ class Driver(db.Model):
|
|||||||
self.name = str(row[0])
|
self.name = str(row[0])
|
||||||
self.team_id = str(row[1])
|
self.team_id = str(row[1])
|
||||||
self.country_code = str(row[2])
|
self.country_code = str(row[2])
|
||||||
self.active = bool(row[3])
|
|
||||||
return self
|
return self
|
||||||
|
|
||||||
name: Mapped[str] = mapped_column(String(32), primary_key=True)
|
name: Mapped[str] = mapped_column(String(32), primary_key=True)
|
||||||
team_id: Mapped[str] = mapped_column(ForeignKey("team.name"))
|
team_id: Mapped[str] = mapped_column(ForeignKey("team.name"))
|
||||||
country_code: Mapped[str] = mapped_column(String(2)) # alpha-2 code
|
country_code: Mapped[str] = mapped_column(String(2)) # alpha-2 code
|
||||||
active: Mapped[bool] = mapped_column(Boolean) # Only allow guessing active drivers
|
|
||||||
|
|
||||||
team: Mapped["Team"] = relationship("Team", foreign_keys=[team_id])
|
team: Mapped["Team"] = relationship("Team", foreign_keys=[team_id])
|
||||||
|
|
||||||
|
|
||||||
class RaceResult(db.Model):
|
class RaceResult(db.Model):
|
||||||
__tablename__ = "raceresult"
|
__tablename__ = "raceresult"
|
||||||
|
|
||||||
def from_csv(self, row):
|
def from_csv(self, row):
|
||||||
self.id = int(row[0])
|
self.id = int(row[0])
|
||||||
self.race_id = str(row[1])
|
self.race_id = str(row[1])
|
||||||
self.season_id = int(row[2])
|
self.p10_id = str(row[2])
|
||||||
self.p10_id = str(row[3])
|
self.dnf_id = str(row[3])
|
||||||
self.dnf_id = str(row[4])
|
|
||||||
return self
|
return self
|
||||||
|
|
||||||
id: Mapped[int] = mapped_column(Integer, primary_key=True)
|
id: Mapped[int] = mapped_column(Integer, primary_key=True)
|
||||||
race_id: Mapped[str] = mapped_column(ForeignKey("race.id"))
|
race_id: Mapped[str] = mapped_column(ForeignKey("race.id"))
|
||||||
season_id: Mapped[int] = mapped_column(ForeignKey("season.year"))
|
|
||||||
|
|
||||||
# These map to drivers
|
# These map to drivers
|
||||||
# p01_id: Mapped[int] = mapped_column(ForeignKey("driver.id"))
|
# p01_id: Mapped[int] = mapped_column(ForeignKey("driver.id"))
|
||||||
@ -121,7 +105,6 @@ class RaceResult(db.Model):
|
|||||||
dnf_id: Mapped[str] = mapped_column(ForeignKey("driver.name"))
|
dnf_id: Mapped[str] = mapped_column(ForeignKey("driver.name"))
|
||||||
|
|
||||||
race: Mapped["Race"] = relationship("Race", foreign_keys=[race_id])
|
race: Mapped["Race"] = relationship("Race", foreign_keys=[race_id])
|
||||||
season: Mapped["Season"] = relationship("Season", foreign_keys=[season_id]) # Redundant but should make things easier
|
|
||||||
|
|
||||||
# p01: Mapped["Driver"] = relationship("Driver", foreign_keys=[p01_id]) # Store all places to allow adding guesses
|
# p01: Mapped["Driver"] = relationship("Driver", foreign_keys=[p01_id]) # Store all places to allow adding guesses
|
||||||
# p02: Mapped["Driver"] = relationship("Driver", foreign_keys=[p02_id])
|
# p02: Mapped["Driver"] = relationship("Driver", foreign_keys=[p02_id])
|
||||||
@ -145,17 +128,17 @@ class RaceResult(db.Model):
|
|||||||
# p20: Mapped["Driver"] = relationship("Driver", foreign_keys=[p20_id])
|
# p20: Mapped["Driver"] = relationship("Driver", foreign_keys=[p20_id])
|
||||||
dnf: Mapped["Driver"] = relationship("Driver", foreign_keys=[dnf_id]) # Only store first DNF
|
dnf: Mapped["Driver"] = relationship("Driver", foreign_keys=[dnf_id]) # Only store first DNF
|
||||||
|
|
||||||
|
|
||||||
# This table contains users that can guess
|
# This table contains users that can guess
|
||||||
class User(db.Model):
|
class User(db.Model):
|
||||||
__tablename__ = "user"
|
__tablename__ = "user"
|
||||||
|
|
||||||
def from_csv(self, row):
|
def from_csv(self, row):
|
||||||
self.name = str(row[0])
|
self.name = str(row[0])
|
||||||
self.active = bool(row[1])
|
|
||||||
return self
|
return self
|
||||||
|
|
||||||
name: Mapped[str] = mapped_column(String(32), primary_key=True)
|
name: Mapped[str] = mapped_column(String(32), primary_key=True)
|
||||||
active: Mapped[bool] = mapped_column(Boolean) # Only show active users
|
|
||||||
|
|
||||||
# This table contains guesses made by users
|
# This table contains guesses made by users
|
||||||
class Guess(db.Model):
|
class Guess(db.Model):
|
||||||
@ -165,23 +148,21 @@ class Guess(db.Model):
|
|||||||
self.id = int(row[0])
|
self.id = int(row[0])
|
||||||
self.user_id = str(row[1])
|
self.user_id = str(row[1])
|
||||||
self.race_id = str(row[2])
|
self.race_id = str(row[2])
|
||||||
self.season_id = int(row[3])
|
self.p10_id = str(row[3])
|
||||||
self.p10_id = str(row[4])
|
self.dnf_id = str(row[4])
|
||||||
self.dnf_id = str(row[5])
|
self.raceresult_id = int(row[5])
|
||||||
self.raceresult_id = int(row[6])
|
|
||||||
return self
|
return self
|
||||||
|
|
||||||
id: Mapped[int] = mapped_column(Integer, primary_key=True)
|
id: Mapped[int] = mapped_column(Integer, primary_key=True)
|
||||||
user_id: Mapped[str] = mapped_column(ForeignKey("user.name"))
|
user_id: Mapped[str] = mapped_column(ForeignKey("user.name"))
|
||||||
race_id: Mapped[str] = mapped_column(ForeignKey("race.id"))
|
race_id: Mapped[str] = mapped_column(ForeignKey("race.id"))
|
||||||
season_id: Mapped[int] = mapped_column(ForeignKey("season.year"))
|
|
||||||
p10_id: Mapped[str] = mapped_column(ForeignKey("driver.name"))
|
p10_id: Mapped[str] = mapped_column(ForeignKey("driver.name"))
|
||||||
dnf_id: Mapped[str] = mapped_column(ForeignKey("driver.name"))
|
dnf_id: Mapped[str] = mapped_column(ForeignKey("driver.name"))
|
||||||
raceresult_id: Mapped[int] = mapped_column(ForeignKey("raceresult.id"))
|
raceresult_id: Mapped[int] = mapped_column(ForeignKey("raceresult.id"))
|
||||||
|
|
||||||
user: Mapped["User"] = relationship("User", foreign_keys=[user_id])
|
user: Mapped["User"] = relationship("User", foreign_keys=[user_id])
|
||||||
race: Mapped["Race"] = relationship("Race", foreign_keys=[race_id])
|
race: Mapped["Race"] = relationship("Race", foreign_keys=[race_id])
|
||||||
season: Mapped["Season"] = relationship("Season", foreign_keys=[season_id]) # Redundant but should make things easier
|
|
||||||
p10: Mapped["Driver"] = relationship("Driver", foreign_keys=[p10_id])
|
p10: Mapped["Driver"] = relationship("Driver", foreign_keys=[p10_id])
|
||||||
dnf: Mapped["Driver"] = relationship("Driver", foreign_keys=[dnf_id])
|
dnf: Mapped["Driver"] = relationship("Driver", foreign_keys=[dnf_id])
|
||||||
raceresult: Mapped["RaceResult"] = relationship("RaceResult", foreign_keys=[raceresult_id])
|
raceresult: Mapped["RaceResult"] = relationship("RaceResult", foreign_keys=[raceresult_id])
|
||||||
Reference in New Issue
Block a user