Skip to content
Extraits de code Groupes Projets
Valider d6c7b209 rédigé par Benjamin - Le Filament's avatar Benjamin - Le Filament
Parcourir les fichiers

[ADD] training tags

parent 08f699aa
Branches
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
# Copyright 2019-2022 Le Filament (<https://le-filament.com>)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
import json
from odoo import http
from odoo.http import request
......@@ -12,13 +14,26 @@ class WebsiteTraining(http.Controller):
# Routes
# ------------------------------------------------------
@http.route(["/formations/liste"], type="http", auth="public", website=True)
def training_list(self, access_token=False, **post):
def training_list(self, tags=None, **post):
"""
Affiche la liste des formations
"""
training_ids = self._get_training_ids()
trainings = training_ids
search_tags = None
if tags and json.loads(tags):
trainings = training_ids.filtered(
lambda t: set(t.program_id.tag_ids.ids) & set(json.loads(tags))
)
search_tags = trainings.program_id.tag_ids.browse(json.loads(tags))
values = {"training_ids": training_ids, "edit_page": False}
values = {
"training_ids": trainings,
"all_training_ids": training_ids,
"tags": search_tags,
"edit_page": False,
}
print(values)
return request.render("website_training.training_list", values)
@http.route(["/formation/<training_id>"], type="http", auth="public", website=True)
......@@ -54,6 +69,7 @@ class WebsiteTraining(http.Controller):
"""
Return training to publish
"""
website = request.env['website'].get_current_website()
training_ids = (
request.env["training.training"]
.sudo()
......@@ -61,6 +77,7 @@ class WebsiteTraining(http.Controller):
[
("is_published", "=", True),
("state", "in", ["2_broadcast", "3_confirmed"]),
("website_id", "=", website.id)
]
)
)
......
......@@ -6,7 +6,48 @@
<div class="oe_structure" id="oe_structure_website_training_1"/>
<div class="container">
<div class="row my-3 py-3">
<!-- Liste des formations -->
<h1 class="mb-2">Nos formations</h1>
<!-- Affichage tags non sélectionnés -->
<t
t-set="unselected_tags"
t-value="all_training_ids.mapped('program_id').mapped('tag_ids') - tags if tags else training_ids.mapped('program_id').mapped('tag_ids')"
/>
<div class="col-12" t-if="unselected_tags">
<div class="text-center training_tags">
<t t-foreach="unselected_tags" t-as="tag">
<a
t-if="tags"
t-att-href="'/formations/liste?%s'% (keep_query('*', tags=str((tags - tag).ids if tag in tags else (tag | tags).ids)))"
t-attf-class="badge badge rounded-pill #{'up_event_color_%s' % tag.color if tag.color else ''}"
t-out="tag.name"
/>
<a
t-else=""
t-att-href="'/formations/liste?%s'% (keep_query('*', tags=str(tag.ids)))"
t-attf-class="badge badge rounded-pill #{'up_event_color_%s' % tag.color if tag.color else ''}"
t-out="tag.name"
/>
</t>
</div>
</div>
<!-- Affichage tags sélectionnés -->
<div class="col-12 d-flex align-items-center mb-3">
<t t-foreach="tags" t-as="tag">
<span class="align-items-baseline border d-inline-flex ps-2 mt-3 rounded ml16 mb-2 bg-white">
<i class="fa fa-tag me-2 text-muted" />
<t t-out="tag.display_name" />
<a
t-att-href="'/formations/liste?%s' % (keep_query('*', tags=str((tags - tag).ids)))"
class="btn border-0 py-1"
>
&#215;
</a>
</span>
</t>
</div>
<hr class="mb-5" />
<div class="accordion" id="accordionTraining">
<div t-foreach="training_ids" t-as="training" class="accordion-item">
......
......@@ -121,7 +121,7 @@
</div>
</div>
<div name="div_training_button" class="training-right-block" t-if="training.state in ['2_broadcast', '3_confirmed']">
<t t-if="training.students_count >= training.nb_student_max or (training.date_limit and training.date_limit &lt; datetime.date.today())">
<t t-if="training.nb_student_max > 0 and (training.students_count >= training.nb_student_max or (training.date_limit and training.date_limit &lt; datetime.date.today()))">
<div class="alert alert-warning">
Les inscriptions sont closes
</div>
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Veuillez vous inscrire ou vous pour commenter