Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • mediatek/site-interludes
  • aeltheos/site-kwei
  • mediatek/site-kwei
3 results
Show changes
Showing
with 433 additions and 190 deletions
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 83 28" enable-background="new 0 0 83 28"><g><g><path d="M3.592 0s-3.592 5.425-3.592 14.001c0 8.578 3.592 13.999 3.592 13.999h31.421v-28h-31.421z" fill="#EC2227"/><g fill="#fff"><path d="M5.871 8.355h3.838c2.432 0 3.503 1.25 3.503 2.678 0 1.584-.938 2.231-1.384 2.431.892.268 1.874 1.117 1.874 2.7 0 2.074-1.495 3.48-3.726 3.48h-4.105v-11.289zm3.301 4.597c1.026 0 1.696-.426 1.696-1.451 0-.715-.4-1.361-1.561-1.361h-1.072v2.812h.937zm.179 5.02c1.071 0 1.986-.38 1.986-1.719 0-1.05-.691-1.628-1.942-1.628h-1.16v3.347h1.116zM24.795 17.034c.76.401 1.607.826 2.878.826 1.071 0 1.606-.625 1.606-1.295 0-.915-.647-1.316-2.253-2.006-1.428-.603-2.433-1.34-2.433-3.192 0-1.785 1.361-3.279 3.994-3.279 1.295 0 2.275.358 2.877.692l-.714 1.941c-.581-.357-1.427-.625-2.296-.625-.937 0-1.585.423-1.585 1.16 0 .716.47 1.206 1.74 1.741 2.321.981 2.945 1.786 2.945 3.391 0 2.613-1.964 3.526-3.726 3.526-1.695 0-2.944-.602-3.769-1.162l.736-1.718zM20.833 15.717v-7.362h2.365v7.452c0 3.233-1.964 4.105-4.194 4.105-2.232 0-4.195-.872-4.195-4.105v-7.452h2.366v7.362c0 1.474.602 2.186 1.83 2.186 1.226-.001 1.828-.713 1.828-2.186z"/></g></g><path fill="#fff" stroke="#ED1C24" stroke-width="1.4" stroke-miterlimit="10" d="M40.414.7h42v26.6h-42z"/><g fill="#ED1C24"><path d="M54.075 23.503c-2.046 0-3.563-.755-4.554-2.264-.99-1.51-1.485-3.579-1.485-6.209 0-3.165.67-5.722 2.009-7.669 1.34-1.948 3.267-2.922 5.783-2.922 1.379 0 2.572.244 3.579.73l-.853 2.532c-.715-.357-1.453-.536-2.216-.536-1.412 0-2.548.516-3.408 1.546-.86 1.031-1.363 2.568-1.51 4.614 1.233-.779 2.572-1.169 4.018-1.169.552 0 1.079.073 1.582.219.503.146 1.002.395 1.498.743.495.349.889.864 1.181 1.546s.438 1.502.438 2.459c0 1.899-.553 3.438-1.656 4.614s-2.572 1.766-4.406 1.766zm.219-2.58c1.672 0 2.508-1.071 2.508-3.214 0-.941-.187-1.628-.56-2.058-.374-.43-.967-.646-1.778-.646-1.055 0-2.069.268-3.043.804 0 1.737.223 3.023.67 3.859.446.837 1.18 1.255 2.203 1.255zM70.838 22.979c-.803.35-1.749.523-2.836.523-1.088 0-2.029-.174-2.824-.523-.796-.349-1.429-.803-1.899-1.363-.471-.56-.845-1.266-1.12-2.118-.276-.853-.459-1.704-.548-2.557-.089-.852-.134-1.83-.134-2.934 0-1.299.098-2.479.292-3.543.195-1.063.523-2.065.986-3.007.463-.941 1.14-1.68 2.033-2.215.893-.536 1.964-.804 3.214-.804 1.022 0 1.923.183 2.702.548s1.408.844 1.887 1.437c.479.593.868 1.315 1.169 2.167s.508 1.712.621 2.581c.113.869.171 1.814.171 2.837 0 1.104-.045 2.082-.135 2.934-.089.853-.271 1.704-.548 2.557-.275.853-.649 1.559-1.119 2.118-.472.56-1.108 1.014-1.912 1.362zm-2.836-2.325c1.071 0 1.862-.499 2.374-1.497.511-.998.767-2.625.767-4.882 0-1.428-.081-2.617-.243-3.566-.163-.95-.483-1.737-.962-2.362s-1.124-.938-1.936-.938c-.601 0-1.112.167-1.534.5s-.747.824-.974 1.473c-.228.649-.386 1.364-.475 2.143-.09.779-.135 1.696-.135 2.751 0 2.257.256 3.884.768 4.882.511.997 1.294 1.496 2.35 1.496z"/></g><g fill="none"><path d="M.832 26.824l-.132.011c-.278.044-.422.243-.452.459h.004c.062-.084.172-.151.316-.151.229 0 .392.168.392.42 0 .239-.162.46-.434.46-.276 0-.458-.217-.458-.554 0-.256.09-.458.22-.586.108-.106.251-.172.416-.192l.128-.01v.143zm-.05.75c0-.186-.106-.298-.268-.298-.106 0-.206.064-.254.16l-.018.076c.002.214.102.373.288.373.15.001.252-.125.252-.311zM1.981 27.336c0 .442-.166.687-.452.687-.254 0-.428-.238-.432-.668 0-.438.19-.676.454-.676.272 0 .43.244.43.657zm-.705.02c0 .338.104.529.264.529.178 0 .264-.21.264-.541 0-.32-.08-.53-.264-.53-.152 0-.264.189-.264.542z"/></g></g></svg>
\ No newline at end of file
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 83 28" enable-background="new 0 0 83 28"><g><g><path d="M3.592 0s-3.592 5.425-3.592 14.001c0 8.578 3.592 13.999 3.592 13.999h31.421v-28h-31.421z" fill="#EC2227"/><g fill="#fff"><path d="M5.871 8.355h3.838c2.432 0 3.503 1.25 3.503 2.678 0 1.584-.938 2.231-1.384 2.431.892.268 1.874 1.117 1.874 2.7 0 2.074-1.495 3.48-3.726 3.48h-4.105v-11.289zm3.301 4.597c1.026 0 1.696-.426 1.696-1.451 0-.715-.4-1.361-1.561-1.361h-1.072v2.812h.937zm.179 5.02c1.071 0 1.986-.38 1.986-1.719 0-1.05-.691-1.628-1.942-1.628h-1.16v3.347h1.116zM24.795 17.034c.76.401 1.607.826 2.878.826 1.071 0 1.606-.625 1.606-1.295 0-.915-.647-1.316-2.253-2.006-1.428-.603-2.433-1.34-2.433-3.192 0-1.785 1.361-3.279 3.994-3.279 1.295 0 2.275.358 2.877.692l-.714 1.941c-.581-.357-1.427-.625-2.296-.625-.937 0-1.585.423-1.585 1.16 0 .716.47 1.206 1.74 1.741 2.321.981 2.945 1.786 2.945 3.391 0 2.613-1.964 3.526-3.726 3.526-1.695 0-2.944-.602-3.769-1.162l.736-1.718zM20.833 15.717v-7.362h2.365v7.452c0 3.233-1.964 4.105-4.194 4.105-2.232 0-4.195-.872-4.195-4.105v-7.452h2.366v7.362c0 1.474.602 2.186 1.83 2.186 1.226-.001 1.828-.713 1.828-2.186z"/></g></g><path fill="#fff" stroke="#ED1C24" stroke-width="1.4" stroke-miterlimit="10" d="M40.414.7h42v26.6h-42z"/><g fill="#ED1C24"><path d="M54.075 23.503c-2.046 0-3.563-.755-4.554-2.264-.99-1.51-1.485-3.579-1.485-6.209 0-3.165.67-5.722 2.009-7.669 1.34-1.948 3.267-2.922 5.783-2.922 1.379 0 2.572.244 3.579.73l-.853 2.532c-.715-.357-1.453-.536-2.216-.536-1.412 0-2.548.516-3.408 1.546-.86 1.031-1.363 2.568-1.51 4.614 1.233-.779 2.572-1.169 4.018-1.169.552 0 1.079.073 1.582.219.503.146 1.002.395 1.498.743.495.349.889.864 1.181 1.546s.438 1.502.438 2.459c0 1.899-.553 3.438-1.656 4.614s-2.572 1.766-4.406 1.766zm.219-2.58c1.672 0 2.508-1.071 2.508-3.214 0-.941-.187-1.628-.56-2.058-.374-.43-.967-.646-1.778-.646-1.055 0-2.069.268-3.043.804 0 1.737.223 3.023.67 3.859.446.837 1.18 1.255 2.203 1.255zM61.379 19.973v-2.824l6.452-12.49h4.358v12.612h2.362v2.702h-2.362v3.312h-3.067v-3.312h-7.743zm2.8-2.702h4.943v-10.081c-.163.617-.585 1.583-1.267 2.897l-3.676 7.184z"/></g><g fill="none"><path d="M.832 26.824l-.132.011c-.278.044-.422.243-.452.459h.004c.062-.084.172-.151.316-.151.229 0 .392.168.392.42 0 .239-.162.46-.434.46-.276 0-.458-.217-.458-.554 0-.256.09-.458.22-.586.108-.106.251-.172.416-.192l.128-.01v.143zm-.05.75c0-.186-.106-.298-.268-.298-.106 0-.206.064-.254.16l-.018.076c.002.214.102.373.288.373.15.001.252-.125.252-.311zM1.66 28v-.355h-.604v-.115l.58-.829h.189v.807h.182v.137h-.182v.355h-.165zm0-.492v-.434l.006-.203h-.006l-.108.191-.318.441v.004h.426z"/></g></g></svg>
\ No newline at end of file
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 67 28" enable-background="new 0 0 67 28"><g><g><path d="M3.59 0s-3.59 5.428-3.59 14c0 8.578 3.59 14 3.59 14h31.418v-28h-31.418z" fill="#EC2227"/><path d="M20.693 23.307h-3.777l-3.337-10.91c-.098-.344-.364-1.341-.509-2.219l-.099 13.129h-3.922l.584-18.63h5.018l3.654 12.006c.217.755.437 1.756.437 2.412h.123c0-.656.219-1.657.437-2.412l3.653-12.007h5.018l.585 18.63h-3.921l-.1-13.129c-.145.877-.411 1.875-.51 2.219l-3.334 10.911z" fill="#fff"/></g><path fill="#007DC5" d="M39.007 0h28v28h-28z"/><path d="M47.688 24.284v-19.472h6.949c1.951 0 3.373.433 4.264 1.298s1.336 2.002 1.336 3.411c0 1.069-.25 1.943-.751 2.622-.5.679-1.115 1.154-1.845 1.425.983.204 1.815.705 2.494 1.502.679.798 1.019 1.876 1.019 3.233 0 1.799-.628 3.245-1.884 4.34s-2.868 1.642-4.837 1.642h-6.745zm3.334-11.276h2.621c1.019 0 1.85-.233 2.495-.7.645-.467.967-1.175.967-2.125 0-.797-.267-1.446-.802-1.947-.534-.5-1.345-.75-2.431-.75h-2.851v5.522zm0 8.629h3.08c1.001 0 1.857-.259 2.57-.776s1.069-1.319 1.069-2.405c0-2.02-1.027-3.029-3.08-3.029h-3.64v6.21z" fill="#fff"/><path d="M.152 26.673c.076-.019.198-.03.318-.03.174 0 .286.03.368.098.07.053.114.133.114.238 0 .132-.088.246-.228.296v.006c.128.03.278.136.278.336 0 .116-.046.206-.116.27-.092.086-.244.126-.464.126l-.27-.016v-1.324zm.174.552h.158c.182 0 .29-.098.29-.229 0-.155-.118-.22-.294-.22l-.154.013v.436zm0 .643l.146.008c.18 0 .346-.065.346-.262 0-.182-.158-.26-.348-.26h-.144v.514z" fill="none"/></g></svg>
\ No newline at end of file
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 66 28" enable-background="new 0 0 66 28"><g><g><path d="M3.595 0s-3.59 5.425-3.595 13.991c-.003 8.572 3.58 13.991 3.58 13.991l31.397.018.017-27.981-31.399-.019z" fill="#EC2227"/><path fill="#fff" d="M17.496 8.469l-5.919-.003v-3.475l15.56.008-.003 3.475-5.92-.003-.008 15.244-3.72-.002z"/></g><path fill="#883F98" d="M38.105 0h28v28h-28z"/><path d="M46.253 24.896v-2.94h5.349v-14.897l-4.956 2.8-1.345-2.604 6.916-3.78h3.137v18.48h4.283v2.94h-13.384z" fill="#fff"/><path d="M.472 26.864h-.004l-.226.122-.034-.134.284-.151h.15v1.299h-.17v-1.136z" fill="none"/></g></svg>
\ No newline at end of file
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 66 28" enable-background="new 0 0 66 28"><g><g><path d="M3.595 0s-3.59 5.425-3.595 13.991c-.003 8.572 3.58 13.991 3.58 13.991l31.397.018.017-27.981-31.399-.019z" fill="#EC2227"/><path fill="#fff" d="M17.496 8.469l-5.919-.003v-3.475l15.56.008-.003 3.475-5.92-.003-.008 15.244-3.72-.002z"/></g><path fill="#883F98" d="M38.105 0h28v28h-28z"/><path d="M52.665 25.147c-2.352 0-4.098-.868-5.236-2.604-1.139-1.736-1.708-4.116-1.708-7.141 0-3.64.771-6.58 2.311-8.82s3.756-3.36 6.65-3.36c1.586 0 2.958.28 4.115.84l-.979 2.912c-.822-.411-1.671-.616-2.548-.616-1.624 0-2.932.593-3.92 1.778-.99 1.186-1.568 2.954-1.736 5.306 1.418-.896 2.958-1.344 4.62-1.344.634 0 1.241.084 1.819.252.579.168 1.152.453 1.723.854.569.402 1.021.994 1.357 1.778.336.785.504 1.727.504 2.829 0 2.184-.635 3.953-1.903 5.306-1.27 1.354-2.96 2.03-5.069 2.03zm.252-2.967c1.923 0 2.884-1.232 2.884-3.696 0-1.082-.215-1.871-.644-2.366-.43-.494-1.111-.741-2.044-.741-1.214 0-2.38.308-3.5.924 0 1.997.256 3.477.77 4.438.513.96 1.358 1.441 2.534 1.441z" fill="#fff"/><path d="M.832 26.824l-.132.011c-.278.044-.422.243-.452.459h.004c.062-.084.172-.151.316-.151.229 0 .392.168.392.42 0 .239-.162.46-.434.46-.276 0-.458-.217-.458-.554 0-.256.09-.458.22-.586.108-.106.251-.172.416-.192l.128-.01v.143zm-.05.75c0-.186-.106-.298-.268-.298-.106 0-.206.064-.254.16l-.018.076c.002.214.102.373.288.373.15.001.252-.125.252-.311z" fill="none"/></g></svg>
\ No newline at end of file
{% extends "base.html" %}
\ No newline at end of file
......@@ -8,6 +8,14 @@
{% block nav_activite %}current{% endblock %}
{% block "content" %}
{% if settings.activity_submission_open %}
<ul class="messagelist">
<li class="info">
Vous pouver proposer une activité en remplissant <a href="{% url 'activity_submission' %}">ce formulaire</a>.
</li>
</ul>{% endif %}
{% if settings.display_planning %}
<h2>Planning</h2>
{% include "_planning.html" %}
......@@ -15,7 +23,7 @@
<h2>Activités</h2>
<p>Durant tout l'événement, des jeux seront en libre-service et des tables disponibles pour jouer.
Certaines activités ne pourront se faire qu'avec inscription au vue d'un nombre de places limité.
Certaines activités ne pourront se faire qu'avec inscription au vue d'une préparation en amont ou d'un nombre de places limité.
</p>
{% if settings.activity_submission_form %}
<p>Vous pouver proposer une activité en remplissant <a href="{{ settings.activity_submission_form }}">ce formulaire</a>.</p>
......@@ -38,11 +46,14 @@
{% if activity.host_name %}
<dt>Orga :</dt><dd>{{ activity.host_name }}</dd>
{% endif %}
{% if settings.show_host_emails and activity.show_email %}
<dt>Contact :</dt><dd><a href="mailto:{{ activity.host_email }}">{{ activity.host_email }}</a></dd>
{% endif %}
<dt>Type :</dt><dd>{{ activity.pretty_type }}</dd>
<dt>Places :</dt><dd>{{ activity.nb_participants }}</dd>
{% if activity.slots %}
<dt>Heure<!--/Lieu--> :</dt><dd>{% for slot in activity.slots %}
{{ slot.start|date:"l H:i" }}<!-- {{ slot.room }} -->{% if not forloop.last %},<br> {% endif %}
{% if activity.slots and settings.display_planning %}
<dt>Heure/Lieu :</dt><dd>{% for slot in activity.slots %}
{{ slot.start|date:"l H:i" }}{% if slot.room %} {{ slot.room }}{% endif %}{% if not forloop.last %},<br> {% endif %}
{% endfor %}
</dd>
{% endif %}
......
{% extends "base.html" %}
{% load static %}
{% block nav_activite %}current{% endblock %}
{% block "content" %}
<h2>Proposer une activité</h2>
{{ form.non_field_errors }}
<form method="post" action="{% url 'activity_submission' %}">
{% csrf_token %}
<ul class="messagelist">
<li class="info">
Les informations publiques (qui apparaîtrons sur la page <a href="{% url 'activites' %}">activites</a>) sont
celles <span class="underline">soulignées</span>.<br>
Les autres ne serons vues que par les orgas.
</li>
</ul>
<table>
<tr><td><strong class="underline">Titre&nbsp;:</strong></td><td> {{ form.title }}</td></tr>
<tr><td><strong class="underline">Type d'activité&nbsp;:</strong></td><td> {{ form.act_type }}</td></tr>
<tr><td><strong class="underline">Type de jeu&nbsp;:</strong></td><td> {{ form.game_type }}</td></tr>
</table>
<p><strong class="underline">Description&nbsp;:</strong> ce texte sera affiché sur la page
<a href="{% url 'activites' %}">activités</a> pour présenter votre activité.
</p>
{{ form.description }}
<h3>Organisateurs</h3>
<table>
<tr><td><strong class="underline">Nom&nbsp;:</strong></td><td> {{ form.host_name }}</td></tr>
<tr><td><strong class="underline">Email&nbsp;:</strong></td><td> {{ form.host_email }}</td></tr>
<tr><td><strong>Compte associé&nbsp;:&nbsp;</strong></td><td> {{ request.user.email }}</td></tr>
</table>
<p>
L'email de votre compte sera le principal moyen de contact.
Si vous ne souhaitez pas qu'il soit affiché, précisez le ci-dessous.
Vous pouvez également spécifier d'autres moyens de contact, ainsi que d'autres
organisateurs si vous êtes plusieurs.
</p>
{{ form.host_info }}
<h3>Participants et inscription</h3>
<table>
<tr><td><strong class="underline">Nécessite une inscription&nbsp;:</strong></td><td> {{ form.must_subscribe }}</td></tr>
<tr><td><strong>Me communiquer la liste des participants à l'avance&nbsp;:</strong></td><td> {{ form.communicate_participants }}</td></tr>
<tr><td><strong class="underline">Nombre max de participants&nbsp;:</strong></td><td> {{ form.max_participants }} (mettez 0 pour illimité)</td></tr>
{% if form.max_participants.errors %}<tr><td></td><td>{{ form.max_participants.errors }}</td></tr>{% endif %}
<tr><td><strong class="underline">Nombre min de participants&nbsp;:</strong></td><td> {{ form.min_participants }}</td></tr>
{% if form.min_participants.errors %}<tr><td></td><td>{{ form.min_participants.errors }}</td></tr>{% endif %}
</table>
<h3>Durée et crénaux</h3>
<table>
<tr><td><strong class="underline">Durée approximative&nbsp;:</strong></td><td> {{ form.duration }} (format hh:mm:ss)</td></tr>
{% if form.duration.errors %}<tr><td></td><td>{{ form.duration.errors }}</td></tr>{% endif %}
<tr><td><strong>Nombre de crénaux souhaités&nbsp;:</strong></td><td> {{ form.desired_slot_nb }}</td></tr>
{% if form.desired_slot_nb.errors %}<tr><td></td><td>{{ form.desired_slot_nb.errors }}</td></tr>{% endif %}
<tr><td><strong>Disponibilités&nbsp;:</strong></td></tr>
<tr><td>&nbsp;-&nbsp;Vendredi soir&nbsp;:</td><td>{{ form.available_friday_evening }}</td></tr>
<tr><td>&nbsp;-&nbsp;Vendredi nuit&nbsp;:</td><td>{{ form.available_friday_night }}</td></tr>
<tr><td>&nbsp;-&nbsp;Samedi matin&nbsp;:</td><td>{{ form.available_saturday_morning }}</td></tr>
<tr><td>&nbsp;-&nbsp;Samedi après-midi&nbsp;:</td><td>{{ form.available_saturday_afternoon }}</td></tr>
<tr><td>&nbsp;-&nbsp;Samedi soir&nbsp;:</td><td>{{ form.available_saturday_evening }}</td></tr>
<tr><td>&nbsp;-&nbsp;Samedi nuit&nbsp;:</td><td>{{ form.available_saturday_night }}</td></tr>
<tr><td>&nbsp;-&nbsp;Dimanche matin &nbsp;:</td><td>{{ form.available_sunday_morning }}</td></tr>
<tr><td>&nbsp;-&nbsp;Dimanche après-midi&nbsp;:</td><td>{{ form.available_sunday_afternoon }}</td></tr>
</table>
<p>Si vous avez des contraintes particulières, vous pouvez les préciser ici&nbsp;:</p>
{{ form.constraints }}
<h3>Modalités pratiques</h3>
{% comment "En présentiel" %}<p><strong>Présentiel/distanciel&nbsp;:</strong> &nbsp;{{ form.status }}</p>{% endcomment %}
<p><strong>Besoins spécifiques&nbsp;:</strong></p>
<ul>
<li>Vous faut-il une ou plusieurs salles&nbsp;?</li>
<li>Vous faut-il du matériel spécial&nbsp;?</li>
{% comment "En présentiel" %}<li>Si possible en distanciel, quel outils faut-il pour participer&nbsp;?</li>{% endcomment %}
<li>Et tout autre besoin de ce type...</li>
</ul>
{{ form.needs }}
<h3>Commentaires</h3>
<p>D'autre choses à nous communiquer qui ne rentre pas dans les champs précédents&nbsp;?</p>
{{ form.comments }}
<h3>Soumettre</h3>
<p>L'activité n'est plus modifiable une fois soumise. Les administrateurs la reliront avant de l'afficher sur le site.</p>
<div class="flex">
<input type="submit" value="Soumettre mon activité">
<a class="button" href="{% url 'profile' %}">Annuler</a>
</div>
</form>
{% endblock %}
......@@ -2,28 +2,30 @@
{% load static %}
<!doctype html>
<html lang="fr">
<head>
<!-- WEBSITE VERSION {{ constants.WEBSITE_FULL_VERSION }} -->
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<head>
<!-- WEBSITE VERSION {{ constants.WEBSITE_FULL_VERSION }} -->
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>{% block title %}Interludes{% if settings.date_start %} {{ settings.date_start.year }}{% endif %}{% endblock %}</title>
<meta name="description" content="Inscriptions et infos sur les interENS ludiques{% if settings.date_start %}, édition {{ settings.date_start.year }}{% endif %}">
<meta name="keywords" content="Interludes ENS événement COF {% if settings.date_start %}{{ settings.date_start.year }} {% endif %}InterENS">
<link rel="icon" type="image/png" href="{% static 'imgs/favicon.ico' %}">
<meta name="keywords" content="Interludes ENS {% if settings.date_start %}{{ settings.date_start.year }} {% endif %}InterENS">
<link rel="icon" type="image/png" href="{% static 'imgs/2022/favicon.ico' %}">
<link rel="stylesheet" type="text/css" href="{% static 'css/style.css' %}?v={{ constants.CSS_VERSION }}">
<link rel="stylesheet" type="text/css" href="{% static 'css/font-awesome-all.min.css' %}">
{% block head %}{% endblock %}
</head>
<body>
<header>
<div id="header_logo" class="easter_egg">
<h1><a href="/"><img id="circle" src="{% static 'imgs/logo_easter_egg.png' %}">&nbsp;Interludes{% if settings.date_start %} {{ settings.date_start.year }}{% endif %}&nbsp;</a></h1>
<h1><a href="/"><img id="circle" src="{% static 'imgs/2022/logo.png' %}">&nbsp;Interludes{% if settings.date_start %} {{ settings.date_start.year }}{% endif %}&nbsp;</a></h1>
</div>
<div id="head_main_infos">
<div id="location">ENS Ulm</div>
<div id="date">{% if settings.date_start %}
<div id="location">{{ settings.hosting_school }}</div>
<div id="date">{% if settings.date_start %}
{% if settings.date_end %}
{{ settings.date_start.day }}-{{ settings.date_end }}
{% else %}
......@@ -60,23 +62,23 @@
Activités
</a>
<a href="{% url 'FAQ' %}" rel="text/html"
class="{% block nav_faq %}{% endblock %} ">
class="{% block nav_faq %}{% endblock %}">
FAQ
</a>
{% if request.user.is_authenticated %}
<a href="{% url 'profile' %}"
class="{% block nav_profile %}{% endblock %} ">
class="{% block nav_profile %}{% endblock %}">
Mon compte
</a>
{% else %}
<a href="{% url 'accounts:login' %}"
class="{% block nav_login %}{% endblock %} ">
<a href="{% url 'account_login' %}"
class="{% block nav_login %}{% endblock %}">
Connexion
</a>
{% endif %}
{% if user.is_superuser %}
<a href="{% url 'admin_pages:index' %}"
class="{% block nav_admin %}{% endblock %} ">
class="{% block nav_admin %}{% endblock %}">
Administration
</a>
{% endif %}
......@@ -103,28 +105,38 @@
{% block "content" %}
{% endblock %}
{% block content %}
{% endblock %}
</main>
{% block extra_body %}
{% endblock %}
<footer>
<div id="sponsors">
<a class="external" href="https://www.ens.psl.eu/">
<img src="{% static "imgs/ens_psl.png" %}"
alt="École Normale Supérieure de Paris | Université Paris Sciences et Lettres"
title="École Normale Supérieure de Paris | Université Paris Sciences et Lettres"
/>
</a>
<a class="external" href="https://cof.ens.fr/">
<img src="{% static "imgs/cof.svg" %}"
alt="COF de l'ENS"
title="COF de l'ENS"
/>
</a>
</div>
{% if settings.contact_email %}
<p>Pour tout problème, contacter&nbsp;:<br><span class="antispam">{{ settings.contact_email_reversed }}</span></p>
{% endif %}
</footer>
<footer>
<div id="sponsors">
<a class="external" href="https://www.ens-lyon.fr/">
<img src="{% static "imgs/2022/ens_lyon.svg" %}" alt="École Normale Supérieure de Lyon"
title="École Normale Supérieure de Lyon" />
</a>
<a class="external" href="https://discord.gg/27QWSDUNgM">
<img src="{% static "imgs/2022/bul.png" %}" alt="Bureau Ludique de l'ENS de Lyon"
title="Bureau Ludique de l'ENS de Lyon" />
</a>
<a class="external" href="https://www.trollune.fr/">
<img src="{% static "imgs/2022/trollune.png" %}" alt="Trollune"
title="Trollune" />
</a>
<a class="external" href="https://www.3ptitspois.fr/">
<img src="{% static "imgs/2022/trois_ptits_pois.png" %}" alt="Trois Ptits Pois"
title="Trois Ptits Pois" />
</a>
</div>
{% if settings.contact_email %}
<p>Pour tout problème, contacter&nbsp;:<br><span class="antispam">{{ settings.contact_email_reversed }}</span>
</p>
{% endif %}
</footer>
</body>
</html>
{% endspaceless %}
......@@ -57,12 +57,14 @@
Vous trouverez une liste plus fournie sur le discord interludes.
</p>
{% if settings.activity_submission_form %}
<h2>Comment proposer une activité&nbsp;?</h2>
<p>Vous pouver proposer une activité en remplissant <a href="{{ settings.activity_submission_form }}">ce formulaire</a>.</p>
<p>Il vous faudra renseigner votre nom/mail, le titre, une description, le nombre de places, la durée, les horaires possibles/idéaux, et tout autre besoin particulier...
</p>
{% endif %}
<h2>Comment proposer une activité&nbsp;?</h2>
{% if settings.activity_submission_open %}
<p>Vous pouver proposer une activité en remplissant <a href="{% url 'activity_submission' %}">ce formulaire</a>.</p>
<p>Il vous faudra être connecté et renseigner, le titre, une description, le nombre de places, la durée, les horaires possibles/idéaux, et tout autre besoin particulier...</p>
{% else %}
<p>L'appel a activités est fermé pour le moment.
Contactez nous en cas de besoin urgent ou d'idée trop géniale pour être délaissée.</p>
{% endif %}
<h2>Comment sont réparties les activités&nbsp;?</h2>
......
......@@ -4,75 +4,68 @@
{% block "content" %}
<h2>Quelle différence entre l'inscription sur HelloAsso et sur le site&nbsp;?</h2>
<p>L'inscription HelloAsso vous inscrit à l'événement, au logement et aux repas (selon l'option que vous prenez). Sur le site internet, vous pouvez créer un compte pour vous inscrire aux différentes activités qui seront proposées lors de l'événement. </p>
<h2>Quelles seront les mesures de protection sanitaire&nbsp;?</h2>
<p>Les mesures définitives vous seront communiquées à l'arrivée à l'événement. Elles inclueront probablement&nbsp;:</p>
<p>Les mesures définitives vous seront communiquées à l'arrivée à l'événement. Elles incluront probablement&nbsp;:</p>
<ul>
<li>Contrôle des passes sanitaires chaque jour</li>
<li>Port du masque obligatoire en permanence</li>
<li>Lavage de main entre chaque jeu/activité</li>
<li>Pause aération des salles régulières</li>
<li>Lavage de main entre chaque jeu/activité conseillé</li>
<li>Des QR Codes à scanner sur chaque table (pour garder trace des cas contacts si une personne est déclarée positive)</li>
<li>Salles aérées en permanence et joueur&middot;ses invité&middot;es à se rendre dehors si le taux de CO2 devient trop élevé</li>
</ul>
{% if settings.activity_submission_form %}
<h2>Comment proposer une activité&nbsp;?</h2>
<p>Vous pouver proposer une activité en remplissant <a href="{{ settings.activity_submission_form }}">ce formulaire</a>.</p>
<p>Il vous faudra renseigner votre nom/mail, le titre, une description, le nombre de places, la durée, les horaires possibles/idéaux, et tout autre besoin particulier...
</p>
{% endif %}
<h2>Quelles seront les conditions pour dormir/manger&nbsp;?</h2>
<p> Il est possible que nous n'ayons pas le droit de faire dormir les participants et/ou
de distribuer des repas pendant l'événement pour des raisons sanitaires.
Nous communiquerons les plus tôt possible les mesures définitives.
</p>
<p>En l'état actuel, nous espérons pouvoir distribuer des repas qu'il faudra manger en extérieur ou
dans des salles dédiées.
</p>
<p>
Si vous dormez sur place il vous faudra prendre tapis de sol et duvet. Une salle (probablement le gymnase) y sera dédiée.
</p>
<h2>Comment se rendre à l'ENS Ulm&nbsp;?</h2>
<div>
<p class="centered">
<i class="fas fa-map-marker-alt"></i>
45 rue d'Ulm, 75005 Paris
</p>
<iframe id="interactive-map" width="750" height="400" src="https://www.openstreetmap.org/export/embed.html?bbox=2.334809303283692%2C48.8368567401711%2C2.3548936843872075%2C48.84636099015179&amp;layer=hot&amp;marker=48.841602029496684%2C2.344851493835449"></iframe>
</div>
<h2>Comment proposer une activité&nbsp;?</h2>
{% if settings.activity_submission_open %}
<p>Vous pouver proposer une activité en remplissant <a href="{% url 'activity_submission' %}">ce formulaire</a>.</p>
<p>Il vous faudra être connecté et renseigner, le titre, une description, le nombre de places, la durée, les horaires possibles/idéaux, et tout autre besoin particulier...</p>
{% else %}
<p>L'appel a activités est fermé pour le moment.
Contactez nous en cas de besoin urgent ou d'idée trop géniale pour être délaissée.</p>
{% endif %}
<div id="public-transport-info">
<div id="transport-metro-icon">
<img src="{% static 'imgs/ratp/metro-7.svg' %}" alt="Métro 7">
</div>
<span id="transport-metro-stop">Place Monge</span>
<h2>Quelles seront les conditions pour dormir/manger&nbsp;?</h2>
<p> Nous proposerons un logement en tente, pour celleux qui le souhaitent</p>
<p> Les repas seront préparés et servis sur place.</p>
<p> Si vous dormez dans les tentes, pensez à prendre un tapis de sol et duvet.</p>
<div id="transport-rer-icon">
<img src="{% static 'imgs/ratp/rer-B.svg' %}" alt="RER B">
</div>
<span id="transport-rer-stop">Luxembourg</span>
<h2>Comment se rendre à l'événement&nbsp;?</h2>
<div>
<p class="centered">
<i class="fas fa-map-marker-alt"></i>
<div id="transport-bus-1-icon">
<img src="{% static 'imgs/ratp/bus-24.svg' %}" alt="Bus 24">
</div>
<span id="transport-bus-1-stop">École Normale Supérieure</span>
</p>
<div id="transport-bus-2-icon">
<img src="{% static 'imgs/ratp/bus-21.svg' %}" alt="Bus 21">
<img src="{% static 'imgs/ratp/bus-27.svg' %}" alt="Bus 27">
</div>
<span id="transport-bus-2-stop">Feuillantines</span>
<iframe id="interactive-map" width="750" height="400"
src="https://www.openstreetmap.org/export/embed.html?bbox=4.82691%2C45.73663%2C4.84084%2C45.72936&amp;layer=hot&amp;marker=45.73298%2C4.83397"></iframe>
</div>
<div id="transport-noctilien-icon">
<img src="{% static 'imgs/ratp/noctilien-14.svg' %}" alt="Noctilien 14">
<img src="{% static 'imgs/ratp/noctilien-21.svg' %}" alt="Noctilien 21">
<img src="{% static 'imgs/ratp/noctilien-122.svg' %}" alt="Noctilien 122">
</div>
<span id="transport-noctilien-stop">Auguste Comte</span>
<div id="public-transport-info">
<div id="transport-tcl-metro">
<img src="{% static 'imgs/tcl/B.svg' %}" alt="Métro B">
</div>
<div id="transport-tcl-tram-1">
<img src="{% static 'imgs/tcl/T1.svg' %}" alt="Tram T1">
</div>
<div id="transport-tcl-tram-2">
<img src="{% static 'imgs/tcl/T6.svg' %}" alt="Tram T6">
</div>
<div id="transport-tcl-bus-1">
<img src="{% static 'imgs/tcl/34.svg' %}" alt="Bus 34">
</div>
<div id="transport-tcl-bus-2">
<img src="{% static 'imgs/tcl/60.svg' %}" alt="Bus 60">
</div>
<div id="transport-tcl-bus-3">
<img src="{% static 'imgs/tcl/64.svg' %}" alt="Bus 64">
</div>
<span id="transport-tcl-stop">Arrêt : Debourg</span>
</div>
<h2>Comment sont réparties les activités&nbsp;?</h2>
<p>
La répartition est faite par un algorithme puis vérifiée à la main.
Dans la mesure du possible, l'algorithme essaie d'attribue au moins une activité par personne. Par conséquent, si vous ne mettez qu'une seule activité, vous avez plus de chance de l'avoir.
......@@ -92,4 +85,6 @@
</ol>
<p>Le code est sur <a href="https://github.com/Imakoala/InterludesMatchings">github</a>, il ne marche pas encore parfaitement, et on risque de devoir bidouiller à la main en plus pour résoudre tous les cas particuliers (conflits d'horaires, activité présente plusieurs fois...).
<h2>J'ai encore une question, je fais quoi ?</h2>
<p> Hésite pas à nous passer un mail à <span class="antispam">{{ settings.contact_email_reversed }}</span> pour nous poser tes questions !</p>
{% endblock %}
......@@ -17,33 +17,31 @@
à l'honneur durant ce week-end de trois jours.
</p>
<p>
Cette année, c'est au tour de l'ENS Ulm d'organiser les interludes.
L'événement a habituellement lieu en février mais à cause du COVID,
il a été retardé. Cette année il est prévu
{% if settings.date_start %}{% if settings.date_end %}
le week-end du <strong>{{ settings.date_start.day }}-{{ settings.date_end }}</strong>.
{% else %}
le week-end du <strong>{{ settings.date_start }}</strong>.
{% endif %}
{% else %}
à une date non-fixée.
{% endif %}
</p>
Cette année, c'est au tour de l'{{ settings.hosting_school }} d'organiser les interludes.
Elles auront lieu
{% if settings.date_start %}{% if settings.date_end %}
le week-end du <strong>{{ settings.date_start.day }}-{{ settings.date_end }}</strong>.
{% else %}
le week-end du <strong>{{ settings.date_start }}</strong>.
{% endif %}
{% else %}
à une date non-fixée.
{% endif %}
</p>
<h2>Inscriptions</h2>
<h3>Inscription à l'événement</h3>
<p>
La situation actuelle ne se prête malheureusement pas à un tel événement. Nous ne pouvons donc
que proposer un événement à distance, qui passera principalement par un serveur discord.
Vous trouverez une liste de sites utiles pour jouer en ligne dans la
<a href="{% url 'FAQ' %}">FAQ</a> et sur le serveur discord.
L'inscription à l'événement,
à l'hébergement et aux repas se fait sur <a
href="https://www.helloasso.com/associations/bureau-ludique-de-l-ens-de-lyon/evenements/interludes-ens-de-lyon">le
formulaire HelloAsso</a>
</p>
<h2>Inscriptions</h2>
<ul class="messagelist"><li class="info">
Les interlude étant à distance cette année, les inscriptions sont facultatives.
</li></ul>
<h3>Inscription aux activités</h3>
<p>
Ce site vous permettra de vous <a href="{% url 'inscription' %}">inscrire à l'événement</a> et
de <a href="{% url 'activites' %}">voir les activités</a> qui y seront proposées. L'événement est
<strong>gratuit</strong>.
Une fois votre inscription à l'événement effectuée, vous pourrez vous <a href="{% url 'inscription'%}">inscrire aux activités</a>
</p>
{% if settings.inscriptions_start and settings.inscriptions_end %}
<p>Les inscriptions seront ouvertes
......@@ -56,13 +54,32 @@
<p>Les inscriptions fermerons le <strong>{{ settings.inscriptions_end|date:"l d F Y à H:i" }}</strong>.</p>
{% endif %}
<h2>Tarifs</h2>
<p>
Les tarifs sont différenciés entre salarié·es et non-salarié·es.
<ul>
<li><strong>Participation à l'événement :</strong> 6€/4€</li>
<li><strong>Repas (du vendredi soir au dimanche midi) :</strong> 10€/6€</li>
<li><strong>Logement en tente :</strong> 3€</li>
</ul>
</p>
<h2>Menu des repas</h2>
<p>
Cette année, le menu sera entièrement végétarien, avec options végan et/ou sans gluten possibles.
<ul>
<li><strong>Vendredi soir :</strong> Chili sin carne, riz & compote</li>
<li><strong>Samedi midi :</strong> Brunch (Salade bar, Croques pesto-mozza, Houmous, Gâteaux)</li>
<li><strong>Samedi soir :</strong> Soupe de saison & Tartiflette (option vegan : gratin de pommes de terre aux champignons)</li>
<li><strong>Dimanche midi :</strong> Sandwich au choix</li>
</ul>
<p>Pour plus de détails, consultez la <a href="{% url 'FAQ' %}">FAQ</a>.</p>
<h2>Liens divers</h2>
<ul>
<li>Le code source de ce site est sur <a href="https://git.eleves.ens.fr/dlesbre/site-interludes">gitlab</a>.</li>
<li>Un historique des interludes avec leurs visuels, site webs et photos est sur le <a href="https://wiki.crans.org/VieBdl/InterLudes">wiki de Paris-Saclay</a>.</li>
</ul>
<ul>
<li>Le code source de ce site est sur <a href="https://github.com/Pantoofle/site-interludes">github</a>.</li>
<li>Un historique des interludes avec leurs visuels, site webs et photos est sur le <a
href="https://wiki.crans.org/VieBdl/InterLudes">wiki de Paris-Saclay</a>.</li>
</ul>
{% endblock %}
......@@ -3,13 +3,19 @@
{% block nav_inscription %}current{% endblock %}
{% block "content" %}
<h2>Inscriptions</h2>
<h2>Inscriptions à l'événement</h2>
<p>L'inscription à l'événement,
l'hébergement et aux repas se fait sur <a
href="https://www.helloasso.com/associations/bureau-ludique-de-l-ens-de-lyon/evenements/interludes-ens-de-lyon">le
formulaire HelloAsso</a>.</p>
<h2>Inscriptions aux activités</h2>
{% if settings.inscriptions_not_open_yet %}
<p>Les inscriptions ne sont pas encores ouvertes.</p>
<p>Les inscriptions aux activités ne sont pas encores ouvertes.</p>
<p>Leur ouverture est prévue le <strong>{{ settings.inscriptions_start|date:"l d F Y à H:i" }}</strong>.</p>
<p>Nous communiquerons par mail via les BDE des différentes écoles pour leur ouverture.</p>
{% elif settings.inscriptions_have_closed %}
<p>Les inscriptions sont fermées.</p>
<p>Les inscriptions aux activités sont fermées.</p>
<p>
Les inscriptions cette année sont facultatives,
tu peux quand même rejoindre le {% if settings.discord_link %}<a href="{{ settings.discord_link }}">serveur discord</a>{% else %}serveur discord{% endif %} et participer aux jeux libres et
......@@ -19,7 +25,7 @@
<p>Pour tout problème, contacter&nbsp;:<br><span class="antispam">{{ settings.contact_email_reversed }}</span></p>
{% endif %}
{% else %}
<p>Les inscriptions ne sont pas encores ouvertes ou ont été fermées.</p>
<p>Les inscriptions aux activités ne sont pas encores ouvertes ou ont été fermées.</p>
<p>Nous communiquerons par mail via les BDE des différentes écoles pour leur ouverture.</p>
{% endif %}
{% endblock %}
......@@ -4,36 +4,31 @@
{% block nav_inscription %}current{% endblock %}
{% block "content" %}
<h2>Inscriptions</h2>
<ul class="messagelist">
<li class="info">
Il est possible que nous n'ayons pas le droit de faire dormir les participants et/ou
de distribuer des repas pendant l'événement pour des raisons sanitaires.<br>
Nous communiquerons les mesures exactes quelques jours avant l'événement.
</li>
</ul>
<h2>Inscription à l'événement</h2>
L'inscription à l'événement,
à l'hébergement et aux repas se fait sur <a
href="https://www.helloasso.com/associations/bureau-ludique-de-l-ens-de-lyon/evenements/interludes-ens-de-lyon">le
formulaire HelloAsso</a>
<h2>Inscription aux activités</h2>
Une fois votre inscription à l'événement effectuée, vous pourrez
vous inscrire à certaines activités sur cette page. La plupart des
activités ne demandent pas d'inscription et seront en libre accès
durant tout l'événement, mais certaines demandent une inscription à
l'avance.
<form id="main_form" method="post" action="{% url 'inscription' %}">
{% csrf_token %}
Cette année, l'événement est entièrement subventionné par le <a class="external" href="https://cof.ens.fr/">COF</a>. L'inscription est gratuite
(mais n'inclut pas les frais de transport jusqu'à Paris).
<p>{{ form.school.label_tag }} {{ form.school }}</p>
<p>{{ form.sleeps.label_tag }} {{ form.sleeps }}</p>
<h3>Repas</h3>
<table>
<tr><td>Vendredi soir&nbsp;:</td><td>{{ form.meal_friday_evening }}</td></tr>
<tr><td>Samedi matin&nbsp;:</td><td>{{ form.meal_saturday_morning }}</td></tr>
<tr><td>Samedi midi&nbsp;:</td><td>{{ form.meal_saturday_midday }}</td></tr>
<tr><td>Samedi soir&nbsp;:</td><td>{{ form.meal_saturday_evening }}</td></tr>
<tr><td>Dimanche matin&nbsp;:</td><td>{{ form.meal_sunday_morning }}</td></tr>
<tr><td>Dimanche midi&nbsp;:</td><td>{{ form.meal_sunday_midday }}</td></tr>
</table>
<p>{{ form.meal_friday_evening.label_tag }} {{ form.meal_friday_evening }} </p>
<p>{{ form.meal_saturday_morning.label_tag }} {{ form.meal_saturday_morning }} </p>
<p>{{ form.meal_saturday_midday.label_tag }} {{ form.meal_saturday_midday }}</p>
<p>{{ form.meal_saturday_evening.label_tag }} {{ form.meal_saturday_evening }} </p>
<p>{{ form.meal_sunday_morning.label_tag }} {{ form.meal_sunday_morning}} </p>
<p>{{ form.meal_sunday_midday.label_tag }} {{ form.meal_sunday_midday }}</p>
<p>Vous êtes considéré⋅e commme extérieur si vous n'êtes pas actuellement scolarisé⋅e ou inscrit⋅e à l'ENS Paris-Saclay. Nous avons besoin de cette information pour transmettre la liste des extérieurs à l'administration de l'ENS.</p>
<h3>Choix d'activités</h3>
......@@ -47,8 +42,6 @@
<p>Si vous vous inscrivez à une activité qui nécessite préparation, nous communiquerons
votre email aux orgas pour qu'iels puissent vous contacter.
</p>
{% if formset.non_form_errors %}
{{ formset.non_form_errors }}
{% endif %}
......
......@@ -4,9 +4,8 @@
{% block "content" %}
<h2>Inscriptions</h2>
<p>Vous devez être connecté pour pouvoir vous inscrire à l'événement.</p>
<p>Aller à la page de <a href="{% url 'accounts:login' %}">connexion</a> pour vous connectez
ou à celle de <a href="{% url 'accounts:create' %}">création de compte</a> si vous n'avez pas de compte.</p>
<p>Vous devez être connecté pour pouvoir vous inscrire à des activités.
<p>Aller à la page de <a href="{% url 'account_login' %}">connexion</a> pour vous connecter ou créer un compte.
{% if settings.inscriptions_end %}
<p>Les inscriptions seront ouvertes jusqu'au {{ settings.inscriptions_end|date:"l d F Y à H:i" }})</p>
{% endif %}
......
......@@ -65,18 +65,18 @@
{% endif %}
</ul>
{% else %}
<strong>Vous n'êtes pas incrit à l'événement.</strong>
<strong>Vous n'avez pas encore renseigné vos choix d'activités.</strong>
{% if not settings.inscriptions_open %}
{% if settings.inscriptions_not_open_yet %}
<p>Les inscriptions ne sont pas encores ouvertes. Elles ouvrirons le <strong>{{ settings.inscriptions_start|date:"l d F Y à H:i" }}</strong>.</p>
<p>Les inscriptions aux activités ne sont pas encores ouvertes. Elles ouvrirons le <strong>{{ settings.inscriptions_start|date:"l d F Y à H:i" }}</strong>.</p>
{% elif settings.inscriptions_have_closed %}
<p>Les inscriptions sont fermées.</p>
<p>Les inscriptions aux activités sont fermées.</p>
{% else %}
<p>Les inscriptions ne sont pas encores ouvertes ou ont été fermées.</p>
<p>Les inscriptions aux activités ne sont pas encores ouvertes ou ont été fermées.</p>
{% endif %}
{% elif settings.inscriptions_end %}
<p>les inscriptions sont ouvertes jusqu'au {{ settings.inscriptions_end|date:"l d F Y à H:i" }}).</p>
<p>les inscriptions aux activités sont ouvertes jusqu'au {{ settings.inscriptions_end|date:"l d F Y à H:i" }}).</p>
{% endif %}
<br><br>
{% endif %}
......@@ -102,7 +102,7 @@
{% endif %}
<a class="button" href="{% url 'accounts:update' %}">Modifier mes informations</a>
<a class="button" href="{% url 'accounts:logout' %}">Déconnexion</a>
<a class="button" href="{% url 'account_logout' %}">Déconnexion</a>
</div>
{% endblock %}
......@@ -13,15 +13,16 @@ urlpatterns = [
path('inscription/', views.RegisterView.as_view(), name = 'inscription'),
path('desinscription/', views.UnregisterView.as_view(), name="desinscription"),
path('activites/', views.ActivityView.as_view(), name = 'activites'),
path('activites/nouvelle/', views.ActivitySubmissionView.as_view(), name = 'activity_submission'),
path('faq/', views.FAQView.as_view(), name = 'FAQ'),
path("profile/", views.ProfileView.as_view(), name="profile"),
path("profil/", views.ProfileView.as_view(), name="profile"),
path('favicon.ico', RedirectView.as_view(url='/static/imgs/favicon.ico')),
path(
'sitemap.xml', sitemap, {'sitemaps': sitemaps},
name='django.contrib.sitemaps.views.sitemap'
),
path('admin_pages/', include(('admin_pages.urls', 'admin_pages'), namespace="admin_pages")),
path('accounts/', include("accounts.urls")),
path('comptes/', include("accounts.urls")),
]
if settings.DEBUG:
......
......@@ -5,11 +5,11 @@ from django.contrib.auth.mixins import LoginRequiredMixin
from django.contrib.sitemaps import Sitemap
from django.forms import formset_factory
from django.shortcuts import redirect, render
from django.urls import reverse
from django.views.generic import RedirectView, TemplateView, View
from django.urls import reverse, reverse_lazy
from django.views.generic import FormView, RedirectView, TemplateView, View
from home import models
from home.forms import ActivityForm, BaseActivityFormSet, InscriptionForm
from home.forms import ActivityForm, ActivitySubmissionForm, BaseActivityFormSet, InscriptionForm
from site_settings.models import SiteSettings
......@@ -26,7 +26,7 @@ def get_planning_context():
"""Returns the context dict needed to display the planning"""
settings = SiteSettings.load()
context = dict()
context['planning'] = models.InterludesSlot.objects.filter(on_planning=True).order_by("title")
context['planning'] = models.SlotModel.objects.filter(on_planning=True).order_by("title")
if settings.date_start is not None:
context['friday'] = settings.date_start.day
context['saturday'] = (settings.date_start + timedelta(days=1)).day
......@@ -44,14 +44,14 @@ class ActivityView(TemplateView):
def get_context_data(self, **kwargs):
"""ajoute la liste des activités au contexte"""
context = super(ActivityView, self).get_context_data(**kwargs)
context['activities'] = models.InterludesActivity.objects.filter(display=True).order_by("title")
context['activities'] = models.ActivityModel.objects.filter(display=True).order_by("title")
context.update(get_planning_context())
return context
class FAQView(TemplateView):
"""Vue pour la FAQ"""
template_name = "faq-distanciel.html"
template_name = "faq.html"
# ==============================
......@@ -68,12 +68,12 @@ class ProfileView(LoginRequiredMixin, TemplateView):
context = super().get_context_data(**kwargs)
settings = SiteSettings.load()
if settings.activities_allocated:
my_choices = models.InterludesActivityChoices.objects.filter(
my_choices = models.ActivityChoicesModel.objects.filter(
participant=self.request.user.profile,
accepted=True
)
else:
my_choices = models.InterludesActivityChoices.objects.filter(
my_choices = models.ActivityChoicesModel.objects.filter(
participant=self.request.user.profile
)
......@@ -92,26 +92,27 @@ class RegisterSignIn(TemplateView):
class RegisterUpdateView(LoginRequiredMixin, TemplateView):
"""Vue pour s'inscrire et modifier son inscription"""
template_name = "inscription/form-distanciel.html"
template_name = "inscription/form.html"
form_class = InscriptionForm
formset_class = formset_factory(form=ActivityForm, extra=3, formset=BaseActivityFormSet)
success_url = reverse_lazy("profile")
@staticmethod
def get_slots(participant):
activities = models.InterludesActivityChoices.objects.filter(participant=participant).order_by("priority")
activities = models.ActivityChoicesModel.objects.filter(participant=participant).order_by("priority")
return [{"slot": act.slot} for act in activities]
@staticmethod
def set_activities(participant, formset):
# delete old activites
models.InterludesActivityChoices.objects.filter(participant=participant).delete()
models.ActivityChoicesModel.objects.filter(participant=participant).delete()
priority = 0
for form in formset:
data = form.cleaned_data
if data:
slot = data["slot"]
models.InterludesActivityChoices(
models.ActivityChoicesModel(
priority=priority, participant=participant, slot=slot
).save()
priority += 1
......@@ -135,7 +136,7 @@ class RegisterUpdateView(LoginRequiredMixin, TemplateView):
self.set_activities(request.user.profile, formset)
messages.success(request, "Votre inscription a bien été enregistrée")
return redirect("profile", permanent=False)
return redirect(self.success_url, permanent=False)
class RegisterView(View):
"""Vue pour l'inscription
......@@ -160,6 +161,57 @@ class UnregisterView(LoginRequiredMixin, RedirectView):
return reverse(self.pattern_name)
# ==============================
# Activity Submission Form
# ==============================
class ActivitySubmissionView(LoginRequiredMixin, FormView):
"""Vue pour proposer une activité"""
template_name = "activity_submission.html"
form_class = ActivitySubmissionForm
success_url = reverse_lazy("profile")
@staticmethod
def submission_check():
"""Vérifie si le formulaire est ouvert ou non"""
settings = SiteSettings.load()
return settings.activity_submission_open
def get_initial(self):
init = super().get_initial()
user = self.request.user
init.update({
"host_name": "{} {}".format(user.first_name, user.last_name),
"host_email": user.email,
})
return init
def not_open(self, request):
"""Appelé quand le formulaire est désactivé"""
messages.error(request, "La soumission d'activité est desactivée")
return redirect(self.success_url, permanent=False)
def get(self, request, *args, **kwargs):
if not self.submission_check():
return self.not_open(request)
return super().get(self, request, *args, **kwargs)
def post(self, request, *args, **kwargs):
if not self.submission_check():
return self.not_open(request)
form = self.form_class(request.POST)
if not form.is_valid():
context = self.get_context_data()
context["form"] = form
return render(request, self.template_name, context)
form.save()
messages.success(request, "Votre activité a bien été enregistrée. Elle sera affichée sur le site après relecture par les admins.")
return redirect(self.success_url, permanent=False)
# ==============================
# Sitemap
# ==============================
......
......@@ -37,6 +37,8 @@ def import_secret(name):
except AttributeError:
raise RuntimeError("Secret missing: {}".format(name))
SITE_ID=1
SECRET_KEY = import_secret("SECRET_KEY")
DB_NAME = import_secret("DB_NAME")
......@@ -56,7 +58,7 @@ EMAIL_USE_SSL = True
DEBUG = True
# FIXME - set hosts in production
ALLOWED_HOSTS = []
ALLOWED_HOSTS = ["127.0.0.1", "localhost","kwei-dev.crans.org"]
if DEBUG:
# This will display emails in Console.
......@@ -84,12 +86,19 @@ INSTALLED_APPS = [
'django.contrib.messages',
'django.contrib.staticfiles',
'django.contrib.sitemaps',
'django.contrib.sites',
'home.apps.HomeConfig',
'admin_pages.apps.AdminPagesConfig',
'accounts.apps.AccountsConfig',
'site_settings.apps.SiteSettingsConfig',
'shared.apps.SharedConfig',
# allauth support.
'allauth',
'allauth.account',
'allauth.socialaccount',
'allauth_note_kfet',
]
MIDDLEWARE = [
......@@ -123,6 +132,8 @@ TEMPLATES = [
WSGI_APPLICATION = 'interludes.wsgi.application'
# Auto primary key type
DEFAULT_AUTO_FIELD = 'django.db.models.AutoField'
# Database
# https://docs.djangoproject.com/en/3.0/ref/settings/#databases
......@@ -136,13 +147,27 @@ DATABASES = {
AUTHENTICATION_BACKENDS = (
'django.contrib.auth.backends.ModelBackend',
'allauth.account.auth_backends.AuthenticationBackend',
)
# Password validation
# https://docs.djangoproject.com/en/3.0/ref/settings/#auth-password-validators
AUTH_USER_MODEL = 'accounts.EmailUser'
AUTH_PROFILE_MODULE = 'home.InterludesParticipant'
AUTH_PROFILE_MODULE = 'home.ParticipantModel'
# Tell oauth how the user is configured.
ACCOUNT_EMAIL_REQUIRED = True
ACCOUNT_UNIQUE_EMAIL = True
ACCOUNT_AUTHENTICATION_METHOD = "email"
ACCOUNT_USERNAME_REQUIRED = False
ACCOUNT_USER_MODEL_USERNAME_FIELD = None
SOCIALACCOUNT_PROVIDERS = {
'notekfet': {
'DOMAIN': 'note-dev.crans.org', # À remplacer si nécessaire
# 'SCOPE': ['1_1'], # Adapter les scopes demandées (par défaut lecture des champs utilisateur⋅rice)
},
}
AUTH_PASSWORD_VALIDATORS = [
{ 'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator', },
......@@ -157,7 +182,7 @@ SESSION_COOKIE_AGE = 3600
# Internationalization
# https://docs.djangoproject.com/en/3.0/topics/i18n/
LANGUAGE_CODE = 'fr-fr'
LANGUAGE_CODE = 'fr'
TIME_ZONE = 'CET'
......@@ -177,8 +202,14 @@ STATIC_ROOT = os.path.join(BASE_DIR, 'static')
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
LOGIN_URL = "accounts:login"
LOGIN_REDIRECT_URL = "profile"
LOGIN_URL = 'accounts:login'
LOGIN_REDIRECT_URL = 'profile'
# Prefix to mails to admins
EMAIL_SUBJECT_PREFIX = '[DJANGO WEBLUDES] '
# Signature to mails to admins
EMAIL_SIGNATURE = '-- Site Interludes (mail généré automatiquement)'
# Prefix to mails to users
USER_EMAIL_SUBJECT_PREFIX = "[interludes] "
......@@ -16,7 +16,12 @@ Including another URLconf
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('home.urls')),
]
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) + [
path('admin/', admin.site.urls),
path('accounts/', include('allauth.urls')),
path('comptes/', include('allauth.urls')),
path('', include('home.urls')),
]