beta #4

Merged
doug713705 merged 203 commits from beta into master 2023-04-21 00:11:59 +11:00
19 changed files with 319 additions and 327 deletions
Showing only changes of commit 75e44fa9fd - Show all commits

View File

@ -17,6 +17,13 @@ run:
. thsf_venv/bin/activate; \ . thsf_venv/bin/activate; \
thsf_venv/bin/gunicorn -D -p thsf.pid -w 4 -b 127.0.0.1:8042 'thsf:app' thsf_venv/bin/gunicorn -D -p thsf.pid -w 4 -b 127.0.0.1:8042 'thsf:app'
debug:
set -e ;\
THSF_DIR=$$(pwd); \
echo [+] Démarrage dans $$THSF_DIR; \
. thsf_venv/bin/activate; \
thsf_venv/bin/gunicorn -p thsf.pid -w 4 -b 127.0.0.1:8042 'thsf:app'
stop: stop:
-set -e;\ -set -e;\
THSF_DIR=$$(pwd); \ THSF_DIR=$$(pwd); \

View File

@ -52,6 +52,10 @@ except Exception as err:
def page_not_found(err): def page_not_found(err):
return redirect(url_for('index')) return redirect(url_for('index'))
def get_days():
days = ["26/05", "27/05", "28/05"]
return [{"title": f"Jour #{index+1}", "date": day} for index, day in enumerate(days)]
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
# -- Custom filters # -- Custom filters
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
@ -95,7 +99,8 @@ def index():
def planning(): def planning():
slots = backend.get(endpoint=f"events/{app.local_config['pretalx']['event']}/schedules/{app.local_config['pretalx']['schedule']}").json() slots = backend.get(endpoint=f"events/{app.local_config['pretalx']['event']}/schedules/{app.local_config['pretalx']['schedule']}").json()
return render_template("planning.html", return render_template("planning.html",
slots=slots["slots"], slots=sorted(slots["slots"],
key=lambda slot: slot["slot"]["start"]),
navbar=navbar.get_from_page(page="/planning")) navbar=navbar.get_from_page(page="/planning"))
@app.route('/place', methods=['GET']) @app.route('/place', methods=['GET'])

View File

