"Firt release"

This commit is contained in:
2018-03-05 22:12:02 +01:00
parent f1ec84ef16
commit ec8b53c3e5
22 changed files with 7205 additions and 128 deletions

View File

@@ -9,16 +9,17 @@
</p>
<p>
Notez que:
<ul>
<li>Votre adresse mail doit être valide et consultée régulièrement si vous ne voulez pas manquez des informations importantes telels que les dates de réunions de staff</li>
<li>Votre numéro de téléphone nous permettra de vous contacter pendant l'évènement</li>
<li>Si vous avez un régime alimentaire particulier (intolérences, veganisme, religieux), merci de le préciser dans le champs prévu à cet effet</li>
<li>Aucune des données que vous nous transmettrez ne sera fournie à un tiers</li>
</ul>
</p>
<ul>
<li>Votre adresse mail doit être <strong>valide et consultée</strong> régulièrement si vous ne voulez pas manquez des informations importantes telels que les dates de réunions de staff</li>
<li>Un nom ou psedonyme est nécessaire pour pouvoir s'enregistrer sur <a href='/staffsheet'>la feuille de staff</a></li>
<li>Votre numéro de téléphone nous permettra de vous contacter pendant l'évènement</li>
<li>Si vous avez un régime alimentaire particulier (intolérences, veganisme, religieux), merci de le préciser dans le champs prévu à cet effet</li>
<li>Hormis votre pseudonyme aucune des données que vous nous transmettrez ne sera exposée au public ou fournie à un tiers</li>
</ul>
<form method='POST' action='/account/update'>
<label>Adresse email: </label><input id='login' name='login' type='text' value='{{ mail }}' disabled='disabled'/><br/>
<label>Prénom ou pseudo: </label><input id='name' name='name' type='text' value='{{ name }}'/><br/>
<label>Pseudonyme: </label><input id='name' name='name' type='text' value='{{ name }}' required maxlength=20/><br/>
<label>Nouveau mot de passe: </label><input id='password' name='password' type='password'/><br/>
<label>Confirmation mot de passe: </label><input id='confirm' name='confirm' type='password'/><br/>
<label>Numéro de téléphone: </label><input id='phone' name='phone' type='text' value='{{ phone }}'/><br/>

View File

@@ -4,7 +4,7 @@
<article>
<h3>Informations du compte</h3>
<form method='POST' action='/account/update/{{ user.id }}'>
<label>Adresse email: </label><input id='login' name='login' type='text' value='{{ user.mail }}' disabled='disabled'/><br/>
<label>Adresse email: </label><input id='login' name='login' type='text' value='{{ user.mail }}' disabled='disabled' required/><br/>
<label>Prénom ou pseudo: </label><input id='name' name='name' type='text' value='{{ user.name }}'/><br/>
<label>Nouveau mot de passe: </label><input id='password' name='password' type='password'/><br/>
<label>Confirmation mot de passe: </label><input id='confirm' name='confirm' type='password'/><br/>

19
templates/confirm.html Normal file
View File

@@ -0,0 +1,19 @@
{% extends "index.html" %}
{% block title %}Login{% endblock %}
{% block nav %}{% endblock %}
{% block main %}
<article class='login'>
<h3>Confirmation de votre inscription</h3>
<p>Merci de confirmer l'adresse de courriel et le mot de passe avec lesquels vous vous êtes enregistré.</p>
</article>
<article class='left'>
<form method='POST' action='/confirm/link/{{ link_id }}'>
<label>Adresse mail: </label><input id='login' name='login' type='text' /><br/>
<label>Mot de passe: </label><input id='password' name='password' type='password' /><br/>
<input type='submit' value='Log me in'>
</form>
<p class='note'>
Mot de passe oublié ? Envoyez une <a href='https://bofh.tetalab.org/?do=newtask&project=2'>demande de réinitialisation de votre mot de passe</a>.
</p>
</article>
{% endblock %}

View File

