wip: programme
This commit is contained in:
parent
33a1cc2e7f
commit
fb14588521
@ -1,3 +1,4 @@
|
|||||||
|
import re
|
||||||
import sys
|
import sys
|
||||||
import json
|
import json
|
||||||
import logging
|
import logging
|
||||||
@ -6,6 +7,7 @@ import yaml
|
|||||||
from flask import Flask, render_template, redirect, request, url_for
|
from flask import Flask, render_template, redirect, request, url_for
|
||||||
from thsf.backend import Backend
|
from thsf.backend import Backend
|
||||||
from thsf.schedule import Schedule
|
from thsf.schedule import Schedule
|
||||||
|
from thsf.navbar import Navbar
|
||||||
|
|
||||||
|
|
||||||
# ------------------------------------------------------------------------------
|
# ------------------------------------------------------------------------------
|
||||||
@ -37,6 +39,7 @@ try:
|
|||||||
apiprefix=app.local_config["pretalx"]["apiprefix"],
|
apiprefix=app.local_config["pretalx"]["apiprefix"],
|
||||||
apikey=app.local_config["pretalx"]["apikey"])
|
apikey=app.local_config["pretalx"]["apikey"])
|
||||||
schedule = Schedule()
|
schedule = Schedule()
|
||||||
|
navbar = Navbar(config=app.local_config["navbar"])
|
||||||
except Exception as err:
|
except Exception as err:
|
||||||
logger.critical("[{}] {}".format(err.__class__, str(err)))
|
logger.critical("[{}] {}".format(err.__class__, str(err)))
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
@ -73,6 +76,8 @@ def date2dmyhm(slot_type):
|
|||||||
"Atelier": "fa-solid fa-screwdriver-wrench",
|
"Atelier": "fa-solid fa-screwdriver-wrench",
|
||||||
"Exposition": "fa-solid fa-palette"}
|
"Exposition": "fa-solid fa-palette"}
|
||||||
return slot_types[slot_type]
|
return slot_types[slot_type]
|
||||||
|
|
||||||
|
|
||||||
# ------------------------------------------------------------------------------
|
# ------------------------------------------------------------------------------
|
||||||
# -- Routes
|
# -- Routes
|
||||||
# ------------------------------------------------------------------------------
|
# ------------------------------------------------------------------------------
|
||||||
@ -83,63 +88,60 @@ def favicon():
|
|||||||
|
|
||||||
@app.route('/', methods=['GET'])
|
@app.route('/', methods=['GET'])
|
||||||
def index():
|
def index():
|
||||||
return render_template("index.html")
|
return render_template("index.html",
|
||||||
|
navbar=navbar.get_from_page(page="/"))
|
||||||
|
|
||||||
@app.route('/planning', methods=['GET'])
|
@app.route('/planning', methods=['GET'])
|
||||||
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()
|
||||||
# schedule.set_slots(slots["slots"])
|
return render_template("planning.html",
|
||||||
return render_template("planning.html", slots=slots["slots"])
|
slots=slots["slots"],
|
||||||
# return "toto"
|
navbar=navbar.get_from_page(page="/planning"))
|
||||||
# for slot in sched["slots"]:
|
|
||||||
# schedule.add_slot(slot)
|
|
||||||
# return schedule.df.to_html()
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@app.route('/place', methods=['GET'])
|
||||||
|
def place():
|
||||||
|
return render_template("index.html",
|
||||||
|
navbar=navbar.get_from_page(page="/place"))
|
||||||
|
|
||||||
|
@app.route('/food', methods=['GET'])
|
||||||
|
def food():
|
||||||
|
return render_template("index.html",
|
||||||
|
navbar=navbar.get_from_page(page="/food"))
|
||||||
|
|
||||||
|
@app.route('/goodies', methods=['GET'])
|
||||||
|
def goodies():
|
||||||
|
return render_template("index.html",
|
||||||
|
navbar=navbar.get_from_page(page="/goodies"))
|
||||||
|
|
||||||
@app.route('/concerts', methods=['GET'])
|
@app.route('/concerts', methods=['GET'])
|
||||||
def concerts():
|
def concerts():
|
||||||
return "concerts"
|
return render_template("index.html",
|
||||||
|
navbar=navbar.get_from_page(page="/concerts"))
|
||||||
|
|
||||||
@app.route('/djsets', methods=['GET'])
|
|
||||||
def djsets():
|
|
||||||
return "djsets"
|
|
||||||
|
|
||||||
|
|
||||||
@app.route('/exhibitions', methods=['GET'])
|
|
||||||
def exhibitions():
|
|
||||||
return "exhibitions"
|
|
||||||
|
|
||||||
|
|
||||||
@app.route('/lighttalks', methods=['GET'])
|
|
||||||
def lighttalks():
|
|
||||||
return "lighttalks"
|
|
||||||
|
|
||||||
|
|
||||||
@app.route('/paneldiscussions', methods=['GET'])
|
|
||||||
def paneldiscussions():
|
|
||||||
return "paneldiscussions"
|
|
||||||
|
|
||||||
|
|
||||||
@app.route('/screenings', methods=['GET'])
|
|
||||||
def screenings():
|
|
||||||
return "screenings"
|
|
||||||
|
|
||||||
|
|
||||||
@app.route('/talks', methods=['GET'])
|
|
||||||
def talks():
|
|
||||||
return "talks"
|
|
||||||
|
|
||||||
|
|
||||||
@app.route('/workshops', methods=['GET'])
|
@app.route('/workshops', methods=['GET'])
|
||||||
def workshops():
|
def workshops():
|
||||||
return "workshops"
|
return render_template("index.html",
|
||||||
|
navbar=navbar.get_from_page(page="/workshops"))
|
||||||
|
|
||||||
|
@app.route('/screenings', methods=['GET'])
|
||||||
|
def screenings():
|
||||||
|
return render_template("index.html",
|
||||||
|
navbar=navbar.get_from_page(page="/screenings"))
|
||||||
|
|
||||||
|
@app.route('/discussions', methods=['GET'])
|
||||||
|
def discussions():
|
||||||
|
return render_template("index.html",
|
||||||
|
navbar=navbar.get_from_page(page="/discussions"))
|
||||||
|
|
||||||
|
@app.route('/exhibitions', methods=['GET'])
|
||||||
|
def exhibitions():
|
||||||
|
return render_template("index.html",
|
||||||
|
navbar=navbar.get_from_page(page="/exhibitions"))
|
||||||
|
|
||||||
|
@app.route('/talks', methods=['GET'])
|
||||||
|
def talks():
|
||||||
|
return render_template("index.html",
|
||||||
|
navbar=navbar.get_from_page(page="/talks"))
|
||||||
|
|
||||||
|
|
||||||
# ------------------------------------------------------------------------------
|
# ------------------------------------------------------------------------------
|
||||||
|
6
build/lib/thsf/navbar/__init__.py
Normal file
6
build/lib/thsf/navbar/__init__.py
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
class Navbar:
|
||||||
|
def __init__(self, config):
|
||||||
|
self.config = config
|
||||||
|
|
||||||
|
def get_from_page(self, page):
|
||||||
|
return [item for item in self.config["items"] if item["url"] != page]
|
@ -25,7 +25,7 @@
|
|||||||
align-content: flex-start;
|
align-content: flex-start;
|
||||||
padding: 0.5em;
|
padding: 0.5em;
|
||||||
border-style: solid;
|
border-style: solid;
|
||||||
height: 13em;
|
height: 8em;
|
||||||
}
|
}
|
||||||
|
|
||||||
.metadata {
|
.metadata {
|
||||||
@ -54,15 +54,15 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.title {
|
.title {
|
||||||
font-family: pfdintextcomppromedium;
|
font-family: pfdintextcompprothin;
|
||||||
font-weight: 250;
|
font-weight: bold;
|
||||||
margin-bottom: 0.5em;
|
margin-bottom: 0.2em;
|
||||||
}
|
}
|
||||||
|
|
||||||
.speakers {
|
.speakers {
|
||||||
font-family: pfdintextcompprothin;
|
font-family: pfdintextcompprothin;
|
||||||
font-weight: 250;
|
font-weight: bold;
|
||||||
margin-bottom: 0.5em;
|
margin-bottom: 0.2em;
|
||||||
}
|
}
|
||||||
|
|
||||||
.speaker_details {
|
.speaker_details {
|
||||||
@ -82,7 +82,7 @@
|
|||||||
bottom: 0;
|
bottom: 0;
|
||||||
left: 0;
|
left: 0;
|
||||||
opacity: 0;
|
opacity: 0;
|
||||||
transform: translateX(2em) translateY(50%);
|
transform: translateY(120%);
|
||||||
transition: opacity 1s;
|
transition: opacity 1s;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -114,13 +114,13 @@
|
|||||||
|
|
||||||
.data > .abstract > p {
|
.data > .abstract > p {
|
||||||
text-align: justify;
|
text-align: justify;
|
||||||
font-size: 1em;
|
font-size: 0.8em;
|
||||||
}
|
}
|
||||||
|
|
||||||
.data > .details {
|
.data > .details {
|
||||||
font-family: pfdintextcomppromedium;
|
font-family: pfdintextcompprothin;
|
||||||
font-weight: 250;
|
font-weight: bold;
|
||||||
margin-bottom: 0.5em;
|
margin-bottom: 0.2em;
|
||||||
}
|
}
|
||||||
|
|
||||||
.data > .resources > .resource > a {
|
.data > .resources > .resource > a {
|
||||||
|
@ -20,58 +20,8 @@
|
|||||||
<body>
|
<body>
|
||||||
{% block content %}
|
{% block content %}
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
<div id="navbar_wrapper">
|
{% block navbar %}
|
||||||
<i class="button tooltip black fa-regular fa-calendar"
|
{% include "navbar.html" %}
|
||||||
title="Programme"
|
{% endblock %}
|
||||||
alt="Programme"
|
|
||||||
onclick="document.location='/planning'">
|
|
||||||
<span class="tooltiptext thin">Programme</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>
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
9
build/lib/thsf/templates/navbar.html
Normal file
9
build/lib/thsf/templates/navbar.html
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
<div id="navbar_wrapper">
|
||||||
|
{% for item in navbar %}
|
||||||
|
<i class="button tooltip black {{ item['classes'] }}"
|
||||||
|
title="{{item['name']}}"
|
||||||
|
alt="{{item['name']}}"
|
||||||
|
onclick="document.location='{{item['url']}}'">
|
||||||
|
<span class="tooltiptext thin">{{item['name']}}</span>
|
||||||
|
</i>
|
||||||
|
{% endfor %}
|
@ -9,11 +9,6 @@
|
|||||||
{% for slot in slots %}
|
{% for slot in slots %}
|
||||||
<div class="slot">
|
<div class="slot">
|
||||||
<div class="metadata">
|
<div class="metadata">
|
||||||
<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><span class="title white">{{slot["title"]}}</span>
|
|
||||||
</i>
|
|
||||||
<div class="speakers">
|
<div class="speakers">
|
||||||
{% for speaker in slot["speakers"] %}
|
{% for speaker in slot["speakers"] %}
|
||||||
{{speaker["name"] | title}}
|
{{speaker["name"] | title}}
|
||||||
@ -28,12 +23,18 @@
|
|||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</i> {{ ", " if not loop.last else "" }}
|
</i><br/>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</div>
|
</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>
|
||||||
<div class="data">
|
<div class="data">
|
||||||
<div class="details">
|
<div class="details">
|
||||||
|
<div class="title black">{{slot["title"]}}</div>
|
||||||
<div class="room">{{slot["slot"]["room"]["fr"]}}</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 class="start">{{slot["slot"]["start"] | date2dmyhm}} - {{slot["duration"]}} minutes ({{slot["content_locale"] | capitalize}})</div>
|
||||||
</div>
|
</div>
|
||||||
@ -43,20 +44,65 @@
|
|||||||
{% endif %}
|
{% endif %}
|
||||||
<p>{{slot["abstract"]}}</p>
|
<p>{{slot["abstract"]}}</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="description">{{slot["description"]}}</div>
|
<!-- <div class="description">{{slot["description"]}}</div> -->
|
||||||
{% if slot["resources"] %}
|
|
||||||
<div class="resources">
|
|
||||||
<h3>Ressources</h3>
|
|
||||||
{% for resource in slot["resources"] %}
|
|
||||||
<div class="resource">
|
|
||||||
<a class="thin" href="{{resource['resource']}}">{{resource["description"]}}</a>
|
|
||||||
</div>
|
|
||||||
{% endfor %}
|
|
||||||
</div>
|
|
||||||
{% endif %}
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{% endblock %}
|
{% 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 %}
|
||||||
|
36
config.yml
36
config.yml
@ -28,4 +28,38 @@ pretalx:
|
|||||||
apikey: bb770a53b15467dfb67c03d178004aca9e4819d6
|
apikey: bb770a53b15467dfb67c03d178004aca9e4819d6
|
||||||
event: thsf-2023
|
event: thsf-2023
|
||||||
schedule: wip
|
schedule: wip
|
||||||
|
navbar:
|
||||||
|
items:
|
||||||
|
- name: Home
|
||||||
|
classes: fa-solid fa-house
|
||||||
|
url: /
|
||||||
|
- name: Programme
|
||||||
|
classes: fa-regular fa-calendar
|
||||||
|
url: /planning
|
||||||
|
- name: Lieu
|
||||||
|
classes: fa-solid fa-map-location-dot
|
||||||
|
url: /place
|
||||||
|
- name: Restauration
|
||||||
|
classes: fa-solid fa-burger
|
||||||
|
url: /food
|
||||||
|
- name: Goodies
|
||||||
|
classes: fa-solid fa-shirt
|
||||||
|
url: /goodies
|
||||||
|
- name: Concerts & DJ Sets
|
||||||
|
classes: fa-solid fa-guitar
|
||||||
|
url: /concerts
|
||||||
|
- name: Ateliers
|
||||||
|
classes: fa-solid fa-screwdriver-wrench
|
||||||
|
url: /workshops
|
||||||
|
- name: Projections
|
||||||
|
classes: fa-solid fa-film
|
||||||
|
url: /screenings
|
||||||
|
- name: Tables rondes
|
||||||
|
classes: fa-solid fa-users-line
|
||||||
|
url: /discussions
|
||||||
|
- name: Installations artistiques
|
||||||
|
classes: fa-solid fa-palette
|
||||||
|
url: /exhibitions
|
||||||
|
- name: Présentations
|
||||||
|
classes: fa-solid fa-person-chalkboard
|
||||||
|
url: /talks
|
||||||
|
@ -10,6 +10,7 @@ src/thsf.egg-info/dependency_links.txt
|
|||||||
src/thsf.egg-info/requires.txt
|
src/thsf.egg-info/requires.txt
|
||||||
src/thsf.egg-info/top_level.txt
|
src/thsf.egg-info/top_level.txt
|
||||||
src/thsf/backend/__init__.py
|
src/thsf/backend/__init__.py
|
||||||
|
src/thsf/navbar/__init__.py
|
||||||
src/thsf/schedule/__init__.py
|
src/thsf/schedule/__init__.py
|
||||||
src/thsf/static/css/planning.css
|
src/thsf/static/css/planning.css
|
||||||
src/thsf/static/css/style.css
|
src/thsf/static/css/style.css
|
||||||
@ -25,4 +26,5 @@ src/thsf/static/images/logo.svg
|
|||||||
src/thsf/static/images/pretalx-header.png
|
src/thsf/static/images/pretalx-header.png
|
||||||
src/thsf/templates/base.html
|
src/thsf/templates/base.html
|
||||||
src/thsf/templates/index.html
|
src/thsf/templates/index.html
|
||||||
|
src/thsf/templates/navbar.html
|
||||||
src/thsf/templates/planning.html
|
src/thsf/templates/planning.html
|
@ -1,3 +1,4 @@
|
|||||||
|
import re
|
||||||
import sys
|
import sys
|
||||||
import json
|
import json
|
||||||
import logging
|
import logging
|
||||||
@ -6,6 +7,7 @@ import yaml
|
|||||||
from flask import Flask, render_template, redirect, request, url_for
|
from flask import Flask, render_template, redirect, request, url_for
|
||||||
from thsf.backend import Backend
|
from thsf.backend import Backend
|
||||||
from thsf.schedule import Schedule
|
from thsf.schedule import Schedule
|
||||||
|
from thsf.navbar import Navbar
|
||||||
|
|
||||||
|
|
||||||
# ------------------------------------------------------------------------------
|
# ------------------------------------------------------------------------------
|
||||||
@ -37,6 +39,7 @@ try:
|
|||||||
apiprefix=app.local_config["pretalx"]["apiprefix"],
|
apiprefix=app.local_config["pretalx"]["apiprefix"],
|
||||||
apikey=app.local_config["pretalx"]["apikey"])
|
apikey=app.local_config["pretalx"]["apikey"])
|
||||||
schedule = Schedule()
|
schedule = Schedule()
|
||||||
|
navbar = Navbar(config=app.local_config["navbar"])
|
||||||
except Exception as err:
|
except Exception as err:
|
||||||
logger.critical("[{}] {}".format(err.__class__, str(err)))
|
logger.critical("[{}] {}".format(err.__class__, str(err)))
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
@ -73,6 +76,8 @@ def date2dmyhm(slot_type):
|
|||||||
"Atelier": "fa-solid fa-screwdriver-wrench",
|
"Atelier": "fa-solid fa-screwdriver-wrench",
|
||||||
"Exposition": "fa-solid fa-palette"}
|
"Exposition": "fa-solid fa-palette"}
|
||||||
return slot_types[slot_type]
|
return slot_types[slot_type]
|
||||||
|
|
||||||
|
|
||||||
# ------------------------------------------------------------------------------
|
# ------------------------------------------------------------------------------
|
||||||
# -- Routes
|
# -- Routes
|
||||||
# ------------------------------------------------------------------------------
|
# ------------------------------------------------------------------------------
|
||||||
@ -83,63 +88,60 @@ def favicon():
|
|||||||
|
|
||||||
@app.route('/', methods=['GET'])
|
@app.route('/', methods=['GET'])
|
||||||
def index():
|
def index():
|
||||||
return render_template("index.html")
|
return render_template("index.html",
|
||||||
|
navbar=navbar.get_from_page(page="/"))
|
||||||
|
|
||||||
@app.route('/planning', methods=['GET'])
|
@app.route('/planning', methods=['GET'])
|
||||||
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()
|
||||||
# schedule.set_slots(slots["slots"])
|
return render_template("planning.html",
|
||||||
return render_template("planning.html", slots=slots["slots"])
|
slots=slots["slots"],
|
||||||
# return "toto"
|
navbar=navbar.get_from_page(page="/planning"))
|
||||||
# for slot in sched["slots"]:
|
|
||||||
# schedule.add_slot(slot)
|
|
||||||
# return schedule.df.to_html()
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@app.route('/place', methods=['GET'])
|
||||||
|
def place():
|
||||||
|
return render_template("index.html",
|
||||||
|
navbar=navbar.get_from_page(page="/place"))
|
||||||
|
|
||||||
|
@app.route('/food', methods=['GET'])
|
||||||
|
def food():
|
||||||
|
return render_template("index.html",
|
||||||
|
navbar=navbar.get_from_page(page="/food"))
|
||||||
|
|
||||||
|
@app.route('/goodies', methods=['GET'])
|
||||||
|
def goodies():
|
||||||
|
return render_template("index.html",
|
||||||
|
navbar=navbar.get_from_page(page="/goodies"))
|
||||||
|
|
||||||
@app.route('/concerts', methods=['GET'])
|
@app.route('/concerts', methods=['GET'])
|
||||||
def concerts():
|
def concerts():
|
||||||
return "concerts"
|
return render_template("index.html",
|
||||||
|
navbar=navbar.get_from_page(page="/concerts"))
|
||||||
|
|
||||||
@app.route('/djsets', methods=['GET'])
|
|
||||||
def djsets():
|
|
||||||
return "djsets"
|
|
||||||
|
|
||||||
|
|
||||||
@app.route('/exhibitions', methods=['GET'])
|
|
||||||
def exhibitions():
|
|
||||||
return "exhibitions"
|
|
||||||
|
|
||||||
|
|
||||||
@app.route('/lighttalks', methods=['GET'])
|
|
||||||
def lighttalks():
|
|
||||||
return "lighttalks"
|
|
||||||
|
|
||||||
|
|
||||||
@app.route('/paneldiscussions', methods=['GET'])
|
|
||||||
def paneldiscussions():
|
|
||||||
return "paneldiscussions"
|
|
||||||
|
|
||||||
|
|
||||||
@app.route('/screenings', methods=['GET'])
|
|
||||||
def screenings():
|
|
||||||
return "screenings"
|
|
||||||
|
|
||||||
|
|
||||||
@app.route('/talks', methods=['GET'])
|
|
||||||
def talks():
|
|
||||||
return "talks"
|
|
||||||
|
|
||||||
|
|
||||||
@app.route('/workshops', methods=['GET'])
|
@app.route('/workshops', methods=['GET'])
|
||||||
def workshops():
|
def workshops():
|
||||||
return "workshops"
|
return render_template("index.html",
|
||||||
|
navbar=navbar.get_from_page(page="/workshops"))
|
||||||
|
|
||||||
|
@app.route('/screenings', methods=['GET'])
|
||||||
|
def screenings():
|
||||||
|
return render_template("index.html",
|
||||||
|
navbar=navbar.get_from_page(page="/screenings"))
|
||||||
|
|
||||||
|
@app.route('/discussions', methods=['GET'])
|
||||||
|
def discussions():
|
||||||
|
return render_template("index.html",
|
||||||
|
navbar=navbar.get_from_page(page="/discussions"))
|
||||||
|
|
||||||
|
@app.route('/exhibitions', methods=['GET'])
|
||||||
|
def exhibitions():
|
||||||
|
return render_template("index.html",
|
||||||
|
navbar=navbar.get_from_page(page="/exhibitions"))
|
||||||
|
|
||||||
|
@app.route('/talks', methods=['GET'])
|
||||||
|
def talks():
|
||||||
|
return render_template("index.html",
|
||||||
|
navbar=navbar.get_from_page(page="/talks"))
|
||||||
|
|
||||||
|
|
||||||
# ------------------------------------------------------------------------------
|
# ------------------------------------------------------------------------------
|
||||||
|
6
src/thsf/navbar/__init__.py
Normal file
6
src/thsf/navbar/__init__.py
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
class Navbar:
|
||||||
|
def __init__(self, config):
|
||||||
|
self.config = config
|
||||||
|
|
||||||
|
def get_from_page(self, page):
|
||||||
|
return [item for item in self.config["items"] if item["url"] != page]
|
@ -25,7 +25,7 @@
|
|||||||
align-content: flex-start;
|
align-content: flex-start;
|
||||||
padding: 0.5em;
|
padding: 0.5em;
|
||||||
border-style: solid;
|
border-style: solid;
|
||||||
height: 13em;
|
height: 8em;
|
||||||
}
|
}
|
||||||
|
|
||||||
.metadata {
|
.metadata {
|
||||||
@ -54,15 +54,15 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.title {
|
.title {
|
||||||
font-family: pfdintextcomppromedium;
|
font-family: pfdintextcompprothin;
|
||||||
font-weight: 250;
|
font-weight: bold;
|
||||||
margin-bottom: 0.5em;
|
margin-bottom: 0.2em;
|
||||||
}
|
}
|
||||||
|
|
||||||
.speakers {
|
.speakers {
|
||||||
font-family: pfdintextcompprothin;
|
font-family: pfdintextcompprothin;
|
||||||
font-weight: 250;
|
font-weight: bold;
|
||||||
margin-bottom: 0.5em;
|
margin-bottom: 0.2em;
|
||||||
}
|
}
|
||||||
|
|
||||||
.speaker_details {
|
.speaker_details {
|
||||||
@ -82,7 +82,7 @@
|
|||||||
bottom: 0;
|
bottom: 0;
|
||||||
left: 0;
|
left: 0;
|
||||||
opacity: 0;
|
opacity: 0;
|
||||||
transform: translateX(2em) translateY(50%);
|
transform: translateY(120%);
|
||||||
transition: opacity 1s;
|
transition: opacity 1s;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -114,13 +114,13 @@
|
|||||||
|
|
||||||
.data > .abstract > p {
|
.data > .abstract > p {
|
||||||
text-align: justify;
|
text-align: justify;
|
||||||
font-size: 1em;
|
font-size: 0.8em;
|
||||||
}
|
}
|
||||||
|
|
||||||
.data > .details {
|
.data > .details {
|
||||||
font-family: pfdintextcomppromedium;
|
font-family: pfdintextcompprothin;
|
||||||
font-weight: 250;
|
font-weight: bold;
|
||||||
margin-bottom: 0.5em;
|
margin-bottom: 0.2em;
|
||||||
}
|
}
|
||||||
|
|
||||||
.data > .resources > .resource > a {
|
.data > .resources > .resource > a {
|
||||||
|
@ -21,59 +21,7 @@
|
|||||||
{% block content %}
|
{% block content %}
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
{% block navbar %}
|
{% block navbar %}
|
||||||
<div id="navbar_wrapper">
|
{% include "navbar.html" %}
|
||||||
<i class="button tooltip black fa-regular fa-calendar"
|
|
||||||
title="Programme"
|
|
||||||
alt="Programme"
|
|
||||||
onclick="document.location='/planning'">
|
|
||||||
<span class="tooltiptext thin">Programme</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 %}
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
9
src/thsf/templates/navbar.html
Normal file
9
src/thsf/templates/navbar.html
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
<div id="navbar_wrapper">
|
||||||
|
{% for item in navbar %}
|
||||||
|
<i class="button tooltip black {{ item['classes'] }}"
|
||||||
|
title="{{item['name']}}"
|
||||||
|
alt="{{item['name']}}"
|
||||||
|
onclick="document.location='{{item['url']}}'">
|
||||||
|
<span class="tooltiptext thin">{{item['name']}}</span>
|
||||||
|
</i>
|
||||||
|
{% endfor %}
|
@ -9,11 +9,6 @@
|
|||||||
{% for slot in slots %}
|
{% for slot in slots %}
|
||||||
<div class="slot">
|
<div class="slot">
|
||||||
<div class="metadata">
|
<div class="metadata">
|
||||||
<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><span class="title white">{{slot["title"]}}</span>
|
|
||||||
</i>
|
|
||||||
<div class="speakers">
|
<div class="speakers">
|
||||||
{% for speaker in slot["speakers"] %}
|
{% for speaker in slot["speakers"] %}
|
||||||
{{speaker["name"] | title}}
|
{{speaker["name"] | title}}
|
||||||
@ -28,12 +23,18 @@
|
|||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</i> {{ ", " if not loop.last else "" }}
|
</i><br/>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</div>
|
</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>
|
||||||
<div class="data">
|
<div class="data">
|
||||||
<div class="details">
|
<div class="details">
|
||||||
|
<div class="title black">{{slot["title"]}}</div>
|
||||||
<div class="room">{{slot["slot"]["room"]["fr"]}}</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 class="start">{{slot["slot"]["start"] | date2dmyhm}} - {{slot["duration"]}} minutes ({{slot["content_locale"] | capitalize}})</div>
|
||||||
</div>
|
</div>
|
||||||
@ -44,16 +45,6 @@
|
|||||||
<p>{{slot["abstract"]}}</p>
|
<p>{{slot["abstract"]}}</p>
|
||||||
</div>
|
</div>
|
||||||
<!-- <div class="description">{{slot["description"]}}</div> -->
|
<!-- <div class="description">{{slot["description"]}}</div> -->
|
||||||
<!-- {% if slot["resources"] %}
|
|
||||||
<div class="resources">
|
|
||||||
<h3>Ressources</h3>
|
|
||||||
{% for resource in slot["resources"] %}
|
|
||||||
<div class="resource">
|
|
||||||
<a class="thin" href="{{resource['resource']}}">{{resource["description"]}}</a>
|
|
||||||
</div>
|
|
||||||
{% endfor %}
|
|
||||||
</div>
|
|
||||||
{% endif %} -->
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
Loading…
Reference in New Issue
Block a user