@ -9,23 +9,28 @@
.slot { .slot {
display: flex; display: flex;
flex: 1;
justify-content: center;
text-align: center;
flex-direction: row; flex-direction: row;
align-items: flex-start; margin: 0.3em;
align-content: flex-start;
margin: 1em;
font-size: 2em; font-size: 2em;
width: 22em; width: 22em;
} }
.slot_info {
display: flex;
flex-direction: row;
align-content: flex-start;
}
.metadata, .data { .metadata, .data {
display: flex; display: flex;
flex-direction: column; flex-direction: column;
justify-content: start; justify-content: start;
align-items: flex-start;
align-content: flex-start; align-content: flex-start;
padding: 0.5em; padding: 0.5em;
border-style: solid; border-style: solid;
height: 8em;
} }
.metadata { .metadata {
@ -33,9 +38,10 @@
border-radius: 10px 0 0 10px; border-radius: 10px 0 0 10px;
background-color: var(--alt-bg-color); background-color: var(--alt-bg-color);
color: var(--main-color); color: var(--main-color);
border-color: var(--main-color); border-color: var(--alt-bg-color);
font-family: pfdintextcompprothin; font-family: pfdintextcompprothin;
border-width: 1px 0 0px 1px; border-width: 1px 0 0px 1px;
text-align: left;
} }
.data { .data {
@ -45,18 +51,18 @@
border-color: var(--main-color); border-color: var(--main-color);
border-width: 1px 1px 1px 0; border-width: 1px 1px 1px 0;
font-family: pfdintextcompprothin; font-family: pfdintextcompprothin;
overflow-y: auto; text-align: left;
} }
.metadata > .button { .metadata > .slot_info > .button {
font-size: 1em; font-size: 1em;
margin-bottom: 1em; margin-right: 0.3em;
} }
.title { .title {
font-family: pfdintextcompprothin; font-family: pfdintextcompprothin;
font-weight: bold; font-weight: bold;
margin-bottom: 0.2em; margin-bottom: 0.5em;
} }
.speakers { .speakers {
@ -82,7 +88,7 @@
bottom: 0; bottom: 0;
left: 0; left: 0;
opacity: 0; opacity: 0;
transform: translateY(120%); transform: translateX(-50%) translateY(102%);
transition: opacity 1s; transition: opacity 1s;
} }
@ -100,7 +106,8 @@
padding: 0.2em; padding: 0.2em;
} }
.speaker_details > .details > img, .data > .abstract > img { .speaker_details > .details > img,
.abstract > img {
max-width: 200px; max-width: 200px;
max-height: 200px; max-height: 200px;
float: left; float: left;
@ -112,15 +119,16 @@
font-size: 0.5em; font-size: 0.5em;
} }
.data > .abstract > p { .abstract > p {
text-align: justify; text-align: justify;
font-size: 0.8em; font-size: 1em;
} }
.data > .details { .data > .details {
font-family: pfdintextcompprothin; font-family: pfdintextcompprothin;
font-weight: bold; font-weight: bold;
margin-bottom: 0.2em; margin-bottom: 0.2em;
font-size: 0.8em;
} }
.data > .resources > .resource > a { .data > .resources > .resource > a {

View File

@ -1,9 +1,10 @@
.tooltip, .planning_tooltip { .tooltip,
.planning_tooltip,
.slot_tooltip {
position: relative; position: relative;
display: inline-block; display: inline-block;
} }
.tooltip .tooltiptext { .tooltip .tooltiptext {
visibility: hidden; visibility: hidden;
background-color: var(--main-color); background-color: var(--main-color);
@ -13,29 +14,13 @@
padding: 5px 0; padding: 5px 0;
position: absolute; position: absolute;
z-index: 1; z-index: 1;
bottom: 125%; bottom: 0;
left: 50%; left: 0;
margin-left: -60px;
opacity: 0; opacity: 0;
transform: translateX(-25%) translateY(-2em);
transition: opacity 1s; transition: opacity 1s;
} }
.tooltip .tooltiptext::after, .planning_tooltip .planning_tooltiptext::after {
content: "";
position: absolute;
top: 100%;
left: 50%;
margin-left: -5px;
border-width: 5px;
}
.tooltip:hover .tooltiptext, .planning_tooltip:hover .planning_tooltiptext {
visibility: visible;
opacity: 1;
font-size: 0.7em;
padding: 0.2em;
}
.planning_tooltip .planning_tooltiptext { .planning_tooltip .planning_tooltiptext {
visibility: hidden; visibility: hidden;
background-color: var(--main-color); background-color: var(--main-color);
@ -48,6 +33,53 @@
bottom: 0; bottom: 0;
left: 0; left: 0;
opacity: 0; opacity: 0;
transform: translateX(2em) translateY(-3em); transform: translateX(2em);
transition: opacity 1s; transition: opacity 1s;
} }
.slot_tooltip .slot_tooltiptext {
visibility: hidden;
background-color: var(--main-color);
color: var(--alt-main-color);
text-align: center;
border-radius: 6px;
padding: 5px 0;
position: absolute;
z-index: 1;
bottom: 0;
left: 0;
opacity: 0;
transform: translateX(2em) translateY(50%);
transition: opacity 1s;
}
.slot_tooltip .slot_tooltiptext {
font-size: 1em;
width: 26em;
padding: 1em;
border-style: solid;
border-color: var(--alt-main-color);
border-width: 1px;
}
.tooltip .tooltiptext::after,
.planning_tooltip .planning_tooltiptext::after,
.slot_tooltip .slot_tooltiptext::after {
content: "";
position: absolute;
top: 100%;
left: 50%;
margin-left: -5px;
border-width: 5px;
}
.tooltip:hover .tooltiptext,
.planning_tooltip:hover .planning_tooltiptext,
.slot_tooltip:hover .slot_tooltiptext {
visibility: visible;
opacity: 1;
font-size: 0.7em;
padding: 0.2em;
}

View File

@ -8,6 +8,8 @@
href="{{ url_for('static', filename='css/style.css') }}"> href="{{ url_for('static', filename='css/style.css') }}">
<link rel="stylesheet" <link rel="stylesheet"
href="{{ url_for('static', filename='css/tooltip.css') }}"> href="{{ url_for('static', filename='css/tooltip.css') }}">
<link rel="stylesheet"
href="{{ url_for('static', filename='css/planning.css') }}">
<link rel="icon" <link rel="icon"
type="image/png" type="image/png"
href="{{ url_for('static', filename='images/favicon.png') }}" /> href="{{ url_for('static', filename='images/favicon.png') }}" />
@ -18,8 +20,25 @@
</head> </head>
<body> <body>
{% block content %} <div id="main_wrapper">
{% endblock %} <div id="center_wrapper">
<div id="header_wrapper">
<div id="header">
<span class="black bold">THSF</span>
<span class="white thin">2023</span>
</div>
<div id="subheader">
<span class="white thin">Toulouse Hacker Space Factory</span>
</div>
<div id="place">
<span class="black thin">26 28 mai 2023 - </span>
<span class="white bold">CINÉMA UTOPIA BORDEROUGE</span>
</div>
</div>
{% block content %}
{% endblock %}
</div>
</div>
{% block navbar %} {% block navbar %}
{% include "navbar.html" %} {% include "navbar.html" %}
{% endblock %} {% endblock %}

View File

@ -1,20 +1,5 @@
{% extends "base.html" %} {% extends "base.html" %}
{% block content %} {% block content %}
<div id="main_wrapper">
<div id="center_wrapper">
<div id="header_wrapper">
<div id="header">
<span class="black bold">THSF</span>
<span class="white thin">2023</span>
</div>
<div id="subheader">
<span class="white thin">Toulouse Hacker Space Factory</span>
</div>
<div id="place">
<span class="black thin">26 28 mai 2023 - </span>
<span class="white bold">CINÉMA UTOPIA BORDEROUGE</span>
</div>
</div>
<div id="logo_wrapper"> <div id="logo_wrapper">
<img class="logo" <img class="logo"
src="{{ url_for('static', filename='images/logo.svg') }}" src="{{ url_for('static', filename='images/logo.svg') }}"
@ -31,6 +16,4 @@
<p>Comme toujours, notre objectif est de créer un festival qui poétise les bifurcations de nos idées communes et qui réinvente le sens de certains schémas imposés par notre époque. Rejoignez-nous pour une expérience enrichissante et pleine de surprises !</p> <p>Comme toujours, notre objectif est de créer un festival qui poétise les bifurcations de nos idées communes et qui réinvente le sens de certains schémas imposés par notre époque. Rejoignez-nous pour une expérience enrichissante et pleine de surprises !</p>
</div> </div>
</div>
</div>
{% endblock %} {% endblock %}

View File

@ -1,9 +1,8 @@
<div id="navbar_wrapper"> <div id="navbar_wrapper">
{% for item in navbar %} {% for item in navbar %}
<i class="button tooltip black {{ item['classes'] }}" <i class="button tooltip black {{ item.classes }}"
title="{{item['name']}}" onclick="document.location='{{item.url}}'">
alt="{{item['name']}}" <span class="tooltiptext thin">{{item.name}}</span>
onclick="document.location='{{item['url']}}'">
<span class="tooltiptext thin">{{item['name']}}</span>
</i> </i>
{% endfor %} {% endfor %}
</div>

View File

@ -1,108 +1,8 @@
{% extends "base.html" %} {% extends "base.html" %}
{% block headers %}
<link rel="stylesheet"
href="{{ url_for('static', filename='css/planning.css') }}">
{% endblock %}
{% block content %} {% block content %}
<div id="main_wrapper"> <div id="schedule">
<div id="#schedule">
{% for slot in slots %} {% for slot in slots %}
<div class="slot"> {% include "slot.html" %}
<div class="metadata">
<div class="speakers">
{% for speaker in slot["speakers"] %}
{{speaker["name"] | title}}
<i class="speaker_details fa-solid fa-user">
{% if speaker['avatar'] or speaker["biography"] %}
<div class="details">
{% if speaker['avatar'] %}
<img src="{{speaker['avatar']}}" />
{% endif %}
{% if speaker['biography'] %}
<p class="thin">{{speaker["biography"]}}</p>
{% endif %}
</div>
{% endif %}
</i><br/>
{% endfor %}
</div>
<i class="button planning_tooltip black {{slot['submission_type']['fr'] | toicon }}"
title="{{slot['submission_type']['fr']}}"
alt="{{slot['submission_type']['fr']}}">
<span class="planning_tooltiptext thin">{{slot['submission_type']['fr']}}</span>
</i>
</div>
<div class="data">
<div class="details">
<div class="title black">{{slot["title"]}}</div>
<div class="room">{{slot["slot"]["room"]["fr"]}}</div>
<div class="start">{{slot["slot"]["start"] | date2dmyhm}} - {{slot["duration"]}} minutes ({{slot["content_locale"] | capitalize}})</div>
</div>
<div class="abstract">
{% if slot['image'] %}
<img class="data_img" src="{{slot['image']}}"/>
{% endif %}
<p>{{slot["abstract"]}}</p>
</div>
<!-- <div class="description">{{slot["description"]}}</div> -->
</div>
</div>
{% endfor %} {% endfor %}
</div> </div>
</div>
{% endblock %}
{% block navbar %}
<div id="navbar_wrapper">
<i class="button tooltip black fa-solid fa-house"
title="Accueil"
alt="Accueil"
onclick="document.location='/'">
<span class="tooltiptext thin">Accueil</span>
</i>
<i class="button tooltip black fa-solid fa-map-location-dot"
title="Le Lieu"
alt="Le Lieu">
<span class="tooltiptext thin">Le lieu</span>
</i>
<i class="button tooltip black fa-solid fa-burger"
title="Restauration"
alt="Restauration">
<span class="tooltiptext thin">Restauration</span>
</i>
<i class="button tooltip black fa-solid fa-shirt"
title="T-shirt et goodies"
alt="T-shirt et goodies">
<span class="tooltiptext thin">Goodies</span>
</i>
<i class="button tooltip black fa-solid fa-guitar"
title="Concerts et DJ sets"
alt="Concerts et DJ sets">
<span class="tooltiptext thin">Concerts et DJ sets</span>
</i>
<i class="button tooltip black fa-solid fa-screwdriver-wrench"
title="Ateliers"
alt="Ateliers">
<span class="tooltiptext thin">Ateliers</span>
</i>
<i class="button tooltip black fa-solid fa-film"
title="Projections"
alt="Projections">
<span class="tooltiptext thin">Projections</span>
</i>
<i class="button tooltip black fa-solid fa-users-line"
title="Tables rondes"
alt="Tables rondes">
<span class="tooltiptext thin">Tables rondes</span>
</i>
<i class="button tooltip black fa-solid fa-palette"
title="Expositions"
alt="Expositions">
<span class="tooltiptext thin">Expositions</span>
</i>
<i class="button tooltip black fa-solid fa-person-chalkboard"
title="Présentation"
alt="Présentation">
<span class="tooltiptext thin">Présentation</span>
</i>
</div>
{% endblock %} {% endblock %}

View File

@ -0,0 +1,46 @@
<div class="slot">
<div class="metadata">
<div class="speakers">
{% for speaker in slot.speakers %}
{{speaker.name | title}}
<i class="speaker_details fa-solid fa-user">
{% if speaker.avatar or speaker.biography %}
<div class="details">
{% if speaker.avatar %}
<img src="{{speaker.avatar}}" />
{% endif %}
{% if speaker['biography'] %}
<p class="thin">{{speaker.biography}}</p>
{% endif %}
</div>
{% endif %}
</i><br/>
{% endfor %}
</div>
<div class="slot_info">
<i class="button planning_tooltip black {{slot.submission_type.fr | toicon }}">
<span class="planning_tooltiptext thin">
{{slot.submission_type.fr}}
</span>
</i>
<i class="button slot_tooltip black fa-solid fa-circle-info">
<div class="slot_tooltiptext thin">
<div class="abstract">
{% if slot['image'] %}
<img class="data_img" src="{{slot.image}}"/>
{% endif %}
<p>{{slot.abstract}}</p>
</div>
<div class="description">{{slot.description}}</div>
</div>
</i>
</div>
</div>
<div class="data">
<div class="details">
<div class="title black">{{slot.title}}</div>
<div class="room"><i class="fa-solid fa-caret-right"></i> {{slot.slot.room.fr}}</div>
<div class="start"><i class="fa-solid fa-caret-right"></i> {{slot.slot.start | date2dmyhm}} - {{slot.duration}} minutes ({{slot.content_locale | capitalize}})</div>
</div>
</div>
</div>

View File

@ -28,3 +28,4 @@ src/thsf/templates/base.html
src/thsf/templates/index.html src/thsf/templates/index.html
src/thsf/templates/navbar.html src/thsf/templates/navbar.html
src/thsf/templates/planning.html src/thsf/templates/planning.html
src/thsf/templates/slot.html

View File

@ -52,6 +52,10 @@ except Exception as err:
def page_not_found(err): def page_not_found(err):
return redirect(url_for('index')) return redirect(url_for('index'))
def get_days():
days = ["26/05", "27/05", "28/05"]
return [{"title": f"Jour #{index+1}", "date": day} for index, day in enumerate(days)]
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
# -- Custom filters # -- Custom filters
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
@ -95,7 +99,8 @@ def index():
def planning(): def planning():
slots = backend.get(endpoint=f"events/{app.local_config['pretalx']['event']}/schedules/{app.local_config['pretalx']['schedule']}").json() slots = backend.get(endpoint=f"events/{app.local_config['pretalx']['event']}/schedules/{app.local_config['pretalx']['schedule']}").json()
return render_template("planning.html", return render_template("planning.html",
slots=slots["slots"], slots=sorted(slots["slots"],
key=lambda slot: slot["slot"]["start"]),
navbar=navbar.get_from_page(page="/planning")) navbar=navbar.get_from_page(page="/planning"))
@app.route('/place', methods=['GET']) @app.route('/place', methods=['GET'])

View File

@ -9,23 +9,28 @@
.slot { .slot {
display: flex; display: flex;
flex: 1;
justify-content: center;
text-align: center;
flex-direction: row; flex-direction: row;
align-items: flex-start; margin: 0.3em;
align-content: flex-start;
margin: 1em;
font-size: 2em; font-size: 2em;
width: 22em; width: 22em;
} }
.slot_info {
display: flex;
flex-direction: row;
align-content: flex-start;
}
.metadata, .data { .metadata, .data {
display: flex; display: flex;
flex-direction: column; flex-direction: column;
justify-content: start; justify-content: start;
align-items: flex-start;
align-content: flex-start; align-content: flex-start;
padding: 0.5em; padding: 0.5em;
border-style: solid; border-style: solid;
height: 8em;
} }
.metadata { .metadata {
@ -33,9 +38,10 @@
border-radius: 10px 0 0 10px; border-radius: 10px 0 0 10px;
background-color: var(--alt-bg-color); background-color: var(--alt-bg-color);
color: var(--main-color); color: var(--main-color);
border-color: var(--main-color); border-color: var(--alt-bg-color);
font-family: pfdintextcompprothin; font-family: pfdintextcompprothin;
border-width: 1px 0 0px 1px; border-width: 1px 0 0px 1px;
text-align: left;
} }
.data { .data {
@ -45,18 +51,18 @@
border-color: var(--main-color); border-color: var(--main-color);
border-width: 1px 1px 1px 0; border-width: 1px 1px 1px 0;
font-family: pfdintextcompprothin; font-family: pfdintextcompprothin;
overflow-y: auto; text-align: left;
} }
.metadata > .button { .metadata > .slot_info > .button {
font-size: 1em; font-size: 1em;
margin-bottom: 1em; margin-right: 0.3em;
} }
.title { .title {
font-family: pfdintextcompprothin; font-family: pfdintextcompprothin;
font-weight: bold; font-weight: bold;
margin-bottom: 0.2em; margin-bottom: 0.5em;
} }
.speakers { .speakers {
@ -100,7 +106,8 @@
padding: 0.2em; padding: 0.2em;
} }
.speaker_details > .details > img, .data > .abstract > img { .speaker_details > .details > img,
.abstract > img {
max-width: 200px; max-width: 200px;
max-height: 200px; max-height: 200px;
float: left; float: left;
@ -112,15 +119,16 @@
font-size: 0.5em; font-size: 0.5em;
} }
.data > .abstract > p { .abstract > p {
text-align: justify; text-align: justify;
font-size: 0.8em; font-size: 1em;
} }
.data > .details { .data > .details {
font-family: pfdintextcompprothin; font-family: pfdintextcompprothin;
font-weight: bold; font-weight: bold;
margin-bottom: 0.2em; margin-bottom: 0.2em;
font-size: 0.8em;
} }
.data > .resources > .resource > a { .data > .resources > .resource > a {

View File

@ -1,9 +1,10 @@
.tooltip, .planning_tooltip { .tooltip,
.planning_tooltip,
.slot_tooltip {
position: relative; position: relative;
display: inline-block; display: inline-block;
} }
.tooltip .tooltiptext { .tooltip .tooltiptext {
visibility: hidden; visibility: hidden;
background-color: var(--main-color); background-color: var(--main-color);
@ -13,29 +14,13 @@
padding: 5px 0; padding: 5px 0;
position: absolute; position: absolute;
z-index: 1; z-index: 1;
bottom: 125%; bottom: 0;
left: 50%; left: 0;
margin-left: -60px;
opacity: 0; opacity: 0;
transform: translateX(-25%) translateY(-2em);
transition: opacity 1s; transition: opacity 1s;
} }
.tooltip .tooltiptext::after, .planning_tooltip .planning_tooltiptext::after {
content: "";
position: absolute;
top: 100%;
left: 50%;
margin-left: -5px;
border-width: 5px;
}
.tooltip:hover .tooltiptext, .planning_tooltip:hover .planning_tooltiptext {
visibility: visible;
opacity: 1;
font-size: 0.7em;
padding: 0.2em;
}
.planning_tooltip .planning_tooltiptext { .planning_tooltip .planning_tooltiptext {
visibility: hidden; visibility: hidden;
background-color: var(--main-color); background-color: var(--main-color);
@ -48,6 +33,53 @@
bottom: 0; bottom: 0;
left: 0; left: 0;
opacity: 0; opacity: 0;
transform: translateX(2em) translateY(-3em); transform: translateX(2em);
transition: opacity 1s; transition: opacity 1s;
} }
.slot_tooltip .slot_tooltiptext {
visibility: hidden;
background-color: var(--main-color);
color: var(--alt-main-color);
text-align: center;
border-radius: 6px;
padding: 5px 0;
position: absolute;
z-index: 1;
bottom: 0;
left: 0;
opacity: 0;
transform: translateX(2em) translateY(50%);
transition: opacity 1s;
}
.slot_tooltip .slot_tooltiptext {
font-size: 1em;
width: 26em;
padding: 1em;
border-style: solid;
border-color: var(--alt-main-color);
border-width: 1px;
}
.tooltip .tooltiptext::after,
.planning_tooltip .planning_tooltiptext::after,
.slot_tooltip .slot_tooltiptext::after {
content: "";
position: absolute;
top: 100%;
left: 50%;
margin-left: -5px;
border-width: 5px;
}
.tooltip:hover .tooltiptext,
.planning_tooltip:hover .planning_tooltiptext,
.slot_tooltip:hover .slot_tooltiptext {
visibility: visible;
opacity: 1;
font-size: 0.7em;
padding: 0.2em;
}

View File

@ -8,6 +8,8 @@
href="{{ url_for('static', filename='css/style.css') }}"> href="{{ url_for('static', filename='css/style.css') }}">
<link rel="stylesheet" <link rel="stylesheet"
href="{{ url_for('static', filename='css/tooltip.css') }}"> href="{{ url_for('static', filename='css/tooltip.css') }}">
<link rel="stylesheet"
href="{{ url_for('static', filename='css/planning.css') }}">
<link rel="icon" <link rel="icon"
type="image/png" type="image/png"
href="{{ url_for('static', filename='images/favicon.png') }}" /> href="{{ url_for('static', filename='images/favicon.png') }}" />
@ -18,8 +20,25 @@
</head> </head>
<body> <body>
{% block content %} <div id="main_wrapper">
{% endblock %} <div id="center_wrapper">
<div id="header_wrapper">
<div id="header">
<span class="black bold">THSF</span>
<span class="white thin">2023</span>
</div>
<div id="subheader">
<span class="white thin">Toulouse Hacker Space Factory</span>
</div>
<div id="place">
<span class="black thin">26 28 mai 2023 - </span>
<span class="white bold">CINÉMA UTOPIA BORDEROUGE</span>
</div>
</div>
{% block content %}
{% endblock %}
</div>
</div>
{% block navbar %} {% block navbar %}
{% include "navbar.html" %} {% include "navbar.html" %}
{% endblock %} {% endblock %}

View File

@ -1,20 +1,5 @@
{% extends "base.html" %} {% extends "base.html" %}
{% block content %} {% block content %}
<div id="main_wrapper">
<div id="center_wrapper">
<div id="header_wrapper">
<div id="header">
<span class="black bold">THSF</span>
<span class="white thin">2023</span>
</div>
<div id="subheader">
<span class="white thin">Toulouse Hacker Space Factory</span>
</div>
<div id="place">
<span class="black thin">26 28 mai 2023 - </span>
<span class="white bold">CINÉMA UTOPIA BORDEROUGE</span>
</div>
</div>
<div id="logo_wrapper"> <div id="logo_wrapper">
<img class="logo" <img class="logo"
src="{{ url_for('static', filename='images/logo.svg') }}" src="{{ url_for('static', filename='images/logo.svg') }}"
@ -31,6 +16,4 @@
<p>Comme toujours, notre objectif est de créer un festival qui poétise les bifurcations de nos idées communes et qui réinvente le sens de certains schémas imposés par notre époque. Rejoignez-nous pour une expérience enrichissante et pleine de surprises !</p> <p>Comme toujours, notre objectif est de créer un festival qui poétise les bifurcations de nos idées communes et qui réinvente le sens de certains schémas imposés par notre époque. Rejoignez-nous pour une expérience enrichissante et pleine de surprises !</p>
</div> </div>
</div>
</div>
{% endblock %} {% endblock %}

View File

@ -1,9 +1,8 @@
<div id="navbar_wrapper"> <div id="navbar_wrapper">
{% for item in navbar %} {% for item in navbar %}
<i class="button tooltip black {{ item['classes'] }}" <i class="button tooltip black {{ item.classes }}"
title="{{item['name']}}" onclick="document.location='{{item.url}}'">
alt="{{item['name']}}" <span class="tooltiptext thin">{{item.name}}</span>
onclick="document.location='{{item['url']}}'">
<span class="tooltiptext thin">{{item['name']}}</span>
</i> </i>
{% endfor %} {% endfor %}
</div>

View File

@ -1,108 +1,8 @@
{% extends "base.html" %} {% extends "base.html" %}
{% block headers %}
<link rel="stylesheet"
href="{{ url_for('static', filename='css/planning.css') }}">
{% endblock %}
{% block content %} {% block content %}
<div id="main_wrapper"> <div id="schedule">
<div id="#schedule">
{% for slot in slots %} {% for slot in slots %}
<div class="slot"> {% include "slot.html" %}
<div class="metadata">
<div class="speakers">
{% for speaker in slot["speakers"] %}
{{speaker["name"] | title}}
<i class="speaker_details fa-solid fa-user">
{% if speaker['avatar'] or speaker["biography"] %}
<div class="details">
{% if speaker['avatar'] %}
<img src="{{speaker['avatar']}}" />
{% endif %}
{% if speaker['biography'] %}
<p class="thin">{{speaker["biography"]}}</p>
{% endif %}
</div>
{% endif %}
</i><br/>
{% endfor %}
</div>
<i class="button planning_tooltip black {{slot['submission_type']['fr'] | toicon }}"
title="{{slot['submission_type']['fr']}}"
alt="{{slot['submission_type']['fr']}}">
<span class="planning_tooltiptext thin">{{slot['submission_type']['fr']}}</span>
</i>
</div>
<div class="data">
<div class="details">
<div class="title black">{{slot["title"]}}</div>
<div class="room">{{slot["slot"]["room"]["fr"]}}</div>
<div class="start">{{slot["slot"]["start"] | date2dmyhm}} - {{slot["duration"]}} minutes ({{slot["content_locale"] | capitalize}})</div>
</div>
<div class="abstract">
{% if slot['image'] %}
<img class="data_img" src="{{slot['image']}}"/>
{% endif %}
<p>{{slot["abstract"]}}</p>
</div>
<!-- <div class="description">{{slot["description"]}}</div> -->
</div>
</div>
{% endfor %} {% endfor %}
</div> </div>
</div>
{% endblock %}
{% block navbar %}
<div id="navbar_wrapper">
<i class="button tooltip black fa-solid fa-house"
title="Accueil"
alt="Accueil"
onclick="document.location='/'">
<span class="tooltiptext thin">Accueil</span>
</i>
<i class="button tooltip black fa-solid fa-map-location-dot"
title="Le Lieu"
alt="Le Lieu">
<span class="tooltiptext thin">Le lieu</span>
</i>
<i class="button tooltip black fa-solid fa-burger"
title="Restauration"
alt="Restauration">
<span class="tooltiptext thin">Restauration</span>
</i>
<i class="button tooltip black fa-solid fa-shirt"
title="T-shirt et goodies"
alt="T-shirt et goodies">
<span class="tooltiptext thin">Goodies</span>
</i>
<i class="button tooltip black fa-solid fa-guitar"
title="Concerts et DJ sets"
alt="Concerts et DJ sets">
<span class="tooltiptext thin">Concerts et DJ sets</span>
</i>
<i class="button tooltip black fa-solid fa-screwdriver-wrench"
title="Ateliers"
alt="Ateliers">
<span class="tooltiptext thin">Ateliers</span>
</i>
<i class="button tooltip black fa-solid fa-film"
title="Projections"
alt="Projections">
<span class="tooltiptext thin">Projections</span>
</i>
<i class="button tooltip black fa-solid fa-users-line"
title="Tables rondes"
alt="Tables rondes">
<span class="tooltiptext thin">Tables rondes</span>
</i>
<i class="button tooltip black fa-solid fa-palette"
title="Expositions"
alt="Expositions">
<span class="tooltiptext thin">Expositions</span>
</i>
<i class="button tooltip black fa-solid fa-person-chalkboard"
title="Présentation"
alt="Présentation">
<span class="tooltiptext thin">Présentation</span>
</i>
</div>
{% endblock %} {% endblock %}

View File

@ -0,0 +1,46 @@
<div class="slot">
<div class="metadata">
<div class="speakers">
{% for speaker in slot.speakers %}
{{speaker.name | title}}
<i class="speaker_details fa-solid fa-user">
{% if speaker.avatar or speaker.biography %}
<div class="details">
{% if speaker.avatar %}
<img src="{{speaker.avatar}}" />
{% endif %}
{% if speaker['biography'] %}
<p class="thin">{{speaker.biography}}</p>
{% endif %}
</div>
{% endif %}
</i><br/>
{% endfor %}
</div>
<div class="slot_info">
<i class="button planning_tooltip black {{slot.submission_type.fr | toicon }}">
<span class="planning_tooltiptext thin">
{{slot.submission_type.fr}}
</span>
</i>
<i class="button slot_tooltip black fa-solid fa-circle-info">
<div class="slot_tooltiptext thin">
<div class="abstract">
{% if slot['image'] %}
<img class="data_img" src="{{slot.image}}"/>
{% endif %}
<p>{{slot.abstract}}</p>
</div>
<div class="description">{{slot.description}}</div>
</div>
</i>
</div>
</div>
<div class="data">
<div class="details">
<div class="title black">{{slot.title}}</div>
<div class="room"><i class="fa-solid fa-caret-right"></i> {{slot.slot.room.fr}}</div>
<div class="start"><i class="fa-solid fa-caret-right"></i> {{slot.slot.start | date2dmyhm}} - {{slot.duration}} minutes ({{slot.content_locale | capitalize}})</div>
</div>
</div>
</div>

View File

@ -1 +1 @@
84302 89798