@@ -32,7 +32,7 @@
{% endblock %}
</nav>
{% endblock%}
<main>
<main id='main'>
{% if navbar %}
<div class='navbar_container'>
<ul class='horizontal'>
@@ -62,19 +62,10 @@
est précieuse.
</p>
<p>
Ce site vous permettra:
<ul>
<li>
de vous enregistrer afin de faire partie du "Staff", cette équipe de super-héros sans qui le THSF ne
saurait être un moment agréable, sûr et convivial.
</li>
<li>
de sélectionner le poste et les créneaux horaires pendant lesquels vous souhaitez vous rendre disponible.
</li>
<li>
de poser vos questions, obtenir des réponses et être tenu informé des évolutions de l'organisation et du déroulement du THSF via la mailing list du staff.
</li>
</ul>
Une fois vos <a href='/account'>informations personnelles</a> duement renseignées vous pourrez <a href='/staffsheet'>sélectionner les postes et les créneaux horaires</a> pendant lesquels vous souhaitez vous rendre disponible.
</p>
<p>
Le <a href='https://www.tetalab.org'>Tetal@b</a> et l'ensemble de l'équipe d'organisation du THSF vous remercie pour votre aide.
</p>
</article>
{% endblock %}

View File

@@ -1,29 +1,34 @@
{% extends "index.html" %}
{% block title %}Liste des tours de staff{% endblock %}
{% block main %}
{{ A }}
<article>
<h3>Liste des tours de staff enregistrés <input class='add' value='' title='Ajouter un tour de staff' onclick='javascript:document.location="/turn/new"'/></h3>
<div class='table_header'>
<div class='border_right' style='width: 40px;'>ID</div>
<div class='border_right'>Role</div>
<div class='border_right'>Jour</div>
<div class='border_right'>Début</div>
<div class='border_right'>Fin</div>
<div style='width: 50px;'>Action</div>
<div class='border_right' style='width: 240px;'>Role</div>
<div class='border_right' style='width: 150px;'>Jour</div>
<div class='border_right' style='width: 150px;'>Début</div>
<div class='border_right' style='width: 150px;'>Fin</div>
<div class='border_right' style='width: 100px;'>Slots</div>
<div style='width: 50px;' style='width: 50px;'>Action</div>
</div>
{% set row_class = cycler('odd', 'even') %}
{% for turn in turns %}
{% for day in turns %}
{% for turn in day[1] %}
<div class='table_row {{ row_class.next() }}'>
<div class='border_right' style='width: 40px;'>{{ turn[0].id }}</div>
<div class='border_right'>{{ turn[1] }}</div>
<div class='border_right'>{{ turn[0].wday }}</div>
<div class='border_right'>{{ turn[0].start_time }}</div>
<div class='border_right'>{{ turn[0].end_time }}</div>
<div class='border_right' style='width: 240px;'>{{ turn[1] }}</div>
<div class='border_right' style='width: 150px;'>{{ day[0] }}</div>
<div class='border_right' style='width: 150px;'>{{ turn[0].start_time }}</div>
<div class='border_right' style='width: 150px;'>{{ turn[0].end_time }}</div>
<div class='border_right' style='width: 100px;'>{{ turn[0].num_slot }}</div>
<div style='width: 50px;'>
<input class='edit' value='' onclick='javascript:document.location="/turn/{{ turn[0].id }}"' title='Éditer'/>
<input class='trash' value='' onclick='javascript:delete_turn({{ turn[0].id }});' title='Supprimer'/>
</div>
</div>
{% endfor %}
{% endfor %}
</article>
{% endblock %}

View File

