Skip to content
Snippets Groups Projects
Commit ad92aa66 authored by Sofiane Lasri's avatar Sofiane Lasri
Browse files

Restructuration du projet en anglais et remplissage du contenu de la vitrine...

Restructuration du projet en anglais et remplissage du contenu de la vitrine avec les données de la base.
parent 5b7be328
Branches
No related tags found
No related merge requests found
......@@ -4,9 +4,9 @@ from WSR.models import *
# Register your models here.
admin.site.register(Article)
admin.site.register(Course)
admin.site.register(Resultat)
admin.site.register(Vehicule)
admin.site.register(Pilote)
admin.site.register(Race)
admin.site.register(Result)
admin.site.register(Vehicle)
admin.site.register(Driver)
admin.site.register(Participation)
admin.site.register(Saison)
\ No newline at end of file
admin.site.register(Season)
\ No newline at end of file
# Generated by Django 4.2.1 on 2023-06-03 15:45
# Generated by Django 4.2.2 on 2023-06-10 16:59
import datetime
from django.db import migrations, models
import django.db.models.deletion
......@@ -16,71 +17,75 @@ class Migration(migrations.Migration):
name='Article',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('titre', models.CharField(max_length=100)),
('contenu', models.TextField()),
('date_publication', models.DateTimeField(auto_now_add=True)),
('title', models.CharField(max_length=100)),
('content', models.TextField()),
('publication_date', models.DateTimeField(auto_now_add=True)),
],
),
migrations.CreateModel(
name='Course',
name='Driver',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('nom', models.CharField(max_length=100)),
('circuit', models.CharField(max_length=100)),
('image', models.ImageField(upload_to='course_images')),
('name', models.CharField(max_length=100)),
],
),
migrations.CreateModel(
name='Pilote',
name='Race',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('nom', models.CharField(max_length=100)),
('name', models.CharField(max_length=100)),
('circuit', models.CharField(max_length=100)),
('finishing_position', models.PositiveIntegerField(verbose_name='Finishing Position')),
('image', models.ImageField(upload_to='race_images', verbose_name='Illustration Image')),
('type', models.CharField(choices=[('invitation', 'Invitation'), ('championship', 'Championship'), ('single_race', 'Single Race')], default='single_race', max_length=100)),
('date', models.DateField(default=datetime.date.today)),
],
),
migrations.CreateModel(
name='Saison',
name='Season',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('nom', models.CharField(max_length=100)),
('annee', models.PositiveIntegerField()),
('name', models.CharField(max_length=100)),
('year', models.PositiveIntegerField(verbose_name='Year')),
],
),
migrations.CreateModel(
name='Vehicule',
name='Vehicle',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('marque', models.CharField(max_length=100)),
('modele', models.CharField(max_length=100)),
('annee_fabrication', models.PositiveIntegerField()),
('brand', models.CharField(max_length=100)),
('model', models.CharField(max_length=100, verbose_name='Model')),
('fabrication_year', models.PositiveIntegerField(verbose_name='Fabrication Year')),
],
),
migrations.CreateModel(
name='Resultat',
name='Result',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('position_arrivee', models.PositiveIntegerField()),
('position_depart', models.PositiveIntegerField()),
('course', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='WSR.course')),
('pilote', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='WSR.pilote')),
('finishing_position', models.PositiveIntegerField(verbose_name='Finishing Position')),
('starting_position', models.PositiveIntegerField(verbose_name='Starting Position')),
('score', models.IntegerField()),
('driver', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='WSR.driver')),
('race', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='WSR.race')),
],
),
migrations.AddField(
model_name='pilote',
name='vehicule',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='WSR.vehicule'),
model_name='race',
name='season',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='WSR.season'),
),
migrations.CreateModel(
name='Participation',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('course', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='WSR.course')),
('pilotes', models.ManyToManyField(to='WSR.pilote')),
('saison', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='WSR.saison')),
('drivers', models.ManyToManyField(to='WSR.driver')),
('race', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='WSR.race')),
('season', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='WSR.season')),
],
),
migrations.AddField(
model_name='course',
name='saison',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='WSR.saison'),
model_name='driver',
name='vehicle',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='WSR.vehicle', verbose_name='Vehicle'),
),
]
# Generated by Django 4.2.1 on 2023-06-06 19:52
import datetime
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('WSR', '0001_initial'),
]
operations = [
migrations.AddField(
model_name='course',
name='date',
field=models.DateField(default=datetime.date.today),
),
migrations.AddField(
model_name='course',
name='type',
field=models.CharField(choices=[('invitation', 'Invitation'), ('championnat', 'Championnat'), ('course_simple', 'Course Simple')], default='course_simple', max_length=100),
),
migrations.AlterField(
model_name='course',
name='image',
field=models.ImageField(upload_to='course_images', verbose_name="Image d'illustration"),
),
migrations.AlterField(
model_name='pilote',
name='vehicule',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='WSR.vehicule', verbose_name='Véhicule'),
),
migrations.AlterField(
model_name='resultat',
name='position_arrivee',
field=models.PositiveIntegerField(verbose_name="Position à l'arrivée"),
),
migrations.AlterField(
model_name='resultat',
name='position_depart',
field=models.PositiveIntegerField(verbose_name='Position de départ'),
),
migrations.AlterField(
model_name='saison',
name='annee',
field=models.PositiveIntegerField(verbose_name='Année'),
),
migrations.AlterField(
model_name='vehicule',
name='annee_fabrication',
field=models.PositiveIntegerField(verbose_name='Année de fabrication'),
),
migrations.AlterField(
model_name='vehicule',
name='modele',
field=models.CharField(max_length=100, verbose_name='Modèle'),
),
]
# Generated by Django 4.2.1 on 2023-06-06 20:05
import random
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('WSR', '0002_course_date_course_type_alter_course_image_and_more'),
]
operations = [
migrations.AddField(
model_name='resultat',
name='score',
field=models.IntegerField(default=random.randrange(500, 8000, 500)),
preserve_default=False,
),
]
......@@ -2,72 +2,74 @@ import datetime
from django.db import models
class Saison(models.Model):
nom = models.CharField(max_length=100)
annee = models.PositiveIntegerField(verbose_name="Année")
class Season(models.Model):
name = models.CharField(max_length=100)
year = models.PositiveIntegerField(verbose_name="Year")
def __str__(self):
return self.nom
return self.name
class Pilote(models.Model):
nom = models.CharField(max_length=100)
vehicule = models.ForeignKey('Vehicule', on_delete=models.CASCADE, verbose_name="Véhicule")
class Driver(models.Model):
name = models.CharField(max_length=100)
vehicle = models.ForeignKey('Vehicle', on_delete=models.CASCADE, verbose_name="Vehicle")
def __str__(self):
return self.nom
return self.name
class Vehicule(models.Model):
marque = models.CharField(max_length=100)
modele = models.CharField(max_length=100, verbose_name="Modèle")
annee_fabrication = models.PositiveIntegerField(verbose_name="Année de fabrication")
class Vehicle(models.Model):
brand = models.CharField(max_length=100)
model = models.CharField(max_length=100, verbose_name="Model")
fabrication_year = models.PositiveIntegerField(verbose_name="Fabrication Year")
def __str__(self):
return f"{self.marque} {self.modele}"
return f"{self.brand} {self.model}"
class Course(models.Model):
class TypeCourse(models.TextChoices):
class Race(models.Model):
class RaceType(models.TextChoices):
INVITATION = "invitation"
CHAMPIONNAT = "championnat"
COURSE_SIMPLE = "course_simple"
CHAMPIONSHIP = "championship"
SINGLE_RACE = "single_race"
nom = models.CharField(max_length=100)
name = models.CharField(max_length=100)
circuit = models.CharField(max_length=100)
saison = models.ForeignKey(Saison, on_delete=models.CASCADE)
image = models.ImageField(upload_to='course_images', verbose_name="Image d'illustration")
type = models.CharField(max_length=100, choices=TypeCourse.choices, default=TypeCourse.COURSE_SIMPLE)
finishing_position = models.PositiveIntegerField(verbose_name="Finishing Position")
season = models.ForeignKey(Season, on_delete=models.CASCADE)
image = models.ImageField(upload_to='race_images', verbose_name="Illustration Image")
type = models.CharField(max_length=100, choices=RaceType.choices, default=RaceType.SINGLE_RACE)
date = models.DateField(default=datetime.date.today)
def __str__(self):
return self.nom
return self.name
class Article(models.Model):
titre = models.CharField(max_length=100)
contenu = models.TextField()
date_publication = models.DateTimeField(auto_now_add=True)
title = models.CharField(max_length=100)
content = models.TextField()
publication_date = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.titre
return self.title
class Resultat(models.Model):
pilote = models.ForeignKey(Pilote, on_delete=models.CASCADE)
course = models.ForeignKey(Course, on_delete=models.CASCADE)
position_arrivee = models.PositiveIntegerField(verbose_name="Position à l'arrivée")
position_depart = models.PositiveIntegerField(verbose_name="Position de départ")
class Result(models.Model):
driver = models.ForeignKey(Driver, on_delete=models.CASCADE)
race = models.ForeignKey(Race, on_delete=models.CASCADE)
finishing_position = models.PositiveIntegerField(verbose_name="Finishing Position")
starting_position = models.PositiveIntegerField(verbose_name="Starting Position")
score = models.IntegerField()
def __str__(self):
return f"{self.pilote} - {self.course}"
return f"{self.driver} - {self.race}"
class Participation(models.Model):
saison = models.ForeignKey(Saison, on_delete=models.CASCADE)
course = models.ForeignKey(Course, on_delete=models.CASCADE)
pilotes = models.ManyToManyField(Pilote)
season = models.ForeignKey(Season, on_delete=models.CASCADE)
race = models.ForeignKey(Race, on_delete=models.CASCADE)
drivers = models.ManyToManyField(Driver)
def __str__(self):
return f"{self.saison} - {self.course}"
return f"{self.season} - {self.race}"
......@@ -26,43 +26,52 @@
<div class="container vitrine">
<div class="main-frame eurostile">
<div>
<div class="mid">SAISON 4</div>
<div class="large">Chicago</div>
<div class="mid">La boucle</div>
<div class="mid">{{ last_race_details.season_name }}</div>
<div class="large">{{ last_race_details.race.circuit }}</div>
<div class="mid">{{ last_race_details.race.name }}</div>
</div>
<div class="detail">
{% for stat in last_race_details.results %}
<div>
<div class="title">Billy Rosewood</div>
<div class="score">2ème position <br>13 500 PTS</div>
</div>
<div>
<div class="title">John Carter</div>
<div class="score">4ème position <br>7 500 PTS</div>
<div class="title">{{ stat.driver_name }}</div>
<div class="score">{{ stat.pos_string }} position <br>{{ stat.score }} PTS</div>
</div>
{% endfor %}
</div>
{% if last_race_details.race.finishing_position < 5 %}
<div class="mid">WSR Admis en finale</div>
{% else %}
<div class="mid">WSR recalé</div>
{% endif %}
</div>
<div class="seconds-frames">
{% for race in second_frame_races %}
<div class="second-frame">
<div class="header">
<div class="pos">1er</div>
{% if race.finishing_position == 1 %}
<div class="pos">{{ race.pos_string }}</div>
{% else %}
<div class="pos second">{{ race.pos_string }}</div>
{% endif %}
</div>
{% if race.type == 'invitation' %}
<div class="event-type"><i class="fa-solid fa-envelope"></i> Invitation évènement</div>
{% elif race.type == 'championship' %}
<div class="event-type"><i class="fa-solid fa-flag-checkered"></i> Championnat</div>
{% else %}
<div class="event-type"><i class="fa-solid fa-flag-checkered"></i> Course simple</div>
{% endif %}
<div class="event-desc">
<div class="eurostile w-75">Rockstar Energy Race Series</div>
<div class="event-meta-info">Pacific Way</div>
</div>
</div>
<div class="second-frame">
<div class="header">
<div class="pos second">2ème</div>
</div>
<div class="event-type"><i class="fa-solid fa-flag-checkered"></i> championnat</div>
<div class="event-desc">
<div class="eurostile w-75">Séries de courses etnies</div>
<div class="eurostile w-75">{{ race.name }}</div>
{% if race.type == 'invitation' %}
<div class="event-meta-info">{{ race.circuit }}</div>
{% else %}
<div class="event-meta-info">3 manches</div>
{% endif %}
</div>
</div>
{% endfor %}
</div>
</div>
......@@ -189,7 +198,8 @@
</div>
</div>
<div class="col">
<p>Copyright 2023 - World Series Racing ou “WSR” est une marque déposée par Codemasters. <br>Ceci est un projet
<p>Copyright 2023 - World Series Racing ou “WSR” est une marque déposée par Codemasters. <br>Ceci est un
projet
à titre scolaire.</p>
</div>
<div class="col"></div>
......
from django.shortcuts import render
from WSR.models import *
# Create your views here.
def home(request):
three_last_races = Race.objects.order_by('-date')[:3]
last_race = three_last_races[0]
last_race_season = last_race.season.name
last_race_results = Result.objects.filter(race=last_race)
for race_result in last_race_results:
race_result.driver_name = race_result.driver.name
if race_result.finishing_position == 1:
race_result.pos_string = "1ère"
else:
race_result.pos_string = str(race_result.finishing_position) + "ème"
last_race_details = {
'race': last_race,
'season_name': last_race_season,
'results': last_race_results
}
second_frame_races = []
for race in three_last_races[1:3]:
pos_string = "1er" if race.finishing_position == 1 else str(race.finishing_position) + "ème"
race.pos_string = pos_string
second_frame_races.append(race)
six_last_articles = Article.objects.order_by('-publication_date')[:6]
for article in six_last_articles:
article.summary = ' '.join(article.content.split()[:14])
three_last_races_results = []
for race in three_last_races:
results = Result.objects.filter(race=race)
race_results = {
'race': race,
'results': results
}
for result in results:
result.driver_name = result.driver.name
result.vehicle_brand = result.driver.vehicle.brand
result.vehicle_model = result.driver.vehicle.model
three_last_races_results.append(race_results)
return render(
request,
'home.html',
{
"last_race_details": last_race_details,
"second_frame_races": second_frame_races,
"six_last_articles": six_last_articles,
"three_last_races_results": three_last_races_results
}
)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment