From 251c151bfa56752425be5518335c4f30ae477fb4 Mon Sep 17 00:00:00 2001
From: SofianeLasri <alasri250@gmail.com>
Date: Tue, 13 Jun 2023 21:51:40 +0200
Subject: [PATCH] =?UTF-8?q?Cr=C3=A9ation=20de=20la=20page=20des=20type=20d?=
 =?UTF-8?q?e=20courses.?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 README.md                       |  3 ++-
 WSR/static/scss/components.scss | 36 +++++++++++++++++++++++++++
 WSR/templates/home.html         |  4 +--
 WSR/templates/race-types.html   | 34 +++++++++++++++++++++++++
 WSR/templates/vehicles.html     |  2 +-
 WSR/views.py                    | 44 +++++++++++++--------------------
 6 files changed, 92 insertions(+), 31 deletions(-)
 create mode 100644 WSR/templates/race-types.html

diff --git a/README.md b/README.md
index c8d5080..0ee27ef 100644
--- a/README.md
+++ b/README.md
@@ -5,4 +5,5 @@ Il est nécessaire d'avoir python > 3.10, ainsi que les paquets suivants :
 - Django
 - Pillow
 - django-compressor
-- django-libsass
\ No newline at end of file
+- django-libsass
+- markdown
\ No newline at end of file
diff --git a/WSR/static/scss/components.scss b/WSR/static/scss/components.scss
index 6ac1067..c516308 100644
--- a/WSR/static/scss/components.scss
+++ b/WSR/static/scss/components.scss
@@ -266,4 +266,40 @@ footer {
       }
     }
   }
+}
+
+.race-types-container {
+  display: grid;
+  grid-template-columns: repeat(2, 1fr);
+  gap: map-get($spacers, 3);
+
+  .card {
+    width: auto;
+
+    .header {
+      margin-bottom: map-get($spacers, 2);
+      width: 100%;
+
+      img {
+        width: inherit;
+      }
+    }
+
+    .content {
+      .title {
+        display: flex;
+        align-items: center;
+        gap: map-get($spacers, 1);
+        color: $black;
+        font-size: 1.4rem;
+
+        img {
+          filter: brightness(0);
+        }
+      }
+      .desc {
+        color: $dark-gray;
+      }
+    }
+  }
 }
\ No newline at end of file
diff --git a/WSR/templates/home.html b/WSR/templates/home.html
index 4c0105b..dfc90b0 100644
--- a/WSR/templates/home.html
+++ b/WSR/templates/home.html
@@ -43,10 +43,10 @@
 
                 <div class="event-desc">
                     {% if race.participation_type == 'invitation' %}
-                        <div class="eurostile w-75">{{ race.type_string }}<br>{{ race.name }}</div>
+                        <div class="eurostile w-75">{{ race.type }}<br>{{ race.name }}</div>
                         <div class="event-meta-info">{{ race.location }}, {{ race.circuit }}</div>
                     {% else %}
-                        <div class="eurostile w-75">{{ race.type_string }}<br>{{ race.location }}</div>
+                        <div class="eurostile w-75">{{ race.type }}<br>{{ race.location }}</div>
                         <div class="event-meta-info">{{ race.circuit }}</div>
                     {% endif %}
                 </div>
diff --git a/WSR/templates/race-types.html b/WSR/templates/race-types.html
new file mode 100644
index 0000000..7fac1ee
--- /dev/null
+++ b/WSR/templates/race-types.html
@@ -0,0 +1,34 @@
+{% extends 'base.html' %}
+{% load static %}
+
+{% block title %}WSR - Épreuves{% endblock %}
+
+{% block content %}
+    <div class="container mt-4">
+        <div class="p-4 bg-white">
+            <h4 class="eurostile title">Épreuves</h4>
+            <p>Les WSR n'ont pas froids aux yeux, ils sont toujours prêt à affronter n'importe quel épreuve.</p>
+
+            <div class="race-types-container">
+                {% for epreuve in epreuves %}
+                    <div class="card">
+                        <div class="header">
+                            <img src="{% get_media_prefix %}{{ epreuve.image }}" alt="{{ epreuve.name }}">
+                        </div>
+                        <div class="content">
+                            <div class="title eurostile">
+                                <img src="{% get_media_prefix %}{{ epreuve.icon }}"
+                                     alt="Logo {{ epreuve.name }}" width="32"> {{ epreuve.name }}
+                            </div>
+                            <div class="desc">
+                                {% autoescape off %}
+                                    {{ epreuve.description }}
+                                {% endautoescape %}
+                            </div>
+                        </div>
+                    </div>
+                {% endfor %}
+            </div>
+        </div>
+    </div>
+{% endblock %}
\ No newline at end of file
diff --git a/WSR/templates/vehicles.html b/WSR/templates/vehicles.html
index 786f29f..948ab16 100644
--- a/WSR/templates/vehicles.html
+++ b/WSR/templates/vehicles.html
@@ -30,7 +30,7 @@
                     </div>
                     <div class="content">
                         <div class="title eurostile">{{ vehicle.brand }}</div>
-                        <div class="desc text-uppercase">{{ vehicle.model }}</div>
+                        <div class="desc">{{ vehicle.model }}</div>
                     </div>
                 </div>
             {% endfor %}
diff --git a/WSR/views.py b/WSR/views.py
index f43a720..d86d7e3 100644
--- a/WSR/views.py
+++ b/WSR/views.py
@@ -1,3 +1,4 @@
+import markdown
 from django.shortcuts import render
 
 from WSR.models import *
@@ -27,32 +28,7 @@ def home(request):
 
     for race in three_last_races[1:3]:
         pos_string = "1er" if race.finishing_position == 1 else str(race.finishing_position) + "ème"
-        type_string = ""
-
-        match race.type:
-            case 'championship':
-                type_string = "Championnat"
-            case 'single_race':
-                type_string = "Course simple"
-            case 'face_to_face':
-                type_string = "Face à face"
-            case 'overtaking':
-                type_string = "Dépassements"
-            case 'against_time':
-                type_string = "Contre-la-montre"
-            case 'elimination':
-                type_string = "Elimination"
-            case 'endurance':
-                type_string = "Endurance"
-            case 'touge':
-                type_string = "Touge"
-            case 'checkpoint':
-                type_string = "Checkpoints"
-            case 'drift':
-                type_string = "Drift"
-
         race.pos_string = pos_string
-        race.type_string = type_string
         second_frame_races.append(race)
 
     six_last_articles = Article.objects.order_by('-publication_date')[:6]
@@ -94,7 +70,20 @@ def view_article(request, id):
 
 
 def races_types(request):
-    return None
+    epreuves = RaceType.objects.all()
+    md = markdown.Markdown()
+
+    for epreuve in epreuves:
+        epreuve.description = md.convert(epreuve.description)
+
+    return render(
+        request,
+        'race-types.html',
+        {
+            'epreuves': epreuves
+        }
+    )
+
 
 def vehicles(request):
     vehicles = Vehicle.objects.all()
@@ -106,5 +95,6 @@ def vehicles(request):
         }
     )
 
+
 def seasons(request):
-    return None
\ No newline at end of file
+    return None
-- 
GitLab