@@ -14,25 +14,25 @@
</p>
<p>
Ce site vous permettra:
<ul>
<li>
de vous enregistrer afin de faire partie du "Staff", cette équipe de super-héros sans qui le THSF ne
saurait être un moment agréable, sûr et convivial.
</li>
<li>
de sélectionner le poste et les créneaux horaires pendant lesquels vous souhaitez vous rendre disponible.
</li>
<li>
d'être tenu informé des évolutions de l'organisation et du déroulement du THSF via la mailing list du staff.
</li>
</ul>
</p>
<ul>
<li>
de vous enregistrer afin de faire partie du "Staff", cette équipe de super-héros sans qui le THSF ne
saurait être un moment agréable, sûr et convivial.
</li>
<li>
de sélectionner le poste et les créneaux horaires pendant lesquels vous souhaitez vous rendre disponible.
</li>
<li>
d'être tenu informé des évolutions de l'organisation et du déroulement du THSF via la mailing list du staff.
</li>
</ul>
<p>
Nul besoin de compétences particulières pour rejoindre notre équipe sinon votre meilleure volonté et votre bonne humeur
qui feront du THSF un moment unique de partage.
</p>
<p>
Pour vous enregistrer, munissez vous de votre adresse email et renseignez les champs de la section "<strong>Inscription</strong>".
Pour vous enregistrer, munissez vous de <strong>votre plus belle adresse email</strong> et renseignez les champs de la section "<strong>Inscription</strong>".
</p>
<p>
Si vous vous être préalablement enregistré, renseignez uniquement les champs de la section "<strong>Connexion</strong>"
@@ -48,7 +48,7 @@
<form method='POST' action='/login'>
<label>Adresse mail: </label><input id='login' name='login' type='text' /><br/>
<label>Mot de passe: </label><input id='password' name='password' type='password' /><br/>
<input type='submit' value='Log me in' onclick='javascript:return verify_login();'>
<input type='submit' value='Log me in'>
</form>
<p class='note'>
Mot de passe oublié ? Envoyez une <a href='https://bofh.tetalab.org/?do=newtask&project=2'>demande de réinitialisation de votre mot de passe</a>.
@@ -59,12 +59,13 @@
<h3>Inscription</h3>
</article>
<article class='left'>
<form method='POST' action='/register'>
<label>Adresse mail: </label><input id='reg_mail' name='login' type='text' /><br/>
<label>Mot de passe (8 char min.): </label><input id='reg_password' name='password' type='password' /><br/>
<label>Confirmation: </label><input id='reg_confirm' name='confirm' type='password' /><br/>
<input type='submit' value='Register me NOW !' onclick='javascript:return register();'>
<form method='POST' action='/register' onsubmit='return register();'>
<label>Adresse mail: </label><input id='reg_mail' name='login' type='text' required /><br/>
<label>Mot de passe (8 char min.): </label><input id='reg_password' name='password' type='password' required /><br/>
<label>Confirmation: </label><input id='reg_confirm' name='confirm' type='password' required /><br/>
<input type='submit' value='Register me NOW !'>
</form>
<p class='note'>En vous inscrivant vous déclarez être prèt à découvrir l'insondabilité de l'improbable</p>
</article>
<hr/>
{% endblock %}

View File

@@ -11,11 +11,12 @@
</select><br/>
<label>Jour de la semaine: </label><select id='day' name='day'>
{% for day in days %}
<option value='{{ day }}'>{{ day }}</option>
<option value='{{ day[1] }}'>{{ day[0] }}</option>
{% endfor %}
</select><br/>
<label>Début (HH:MM:SS) </label><input id='start' name='start' type='text' maxlength=8/><br/>
<label>Fin: (HH:MM:SS) </label><input id='end' name='end' type='text' maxlength=8/><br/>
<label>Nombre de slots (max. 4) </label><input id='num_slot' name='num_slot' type='number' min='1' max='4'/><br/>
<input type='submit' value='Enregistrer' onclick='javascript:return save_turn();'/>
</form>
</article>

84
templates/staffsheet.html Normal file
View File

@@ -0,0 +1,84 @@
{% extends "index.html" %}
{% block title %}Feuille de staff{% endblock %}
{% block main %}
<article id='roles'>
<h3>Fiches de poste<input class='print' value='' title='Imprimer' onclick='javascript:print_page();'/></h3>
<p>Les postes de référents (référent staff, référent bar, référent run) sont réservés à des personnes ayant une bonne connaissance du lieu et de l'évènement.</p>
{% for role in roles %}
<div class='table_header'><div class='sheet_day'>{{ role.role }}</div></div>
<div class='table_row'>
<ul>
{% set desc = role.description.split('|') %}
{% for point in desc %}
<li>{{ point }}</li>
{% endfor %}
</ul>
</div>
{% endfor %}
</article>
<hr/>
<article id='staff_sheet'>
<h3>Feuille de staff</h3>
<ul>
<li><strong>Ménage le soir même pour tous les derniers créneaux du jour</strong></li>
<li><strong>Tâches dévolues à tous:</strong>
<ul>
<li>Veiller à la sécurité générale du lieu</li>
<li>Ramassage bouteilles ou objets en verre</li>
<li>Séparation des bagarres (rarissime)</li>
<li>Sécurisation des personnes en difficulté (ou trop alcoolisées), etc...</li>
<li>Sourire et bonne humeur quel que soit le niveau de fatigue ;)</li>
</ul>
</li>
</ul>
<p>Mode d'emploi:</p>
<ul>
<li>Cliquez sur l'un des créneaux vacants pour le réserver</li>
<li>Cliquez sur l'un des créneaux que vous occupez pour le libérez</li>
</ul>
{% for day in turns %}
{% set wday = day[0] %}
{% set day_turns = day[1] %}
{% set cur_role = '' %}
<div class='table_header'><div class='sheet_day' style='page-break-before: always;'>{{ wday }}</div></div>
{% for turn in day_turns %}
{% set role = turn[1] %}
{% set start_time = turn[0].start_time %}
{% set end_time = turn[0].end_time %}
{% set num_slot = turn[0].num_slot %}
{% set role_id = turn[0].role_id %}
{% set turn_id = turn[0].id %}
{% if role != cur_role %}
{% set cur_role = role %}
<div class='table_header'>
<div class='sheet_role'>{{ role }}</div>
</div>
{% endif %}
<div class='table_row' style='border-bottom-color: #FF5D00; border-bottom-width: 1px; border-bottom-style: solid;'>
<div class='sheet_time border_right'>{{ start_time.strftime('%HH%M') }} / {{ end_time.strftime('%HH%M') }}</div>
{% for slot in range(0, num_slot) %}
{% set allocated_slot = [] %}
{% set border = '' %}
{% if slot != num_slot - 1 %}
{% set border = 'border_right' %}
{% endif %}
{% for sslot in staffs %}
{% if sslot[0].turn_id == turn_id and sslot[0].slot_num == slot %}
{% if allocated_slot.append(sslot[0].slot_num) %}
{% endif %}
{% if user_id == sslot[0].user_id %}
<div class='sheet_user{{ num_slot }} {{ border }}' onclick='javascript:clear_sheet({{ turn_id }}, {{ slot }})'>{{ sslot[1] }}</div>
{% else %}
<div class='sheet_user{{ num_slot }} {{ border }}' style='cursor: text;'>{{ sslot[1] }}</div>
{% endif %}
{% endif %}
{% endfor %}
{% if slot not in allocated_slot %}
<div class='sheet_user{{ num_slot }} {{ border }}' onclick='javascript:update_sheet({{ turn_id }}, {{ slot }})'>&nbsp;</div>
{% endif %}
{% endfor %}
</div>
{% endfor %}
{% endfor %}
</article>
{% endblock %}

