Skip to content

Commit

Permalink
Static site generation (#1048)
Browse files Browse the repository at this point in the history
  • Loading branch information
mininao committed May 9, 2023
1 parent 02b7e5e commit 59954e6
Show file tree
Hide file tree
Showing 32 changed files with 82 additions and 44 deletions.
4 changes: 2 additions & 2 deletions app/controllers/matches_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ def show
end

def destroy
if Flipper.enabled?(:pause_service)
if Flipper.enabled?(:pause_service) or ENV["STATIC_SITE_GEN"]
flash.now[:error] = "Le service est en pause. Le refus et la prise de rendez-vous sont désactivés."
return render action: :show
end
Expand All @@ -21,7 +21,7 @@ def destroy
end

def update
if Flipper.enabled?(:pause_service)
if Flipper.enabled?(:pause_service) or ENV["STATIC_SITE_GEN"]
flash.now[:error] = "Le service est en pause. La prise de rendez-vous est désactivée."
return
end
Expand Down
2 changes: 1 addition & 1 deletion app/controllers/partners/campaigns_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ def new
end

def create
if Flipper.enabled?(:pause_service)
if Flipper.enabled?(:pause_service) or ENV["STATIC_SITE_GEN"]
return render json: {errors: ["Le service est en pause. La création de campagne est désactivée."]}, status: 400
end
@campaign = @vaccination_center.campaigns.build(create_params)
Expand Down
2 changes: 1 addition & 1 deletion app/controllers/partners/vaccination_centers_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ def new

def create
@vaccination_center = VaccinationCenter.new(vaccination_center_params)
if Flipper.enabled?(:pause_service)
if Flipper.enabled?(:pause_service) or ENV["STATIC_SITE_GEN"]
flash.now[:error] = "Le service est en pause. La création de lieux de vaccination est désactivée."
return render action: :new, status: :unprocessable_entity
end
Expand Down
2 changes: 1 addition & 1 deletion app/controllers/partners_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ def update

def create
@partner = Partner.new(partner_params)
if Flipper.enabled?(:pause_service)
if Flipper.enabled?(:pause_service) or ENV["STATIC_SITE_GEN"]
flash.now[:error] = "Le service est en pause. La création de compte est désactivée."
return render action: :new, status: :unprocessable_entity
end
Expand Down
2 changes: 1 addition & 1 deletion app/controllers/users_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ def create
@user.ensure_lat_lon # fallback in case lat/lon are not returning from client
@user.statement_accepted_at = Time.zone.now if @user.statement
@user.toc_accepted_at = Time.zone.now if @user.toc
if Flipper.enabled?(:pause_service)
if Flipper.enabled?(:pause_service) or ENV["STATIC_SITE_GEN"]
flash.now[:error] = "Le service est en pause. La création de compte est désactivée."
return render action: :new, status: :unprocessable_entity
end
Expand Down
2 changes: 1 addition & 1 deletion app/jobs/notify_matches_by_sms_job.rb
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ class NotifyMatchesBySmsJob < ApplicationJob
def perform(campaign_id)
Rails.logger.info("Run NotifyMatchesBySmsJob for campaign_id #{campaign_id}")
campaign = Campaign.find(campaign_id)
return if Flipper.enabled?(:pause_service)
return if Flipper.enabled?(:pause_service) or ENV["STATIC_SITE_GEN"]
return unless campaign.running?
return if campaign.ends_at > LEAD_TIME.from_now # do not send any SMS X minutes before campaign ends
return if campaign.sms_budget_remaining <= 0
Expand Down
2 changes: 1 addition & 1 deletion app/jobs/run_campaign_job.rb
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ class RunCampaignJob < ApplicationJob
def perform(campaign_id)
Rails.logger.info("Run RunCampaignJob for campaign_id #{campaign_id}")
@campaign = Campaign.find(campaign_id)
return @campaign.canceled! if Flipper.enabled?(:pause_service)
return @campaign.canceled! if Flipper.enabled?(:pause_service) or ENV["STATIC_SITE_GEN"]
return unless @campaign.running?
return @campaign.completed! if @campaign.remaining_doses <= 0
return @campaign.completed! if Time.now.utc >= @campaign.ends_at
Expand Down
2 changes: 1 addition & 1 deletion app/jobs/send_alerts_for_slot_job.rb
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ class SendAlertsForSlotJob < ApplicationJob
queue_as :default

def perform(params)
return if Flipper.enabled?(:pause_service)
return if Flipper.enabled?(:pause_service) or ENV["STATIC_SITE_GEN"]
return unless params[:slot_id]
slot = VmdSlot.find(params[:slot_id])
slot.send_alerts(params[:user_alerting_intensity])
Expand Down
2 changes: 1 addition & 1 deletion app/jobs/send_match_email_job.rb
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ class SendMatchEmailJob < ApplicationJob

def perform(match_id)
match = Match.find(match_id)
return if Flipper.enabled?(:pause_service)
return if Flipper.enabled?(:pause_service) or ENV["STATIC_SITE_GEN"]

return if match.mail_sent_at.present? || match.expired? || match.refused?
return if match.user.nil?
Expand Down
2 changes: 1 addition & 1 deletion app/jobs/send_match_sms_job.rb
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ class SendMatchSmsJob < ApplicationJob

def perform(match_id)
match = Match.find(match_id)
return if Flipper.enabled?(:pause_service)
return if Flipper.enabled?(:pause_service) or ENV["STATIC_SITE_GEN"]

return unless match.sms_notification_needed?

Expand Down
2 changes: 1 addition & 1 deletion app/jobs/send_slot_alert_email_job.rb
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ class SendSlotAlertEmailJob < ApplicationJob
queue_as :mailers

def perform(alert_id)
return if Flipper.enabled?(:pause_service)
return if Flipper.enabled?(:pause_service) or ENV["STATIC_SITE_GEN"]
alert = SlotAlert.find(alert_id)
return if alert.user.nil?
return if alert.user.anonymized_at?
Expand Down
2 changes: 1 addition & 1 deletion app/jobs/send_slot_alert_follow_up_job.rb
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ class SendSlotAlertFollowUpJob < ApplicationJob
queue_as :mailers

def perform(alert_id)
return if Flipper.enabled?(:pause_service)
return if Flipper.enabled?(:pause_service) or ENV["STATIC_SITE_GEN"]
alert = SlotAlert.find(alert_id)

return unless alert.sent_at
Expand Down
2 changes: 1 addition & 1 deletion app/jobs/send_slot_alerts_for_users_job.rb
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ class SendSlotAlertsForUsersJob < ApplicationJob
queue_as :default

def perform
return if Flipper.enabled?(:pause_service)
return if Flipper.enabled?(:pause_service) or ENV["STATIC_SITE_GEN"]

User.active.where(alerting_intensity: 3).find_each do |user|
slot = VmdSlot
Expand Down
2 changes: 1 addition & 1 deletion app/jobs/send_slot_alerts_job.rb
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ class SendSlotAlertsJob < ApplicationJob

def perform(params)
Rails.logger.info("[SendSlotAlertsJob] with params=#{@params}")
return if Flipper.enabled?(:pause_service)
return if Flipper.enabled?(:pause_service) or ENV["STATIC_SITE_GEN"]
return unless params[:days]
SlotAlertService.new(params[:days],
params[:threshold],
Expand Down
2 changes: 1 addition & 1 deletion app/mailers/user_mailer.rb
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ def send_inactive_user_anonymization_notice

return if user_email.blank?

if Flipper.enabled?(:pause_service)
if Flipper.enabled?(:pause_service) or ENV["STATIC_SITE_GEN"]
mail(
to: user_email,
subject: "Nous avons supprimé votre compte Covidliste",
Expand Down
2 changes: 1 addition & 1 deletion app/views/devise/sessions/new.html.erb
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@
</p>
<% end %>
<% if controller_name == "sessions" and not Flipper.enabled?(:pause_service) %>
<% if controller_name == "sessions" and not Flipper.enabled?(:pause_service) or ENV["STATIC_SITE_GEN"] %>
<p class="mt-3">
<%= link_to "S’inscrire en tant que volontaire", users_path %>
</p>
Expand Down
4 changes: 3 additions & 1 deletion app/views/layouts/_navbar.html.erb
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,11 @@
<div class="collapse navbar-collapse" id="navbarNavDropdown">
<ul class="navbar-nav ml-auto">
<% if !current_partner %>
<% if !ENV["STATIC_SITE_GEN"] %>
<li class="<%= class_names("nav-item", active: current_page?(carte_path)) %>">
<%= link_to "Carte", carte_path, class: "nav-link" %>
</li>
<% end %>
<li class="<%= class_names("nav-item", active: current_page?(faq_path)) %>">
<%= link_to "Foire aux questions", faq_path, class: "nav-link" %>
</li>
Expand Down Expand Up @@ -72,7 +74,7 @@
<%= link_to "Déconnexion", destroy_partner_session_path, method: :delete, class: "dropdown-item" %>
</div>
</li>
<% else %>
<% elsif !ENV["STATIC_SITE_GEN"] %>
<li class="<%= class_names("nav-item", "dropdown", active: current_page?(new_user_session_path) || current_page?(new_partner_session_path)) %>">
<%= link_to "", class: "nav-link dropdown-toggle btn btn-primary font-weight-bold#{@page_pro ? " text-white" : ""}", id: "dropdown11", "aria-expanded": "false", "aria-haspopup": "true", "data-toggle": "dropdown" do %>
Se connecter
Expand Down
2 changes: 1 addition & 1 deletion app/views/layouts/admin_application.html.erb
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
<body>
<div class="layout">
<div class="layout__above-footer">
<%= render "layouts/banner" if Flipper.enabled?(:pause_service) %>
<%= render "layouts/banner" if Flipper.enabled?(:pause_service) or ENV["STATIC_SITE_GEN"] %>
<%= render "layouts/admin_navbar" %>
<div class="layout__content <%= "layout__content--no-padding" if @no_layout_content_padding ||= false %>">
<%= render "layouts/alerts" unless @no_layout_alerts ||= false %>
Expand Down
2 changes: 1 addition & 1 deletion app/views/layouts/application.html.erb
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
<body>
<div class="layout">
<div class="layout__above-footer">
<%= render "layouts/banner" if Flipper.enabled?(:pause_service) %>
<%= render "layouts/banner" if Flipper.enabled?(:pause_service) or ENV["STATIC_SITE_GEN"] %>
<%= render "layouts/third_dose_banner" if Flipper.enabled?(:third_dose_banner) %>
<%= render "layouts/navbar" %>
<div class="layout__content <%= "layout__content--no-padding" if @no_layout_content_padding ||= false %>">
Expand Down
6 changes: 3 additions & 3 deletions app/views/pages/landing_page_pro.html.erb
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
vacciner toute la France.
</p>
<div class="row">
<%- if Flipper.enabled?(:pause_service) %>
<%- if Flipper.enabled?(:pause_service) or ENV["STATIC_SITE_GEN"] %>
<div class="card bg-light mb-3" style="">
<div class="card-body">
<h5 class="card-title">Covidliste est en pause. Merci d'avoir été à nos côtés !</h5>
Expand Down Expand Up @@ -121,8 +121,8 @@

<div class="bg-gradient-theme-reverse py-4 py-lg-5">
<div class="container">
<div class="h1 font-weight-bold mb-3"><span class="text-secondary"><%= pretty_number(@vaccination_centers_count) %>
professionnels de santé équipés,<br><%= pretty_number(@confirmed_matched_users_count) %> RDV confirmés,</span><br><span class="text-dark">leur expérience</span>
<div class="h1 font-weight-bold mb-3"><span class="text-secondary"><%= ENV["STATIC_SITE_GEN"] ? "4 533" : pretty_number(@vaccination_centers_count) %>
professionnels de santé équipés,<br><%= ENV["STATIC_SITE_GEN"] ? "43 740" : pretty_number(@confirmed_matched_users_count) %> RDV confirmés,</span><br><span class="text-dark">leur expérience</span>
</div>
<% @reviews[0..2].each do |review| %>
<div class="mt-1 d-flex align-items-center align-items-sm-end">
Expand Down
4 changes: 2 additions & 2 deletions app/views/pages/mentions_legales.html.erb
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,9 @@
</p>

<p>
Le présent site (ci-après « COVIDLISTE ») est hébergé par la
Le présent site (ci-après « COVIDLISTE ») était hébergé par la
société <%= link_to "SCALINGO SAS", "https://scalingo.com/fr", target: "_blank", rel: "noopener" %>
dont le siège social est sis 15 avenue du Rhin 67100 Strasbourg FRANCE (SIRET 80866548300018).
dont le siège social est sis 15 avenue du Rhin 67100 Strasbourg FRANCE (SIRET 80866548300018). Désormais Github, Inc.
</p>

<p>
Expand Down
5 changes: 5 additions & 0 deletions app/views/pages/robots.erb
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
<% if !ENV["STATIC_SITE_GEN"] %>
<%= "User-agent: *" %>
<% if Rails.env.production? %>
<%= "Disallow: /profile" %>
Expand All @@ -6,3 +7,7 @@
<% else %>
<%= "Disallow: /" %>
<% end %>
<% else %>
<%= "User-agent: *" %>
<%= "Allow: /" %>
<% end %>
2 changes: 1 addition & 1 deletion app/views/partners/campaigns/new.html.erb
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
<%= javascript_pack_tag "partners", "data-turbolinks-track": "reload", defer: !Rails.env.test?, nonce: true %>
<% end %>
<div class="container">
<%- if Flipper.enabled?(:pause_service) %>
<%- if Flipper.enabled?(:pause_service) or ENV["STATIC_SITE_GEN"]%>
<div class="alert alert-danger mb-4" role="alert">
Covidliste est en pause, la création de campagne est désactivée. À bientôt !
</div>
Expand Down
2 changes: 1 addition & 1 deletion app/views/partners/sessions/new.html.erb
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@
</p>
<% end %>
<% if controller_name == "sessions" and not Flipper.enabled?(:pause_service) %>
<% if controller_name == "sessions" and not Flipper.enabled?(:pause_service) or ENV["STATIC_SITE_GEN"]%>
<p>
<%= link_to "S’inscrire en tant que professionnel de santé", partenaires_inscription_path %>
</p>
Expand Down
4 changes: 2 additions & 2 deletions app/views/partners/vaccination_centers/index.html.erb
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<div class="container">

<%- if Flipper.enabled?(:pause_service) %>
<%- if Flipper.enabled?(:pause_service) or ENV["STATIC_SITE_GEN"]%>
<div class="card bg-light mb-3" style="max-width: 50rem; margin-right: auto;margin-left: auto;">
<div class="card-body">
<h5 class="card-title">Covidliste est en pause. Merci d'avoir été à nos côtés !</h5>
Expand Down Expand Up @@ -93,7 +93,7 @@
<% end %>
<%- if not Flipper.enabled?(:pause_service) %>
<%- if not Flipper.enabled?(:pause_service) or ENV["STATIC_SITE_GEN"]%>
<p class="small mt-2">
Vous gèrez une autre lieu de vaccination ?
<%= link_to "Demandez la création d’un autre lieu de vaccination", new_partners_vaccination_center_path %>
Expand Down
2 changes: 1 addition & 1 deletion app/views/partners/vaccination_centers/show.html.erb
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@
<% end %>
</div>
</div>
<%- if Flipper.enabled?(:pause_service) %>
<%- if Flipper.enabled?(:pause_service) or ENV["STATIC_SITE_GEN"]%>
<div class="alert alert-dark mb-4 small" role="alert">
Covidliste est en pause, la création de campagne est désactivée. À bientôt !
</div>
Expand Down
2 changes: 1 addition & 1 deletion app/views/users/_form.html.erb
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<%- if Flipper.enabled?(:pause_service) %>
<%- if Flipper.enabled?(:pause_service) or ENV["STATIC_SITE_GEN"]%>
<div class="card bg-light mb-3" style="">
<div class="card-body">
<h5 class="card-title">Covidliste est en pause. Merci d'avoir été à nos côtés !</h5>
Expand Down
18 changes: 9 additions & 9 deletions app/views/users/new.html.erb
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@
</div>
<% end %>
<% else %>
<%- if Flipper.enabled?(:pause_service) %>
<%- if Flipper.enabled?(:pause_service) or ENV["STATIC_SITE_GEN"] or ENV["STATIC_SITE_GEN"]==1 %>
<div class="card bg-light mb-3" style="max-width: 50rem; margin-right: auto;margin-left: auto;">
<div class="card-body">
<h5 class="card-title">Covidliste est en pause. Merci d'avoir été à nos côtés !</h5>
Expand Down Expand Up @@ -112,15 +112,15 @@
<div class="container pt-5 mt-5">
<div class="d-flex align-items-center justify-content-around flex-column flex-lg-row">
<div class="text-center mt-lg-0">
<div class="text-secondary font-weight-bolder display-3 mb-0 mb-lg-2"><%= pretty_number(@matched_users_count) %></div>
<div class="text-secondary font-weight-bolder display-3 mb-0 mb-lg-2"><%= ENV["STATIC_SITE_GEN"] ? "1 163 139" : pretty_number(@matched_users_count) %></div>
<div class="text-black font-weight-bold h3 mb-0">Volontaires<br>contactés</div>
</div>
<div class="text-center mt-5 mt-lg-0">
<div class="text-secondary font-weight-bolder display-3 mb-0 mb-lg-2"><%= pretty_number(@vaccination_centers_count) %></div>
<div class="text-secondary font-weight-bolder display-3 mb-0 mb-lg-2"><%= ENV["STATIC_SITE_GEN"] ? "4 533" : pretty_number(@vaccination_centers_count) %></div>
<div class="text-black font-weight-bold h3 mb-0">Centres de<br>vaccination</div>
</div>
<div class="text-center mt-5 mt-lg-0">
<div class="text-secondary font-weight-bolder display-3 mb-0 mb-lg-2"><%= pretty_number(@confirmed_matched_users_count) %></div>
<div class="text-secondary font-weight-bolder display-3 mb-0 mb-lg-2"><%= ENV["STATIC_SITE_GEN"] ? "43 740" : pretty_number(@confirmed_matched_users_count) %></div>
<div class="text-black font-weight-bold h3 mb-0">RDV<br>confirmés</div>
</div>
</div>
Expand Down Expand Up @@ -170,8 +170,8 @@

<div class="bg-gradient-theme-reverse py-4 py-lg-5">
<div class="container">
<div class="h1 font-weight-bold mb-3"><span class="text-secondary"><%= pretty_number(@vaccination_centers_count) %>
professionnels de santé équipés<br><%= pretty_number(@confirmed_matched_users_count) %>
<div class="h1 font-weight-bold mb-3"><span class="text-secondary"><%= ENV["STATIC_SITE_GEN"] ? "4 533" : pretty_number(@vaccination_centers_count) %>
professionnels de santé équipés<br><%= ENV["STATIC_SITE_GEN"] ? "43 740" : pretty_number(@confirmed_matched_users_count) %>
citoyens vaccinés,</span><br><span class="text-dark">leur expérience</span></div>
<% @reviews[0..2].each do |review| %>
<div class="mt-1 d-flex align-items-center align-items-sm-end">
Expand All @@ -186,7 +186,7 @@
</div>
</div>
</div>
<%- if Flipper.enabled?(:pause_service) %>
<%- if Flipper.enabled?(:pause_service) or ENV["STATIC_SITE_GEN"]%>
<%= render partial: "users/shared/box_cta", locals: {title: "S’inscrire à Covidliste", text: "Covidliste est en pause, les inscriptions sont désactivées.", cta_text: "Suivez-nous sur Twitter", cta_href: "https://twitter.com/covidliste", cta_target: "_self"} %>
<% else %>
<%= render partial: "users/shared/box_cta", locals: {title: "S’inscrire à Covidliste", text: "Vous serez contacté dès qu’une dose sera disponible !", cta_text: "S’inscrire à Covidliste", cta_href: "#inscription", cta_target: "_self"} %>
Expand Down Expand Up @@ -238,7 +238,7 @@
</div>
</div>
</div>
<%- if Flipper.enabled?(:pause_service) %>
<%- if Flipper.enabled?(:pause_service) or ENV["STATIC_SITE_GEN"]%>
<%= render partial: "users/shared/box_cta", locals: {title: "Vous êtes professionnel de santé ?", text: "Covidliste est en pause, les inscriptions sont désactivées.", cta_text: "Suivez-nous sur Twitter", cta_href: "https://twitter.com/covidliste", cta_target: "_self"} %>
<% else %>
<%= render partial: "users/shared/box_cta", locals: {title: "Vous êtes professionnel de santé ?", text: "Simplifiez la gestion de votre liste d’attente.<br>Commencez dès maintenant à gagner du temps.", cta_text: "Trouver des volontaires à la vaccination", cta_href: landing_page_pro_path, cta_target: "_self"} %>
Expand Down Expand Up @@ -268,7 +268,7 @@
</div>
</div>
</div>
<%- if Flipper.enabled?(:pause_service) %>
<%- if Flipper.enabled?(:pause_service) or ENV["STATIC_SITE_GEN"]%>
<%= render partial: "users/shared/box_cta", locals: {title: "Devenir bénévole", text: "Covidliste est en pause, découvrez notre histoire sur notre blog !", cta_text: "Lire le blog", cta_href: "https://blog.covidliste.com", cta_target: "_self"} %>
<% else %>
<%= render partial: "users/shared/box_cta", locals: {title: "Devenir bénévole", text: "Rejoignez une centaine de bénévoles qui chaque<br>jour contribuent à accélérer la campagne de vaccination !", cta_text: "Rejoindre l’équipe Covidliste", cta_href: benevoles_path, cta_target: "_self"} %>
Expand Down
6 changes: 3 additions & 3 deletions config/routes.rb
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
require "sidekiq/web"
require "sidekiq/cron/web"

Rails.application.routes.draw do
scope format: true, defaults: { format: 'html' } do
draw(:redirects)

namespace :admin do
Expand Down Expand Up @@ -152,6 +152,6 @@

## robots.txt
get "/robots.txt", to: "pages#robots"

root to: "users#new"
end
root to: "users#new"
end
8 changes: 7 additions & 1 deletion db/frozen_records/static_pages.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,9 @@
Directeur de la publication : Martin DANIEL
## Hébergeur du site internet :
## Hébergeur du site internet
### Anciennement
**SCALINGO SAS**
Expand All @@ -40,6 +42,10 @@
**Email** : [email protected]
### Désormais
**Github, Inc.**
## Crédits :
Design et développement du site internet par Hostolab.
Expand Down
Loading

0 comments on commit 59954e6

Please sign in to comment.