View File

@@ -0,0 +1,87 @@
<!DOCTYPE html>
<html lang='zxx'>
<head>
<title>We Make THSF - {% block title %}Feuille de staff{% endblock %}</title>
<meta name="viewport" content="initial-scale=1.0" />
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<link rel="stylesheet" type="text/css" href="/static/styles/tetawebapp_pdf.css" />
<link rel="icon" type="image/png" href="/static/images/favicon.png" />
</head>
<body>
<div class='content'>
<main id='main'>
<article id='roles'>
<h3>Fiches de poste</h3>
<p>Les postes de référents (référent staff, référent bar, référent run) sont réservés à des personnes ayant une bonne connaissance du lieu et de l'évènement.</p>
{% for role in roles %}
<div class='table_header'><div class='sheet_day'>{{ role.role }}</div></div>
<div class='table_row'>
<ul>
{% set desc = role.description.split('|') %}
{% for point in desc %}
<li>{{ point }}</li>
{% endfor %}
</ul>
</div>
{% endfor %}
</article>
<hr/>
<article id='staff_sheet'>
<h3>Feuille de staff</h3>
<ul>
<li><strong>Ménage le soir même pour tous les derniers créneaux du jour</strong></li>
<li><strong>Tâches dévolues à tous:</strong>
<ul>
<li>Veiller à la sécurité générale du lieu</li>
<li>Ramassage bouteilles ou objets en verre</li>
<li>Séparation des bagarres (rarissime)</li>
<li>Sécurisation des personnes en difficulté (ou trop alcoolisées), etc...</li>
<li>Sourire et bonne humeur quel que soit le niveau de fatigue ;)</li>
</ul>
</li>
</ul>
{% for day in turns %}
{% set wday = day[0] %}
{% set day_turns = day[1] %}
{% set cur_role = '' %}
<div class='table_header'><div class='sheet_day'>{{ wday }}</div></div>
{% for turn in day_turns %}
{% set role = turn[1] %}
{% set start_time = turn[0].start_time %}
{% set end_time = turn[0].end_time %}
{% set num_slot = turn[0].num_slot %}
{% set role_id = turn[0].role_id %}
{% set turn_id = turn[0].id %}
{% if role != cur_role %}
{% set cur_role = role %}
<div class='table_header'>
<div class='sheet_role'>{{ role }}</div>
</div>
{% endif %}
<div class='table_row' style='border-bottom-color: #FF5D00; border-bottom-width: 1px; border-bottom-style: solid;'>
<div class='sheet_time border_right'>{{ start_time.strftime('%HH%M') }} / {{ end_time.strftime('%HH%M') }}</div>
{% for slot in range(0, num_slot) %}
{% set allocated_slot = [] %}
{% set border = '' %}
{% if slot != num_slot - 1 %}
{% set border = 'border_right' %}
{% endif %}
{% for sslot in staffs %}
{% if sslot[0].turn_id == turn_id and sslot[0].slot_num == slot %}
{% if allocated_slot.append(sslot[0].slot_num) %}
{% endif %}
<div class='sheet_user{{ num_slot }} {{ border }}' style='cursor: text;' id='staff_{{ staff }}'>{{ sslot[1] }}</div>
{% endif %}
{% endfor %}
{% if slot not in allocated_slot %}
<div class='sheet_user{{ num_slot }} {{ border }}' id='staff_{{ staff }}' onclick='javascript:update_sheet({{ turn_id }}, {{ slot }})'>&nbsp;</div>
{% endif %}
{% endfor %}
</div>
{% endfor %}
{% endfor %}
</article>
</main>
</div>
</body>
</html>

View File

@@ -0,0 +1,58 @@
("Fiches de poste",)
("Les postes de référents (référent staff, référent bar, référent run) sont réservés à des personnes ayant une bonne connaissance du lieu et de l'évènement.",)
{% for role in roles %}
(" ",)
("{{ role.role }}",)
{% set desc = role.description.split('|') %}
{% for point in desc %}
("{{ point }}",)
{% endfor %}
{% endfor %}
(" ",)
("Feuille de staff",)
("Ménage le soir même pour tous les derniers créneaux du jour",)
("",)
("Tâches dévolues à tous:",)
("Veiller à la sécurité générale du lieu",)
("Ramassage bouteilles ou objets en verre",)
("Séparation des bagarres (rarissime)",)
("Sécurisation des personnes en difficulté (ou trop alcoolisées), etc...",)
("Sourire et bonne humeur quel que soit le niveau de fatigue ;)",)
(" ",)
{% for day in turns %}
{% set wday = day[0] %}
{% set day_turns = day[1] %}
{% set cur_role = '' %}
("{{ wday }}",)
{% for turn in day_turns %}
{% set role = turn[1] %}
{% set start_time = turn[0].start_time %}
{% set end_time = turn[0].end_time %}
{% set num_slot = turn[0].num_slot %}
{% set role_id = turn[0].role_id %}
{% set turn_id = turn[0].id %}
{% if role != cur_role %}
{% set cur_role = role %}
("{{ role }}",)
{% endif %}
("{{ start_time.strftime('%HH%M') }} / {{ end_time.strftime('%HH%M') }}",
{% for slot in range(0, num_slot) %}
{% set allocated_slot = [] %}
{% set border = '' %}
{% if slot != num_slot - 1 %}
{% set border = 'border_right' %}
{% endif %}
{% for sslot in staffs %}
{% if sslot[0].turn_id == turn_id and sslot[0].slot_num == slot %}
{% if allocated_slot.append(sslot[0].slot_num) %}
{% endif %}
"{{ sslot[1] }}",
{% endif %}
{% endfor %}
{% if slot not in allocated_slot %}
" ",
{% endif %}
{% endfor %}
)
{% endfor %}
{% endfor %}

View File

@@ -3,7 +3,7 @@
{% block main %}
<article>
<h3>Tour de staff:</h3>
<form method='POST' action='/turn/update/{{ turn.id }}'>
<form method='POST' action="/turn/update/{{ turn.id }}">
<label>Role: </label><select id='role_id' name='role_id'>
{% for role in roles %}
{% set selected = '' %}
@@ -16,14 +16,15 @@
<label>Jour de la semaine: </label><select id='day' name='day'>
{% for day in days %}
{% set selected = '' %}
{% if turn.wday == day %}
{% if turn.day == day[0] %}
{% set selected="selected" %}
{% endif %}
<option {{ selected }} value='{{ day }}'>{{ day }}</option>
<option {{ selected }} value='{{ day[1] }}'>{{ day[0] }}</option>
{% endfor %}
</select><br/>
<label>Début (HH:MM:SS) </label><input id='start' name='start' type='text' maxlength=8 value='{{ turn.start_time }}'/><br/>
<label>Fin: (HH:MM:SS) </label><input id='end' name='end' type='text' maxlength=8 value='{{ turn.end_time }}'/><br/>
<label>Nombre de slots (max. 4) </label><input id='num_slot' name='num_slot' type='number' min='1' max='4' value='{{ turn.num_slot }}'/><br/>
<input type='submit' value='Enregistrer' onclick='javascript:return save_turn();'/>
</form>
</article>