mirror of https://gitlab.crans.org/bde/nk20
301 lines
20 KiB
HTML
301 lines
20 KiB
HTML
{% load static i18n pretty_money static getenv perms memberinfo %}
|
|
{% comment %}
|
|
SPDX-License-Identifier: GPL-3.0-or-later
|
|
{% endcomment %}
|
|
<!DOCTYPE html>
|
|
{% get_current_language as LANGUAGE_CODE %}{% get_current_language_bidi as LANGUAGE_BIDI %}
|
|
<html lang="{{ LANGUAGE_CODE|default:"en" }}" {% if LANGUAGE_BIDI %}dir="rtl"{% endif %} class="position-relative h-100">
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
|
<title>
|
|
{% block title %}{{ title }}{% endblock title %} - {{ request.site.name }}
|
|
</title>
|
|
<meta name="description" content="{% trans "The ENS Paris-Saclay BDE note." %}">
|
|
|
|
{# Favicon #}
|
|
<link rel="apple-touch-icon" sizes="180x180" href="{% static "favicon/apple-touch-icon.png" %}">
|
|
<link rel="icon" type="image/png" sizes="32x32" href="{% static "favicon/favicon-32x32.png" %}">
|
|
<link rel="icon" type="image/png" sizes="16x16" href="{% static "favicon/favicon-16x16.png" %}">
|
|
<link rel="manifest" href="{% static "favicon/site.webmanifest" %}">
|
|
<link rel="mask-icon" href="{% static "favicon/safari-pinned-tab.svg" %}" color="#5bbad5">
|
|
<link rel="shortcut icon" href="{% static "favicon/favicon.ico" %}">
|
|
<meta name="msapplication-TileColor" content="#da532c">
|
|
<meta name="msapplication-config" content="{% static "favicon/browserconfig.xml" %}">
|
|
<meta name="theme-color" content="#ffffff">
|
|
|
|
{# Load CSS #}
|
|
<link rel="stylesheet" href="{% static "bootstrap4/css/bootstrap.min.css" %}">
|
|
<link rel="stylesheet" href="{% static "css/custom.css" %}">
|
|
|
|
{# JQuery, Bootstrap and Turbolinks JavaScript #}
|
|
<script src="{% static "jquery/jquery.min.js" %}"></script>
|
|
<script src="{% static "popper.js/umd/popper.min.js" %}"></script>
|
|
<script src="{% static "bootstrap4/js/bootstrap.min.js" %}"></script>
|
|
<script src="{% static "js/turbolinks.js" %}"></script>
|
|
<script src="{% static "js/base.js" %}"></script>
|
|
<script src="{% static "js/konami.js" %}"></script>
|
|
|
|
{# Translation in javascript files #}
|
|
<script src="{% static "js/jsi18n/"|add:LANGUAGE_CODE|add:".js" %}"></script>
|
|
|
|
{# If extra ressources are needed for a form, load here #}
|
|
{% if form.media %}
|
|
{{ form.media }}
|
|
{% endif %}
|
|
|
|
{% block extracss %}{% endblock %}
|
|
</head>
|
|
<body class="d-flex w-100 h-100 flex-column">
|
|
<main class="mb-auto">
|
|
<nav class="navbar navbar-expand-lg navbar-dark bg-primary fixed-navbar shadow-sm">
|
|
<div class="container-fluid">
|
|
<a class="navbar-brand" href="/">{{ request.site.name }}</a>
|
|
<button class="navbar-toggler" type="button" data-toggle="collapse"
|
|
data-target="#navbarNavDropdown"
|
|
aria-controls="navbarNavDropdown" aria-expanded="false"
|
|
aria-label="Toggle navigation">
|
|
<span class="navbar-toggler-icon"></span>
|
|
</button>
|
|
<div class="collapse navbar-collapse" id="navbarNavDropdown">
|
|
<ul class="navbar-nav">
|
|
{% if "note.transactiontemplate"|not_empty_model_list %}
|
|
<li class="nav-item">
|
|
{% url 'note:consos' as url %}
|
|
<a class="nav-link {% if request.path_info == url %}active{% endif %}" href="{{ url }}">
|
|
<svg class="bi bi-mug" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16">
|
|
<path d="M1 2a1 1 0 0 1 1-1h11a1 1 0 0 1 1 1v1h.5A1.5 1.5 0 0 1 16 4.5v7a1.5 1.5 0 0 1-1.5 1.5h-.55a2.5 2.5 0 0 1-2.45 2h-8A2.5 2.5 0 0 1 1 12.5V2zm13 10h.5a.5.5 0 0 0 .5-.5v-7a.5.5 0 0 0-.5-.5H14v8z"/>
|
|
</svg>
|
|
{% trans 'Consumptions' %}
|
|
</a>
|
|
</li>
|
|
{% endif %}
|
|
{% if user.is_authenticated and user|is_member:"Kfet" %}
|
|
<li class="nav-item">
|
|
{% url 'note:transfer' as url %}
|
|
<a class="nav-link {% if request.path_info == url %}active{% endif %}" href="{{ url }}">
|
|
<svg class="bi bi-exchange" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16">
|
|
<path fill-rule="evenodd" d="M1 11.5a.5.5 0 0 0 .5.5h11.793l-3.147 3.146a.5.5 0 0 0 .708.708l4-4a.5.5 0 0 0 0-.708l-4-4a.5.5 0 0 0-.708.708L13.293 11H1.5a.5.5 0 0 0-.5.5zm14-7a.5.5 0 0 1-.5.5H2.707l3.147 3.146a.5.5 0 1 1-.708.708l-4-4a.5.5 0 0 1 0-.708l4-4a.5.5 0 1 1 .708.708L2.707 4H14.5a.5.5 0 0 1 .5.5z"/>
|
|
</svg>
|
|
{% trans 'Transfer' %}
|
|
</a>
|
|
</li>
|
|
{% endif %}
|
|
{% if "auth.user"|model_list_length >= 2 %}
|
|
<li class="nav-item">
|
|
{% url 'member:user_list' as url %}
|
|
<a class="nav-link {% if request.path_info == url %}active{% endif %}" href="{{ url }}">
|
|
<svg class="bi bi-user" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16">
|
|
<path d="M3 14s-1 0-1-1 1-4 6-4 6 3 6 4-1 1-1 1H3zm5-6a3 3 0 1 0 0-6 3 3 0 0 0 0 6z"/>
|
|
</svg>
|
|
{% trans 'Users' %}
|
|
</a>
|
|
</li>
|
|
{% endif %}
|
|
{% if "member.club"|not_empty_model_list %}
|
|
<li class="nav-item">
|
|
{% url 'member:club_list' as url %}
|
|
<a class="nav-link {% if request.path_info == url %}active{% endif %}" href="{{ url }}">
|
|
<svg class="bi bi-users" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16">
|
|
<path d="M7 14s-1 0-1-1 1-4 5-4 5 3 5 4-1 1-1 1H7zm4-6a3 3 0 1 0 0-6 3 3 0 0 0 0 6z"/>
|
|
<path fill-rule="evenodd" d="M5.216 14A2.238 2.238 0 0 1 5 13c0-1.355.68-2.75 1.936-3.72A6.325 6.325 0 0 0 5 9c-4 0-5 3-5 4s1 1 1 1h4.216z"/>
|
|
<path d="M4.5 8a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5z"/>
|
|
</svg>
|
|
{% trans 'Clubs' %}
|
|
</a>
|
|
</li>
|
|
{% endif %}
|
|
{% if "activity.activity"|not_empty_model_list %}
|
|
<li class="nav-item">
|
|
{% url 'activity:activity_list' as url %}
|
|
<a class="nav-link {% if request.path_info == url %}active{% endif %}" href="{{ url }}">
|
|
<svg class="bi bi-calendar" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16">
|
|
<path d="M3.5 0a.5.5 0 0 1 .5.5V1h8V.5a.5.5 0 0 1 1 0V1h1a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V5h16V4H0V3a2 2 0 0 1 2-2h1V.5a.5.5 0 0 1 .5-.5z"/>
|
|
</svg>
|
|
{% trans 'Activities' %}
|
|
</a>
|
|
</li>
|
|
{% endif %}
|
|
{% if "treasury.invoice"|not_empty_model_list %}
|
|
<li class="nav-item">
|
|
{% url 'treasury:invoice_list' as url %}
|
|
<a class="nav-link {% if request.path_info == url %}active{% endif %}" href="{{ url }}">
|
|
<svg class="bi bi-credit-card" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16">
|
|
<path d="M0 4a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v1H0V4zm0 3v5a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7H0zm3 2h1a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1z"/>
|
|
</svg>
|
|
{% trans 'Treasury' %}
|
|
</a>
|
|
</li>
|
|
{% endif %}
|
|
{% if "wei.weiclub"|not_empty_model_list %}
|
|
<li class="nav-item">
|
|
{% url 'wei:current_wei_detail' as url %}
|
|
<a class="nav-link {% if request.path_info == url %}active{% endif %}" href="{{ url }}">
|
|
<svg class="bi bi-signpost" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16">
|
|
<path d="M7.293.707A1 1 0 0 0 7 1.414V4H2a1 1 0 0 0-1 1v4a1 1 0 0 0 1 1h5v6h2v-6h3.532a1 1 0 0 0 .768-.36l1.933-2.32a.5.5 0 0 0 0-.64L13.3 4.36a1 1 0 0 0-.768-.36H9V1.414A1 1 0 0 0 7.293.707z"/>
|
|
</svg>
|
|
{% trans 'WEI' %}
|
|
</a>
|
|
</li>
|
|
{% endif %}
|
|
{% if request.user.is_authenticated %}
|
|
<li class="nav-item">
|
|
{% url 'permission:rights' as url %}
|
|
<a class="nav-link {% if request.path_info == url %}active{% endif %}" href="{{ url }}">
|
|
<svg class="bi bi-shield" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16">
|
|
<path fill-rule="evenodd" d="M8 0c-.69 0-1.843.265-2.928.56-1.11.3-2.229.655-2.887.87a1.54 1.54 0 0 0-1.044 1.262c-.596 4.477.787 7.795 2.465 9.99a11.777 11.777 0 0 0 2.517 2.453c.386.273.744.482 1.048.625.28.132.581.24.829.24s.548-.108.829-.24a7.159 7.159 0 0 0 1.048-.625 11.775 11.775 0 0 0 2.517-2.453c1.678-2.195 3.061-5.513 2.465-9.99a1.541 1.541 0 0 0-1.044-1.263 62.467 62.467 0 0 0-2.887-.87C9.843.266 8.69 0 8 0zm0 5a1.5 1.5 0 0 1 .5 2.915l.385 1.99a.5.5 0 0 1-.491.595h-.788a.5.5 0 0 1-.49-.595l.384-1.99A1.5 1.5 0 0 1 8 5z"/>
|
|
</svg>
|
|
{% trans 'Rights' %}
|
|
</a>
|
|
</li>
|
|
{% endif %}
|
|
{% if request.user.is_staff and ""|has_perm:user %}
|
|
<li class="nav-item">
|
|
<a data-turbolinks="false" class="nav-link" href="{% url 'admin:index' %}">
|
|
<svg class="bi bi-cog" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16">
|
|
<path d="M9.405 1.05c-.413-1.4-2.397-1.4-2.81 0l-.1.34a1.464 1.464 0 0 1-2.105.872l-.31-.17c-1.283-.698-2.686.705-1.987 1.987l.169.311c.446.82.023 1.841-.872 2.105l-.34.1c-1.4.413-1.4 2.397 0 2.81l.34.1a1.464 1.464 0 0 1 .872 2.105l-.17.31c-.698 1.283.705 2.686 1.987 1.987l.311-.169a1.464 1.464 0 0 1 2.105.872l.1.34c.413 1.4 2.397 1.4 2.81 0l.1-.34a1.464 1.464 0 0 1 2.105-.872l.31.17c1.283.698 2.686-.705 1.987-1.987l-.169-.311a1.464 1.464 0 0 1 .872-2.105l.34-.1c1.4-.413 1.4-2.397 0-2.81l-.34-.1a1.464 1.464 0 0 1-.872-2.105l.17-.31c.698-1.283-.705-2.686-1.987-1.987l-.311.169a1.464 1.464 0 0 1-2.105-.872l-.1-.34zM8 10.93a2.929 2.929 0 1 1 0-5.86 2.929 2.929 0 0 1 0 5.858z"/>
|
|
</svg>
|
|
{% trans 'Admin' %}
|
|
</a>
|
|
</li>
|
|
{% endif %}
|
|
</ul>
|
|
<ul class="navbar-nav ml-auto">
|
|
{% if request.user.is_authenticated %}
|
|
<li class="dropdown">
|
|
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdownMenuLink" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
|
<svg class="bi bi-user" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16">
|
|
<path d="M3 14s-1 0-1-1 1-4 6-4 6 3 6 4-1 1-1 1H3zm5-6a3 3 0 1 0 0-6 3 3 0 0 0 0 6z"/>
|
|
</svg>
|
|
<span id="user_balance">{{ request.user.username }} ({{ request.user.note.balance | pretty_money }})</span>
|
|
</a>
|
|
<div class="dropdown-menu dropdown-menu-right"
|
|
aria-labelledby="navbarDropdownMenuLink">
|
|
<a class="dropdown-item" href="{% url 'member:user_detail' pk=request.user.pk %}">
|
|
<svg class="bi bi-user" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16">
|
|
<path d="M3 14s-1 0-1-1 1-4 6-4 6 3 6 4-1 1-1 1H3zm5-6a3 3 0 1 0 0-6 3 3 0 0 0 0 6z"/>
|
|
</svg>
|
|
{% trans "My account" %}
|
|
</a>
|
|
<a class="dropdown-item" href="{% url 'logout' %}">
|
|
<svg class="bi bi-signout" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16">
|
|
<path fill-rule="evenodd" d="M10 12.5a.5.5 0 0 1-.5.5h-8a.5.5 0 0 1-.5-.5v-9a.5.5 0 0 1 .5-.5h8a.5.5 0 0 1 .5.5v2a.5.5 0 0 0 1 0v-2A1.5 1.5 0 0 0 9.5 2h-8A1.5 1.5 0 0 0 0 3.5v9A1.5 1.5 0 0 0 1.5 14h8a1.5 1.5 0 0 0 1.5-1.5v-2a.5.5 0 0 0-1 0v2z"/>
|
|
<path fill-rule="evenodd" d="M15.854 8.354a.5.5 0 0 0 0-.708l-3-3a.5.5 0 0 0-.708.708L14.293 7.5H5.5a.5.5 0 0 0 0 1h8.793l-2.147 2.146a.5.5 0 0 0 .708.708l3-3z"/>
|
|
</svg>
|
|
{% trans "Log out" %}
|
|
</a>
|
|
</div>
|
|
</li>
|
|
{% else %}
|
|
{% if request.path != "/registration/signup/" %}
|
|
<li class="nav-item">
|
|
<a class="nav-link" href="{% url 'registration:signup' %}">
|
|
<svg class="bi bi-user-plus" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16">
|
|
<path d="M1 14s-1 0-1-1 1-4 6-4 6 3 6 4-1 1-1 1H1zm5-6a3 3 0 1 0 0-6 3 3 0 0 0 0 6z"/>
|
|
<path fill-rule="evenodd" d="M13.5 5a.5.5 0 0 1 .5.5V7h1.5a.5.5 0 0 1 0 1H14v1.5a.5.5 0 0 1-1 0V8h-1.5a.5.5 0 0 1 0-1H13V5.5a.5.5 0 0 1 .5-.5z"/>
|
|
</svg>
|
|
{% trans "Sign up" %}
|
|
</a>
|
|
</li>
|
|
{% endif %}
|
|
{% if request.path != "/accounts/login/" %}
|
|
<li class="nav-item">
|
|
<a class="nav-link" href="{% url 'login' %}">
|
|
<svg class="bi bi-login" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16">
|
|
<path fill-rule="evenodd" d="M6 3.5a.5.5 0 0 1 .5-.5h8a.5.5 0 0 1 .5.5v9a.5.5 0 0 1-.5.5h-8a.5.5 0 0 1-.5-.5v-2a.5.5 0 0 0-1 0v2A1.5 1.5 0 0 0 6.5 14h8a1.5 1.5 0 0 0 1.5-1.5v-9A1.5 1.5 0 0 0 14.5 2h-8A1.5 1.5 0 0 0 5 3.5v2a.5.5 0 0 0 1 0v-2z"/>
|
|
<path fill-rule="evenodd" d="M11.854 8.354a.5.5 0 0 0 0-.708l-3-3a.5.5 0 1 0-.708.708L10.293 7.5H1.5a.5.5 0 0 0 0 1h8.793l-2.147 2.146a.5.5 0 0 0 .708.708l3-3z"/>
|
|
</svg>
|
|
{% trans "Log in" %}
|
|
</a>
|
|
</li>
|
|
{% endif %}
|
|
{% endif %}
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
</nav>
|
|
<div class="{% block containertype %}container{% endblock %} my-3">
|
|
<div id="messages">
|
|
{% if user.is_authenticated %}
|
|
{% if not user|is_member:"BDE" %}
|
|
<div class="alert alert-danger">
|
|
{% trans "You are not a BDE member anymore. Please renew your membership if you want to use the note." %}
|
|
</div>
|
|
{% endif %}
|
|
|
|
{% if not user.profile.email_confirmed %}
|
|
<div class="alert alert-warning">
|
|
{% trans "Your e-mail address is not validated. Please check your mail inbox and click on the validation link." %}
|
|
</div>
|
|
{% endif %}
|
|
{% endif %}
|
|
{% if user.sogecredit and not user.sogecredit.valid %}
|
|
<div class="alert alert-info">
|
|
{% blocktrans trimmed %}
|
|
You declared that you opened a bank account in the Société générale. The bank did not validate
|
|
the creation of the account to the BDE, so the membership and the WEI are not paid yet.
|
|
This verification procedure may last a few days.
|
|
Please make sure that you go to the end of the account creation.
|
|
{% endblocktrans %}
|
|
</div>
|
|
{% endif %}
|
|
{# TODO Add banners #}
|
|
</div>
|
|
{% block content %}
|
|
<p>Default content...</p>
|
|
{% endblock %}
|
|
</div>
|
|
</main>
|
|
<footer class="bg-dark text-white mt-auto py-2">
|
|
<div class="container-fluid">
|
|
<div class="row">
|
|
<div class="col-10">
|
|
<form action="{% url 'set_language' %}" method="post"
|
|
class="form-inline">
|
|
<span class="text-muted mr-1">
|
|
<a href="mailto:{{ "CONTACT_EMAIL" | getenv }}"
|
|
class="text-muted">{% trans "Contact us" %}</a> —
|
|
<a href="mailto:{{ "SUPPORT_EMAIL" | getenv }}"
|
|
class="text-muted">{% trans "Technical Support" %}</a> —
|
|
<a href="https://perso.crans.org/club-bde/charte_informatique.pdf"
|
|
class="text-muted">{% trans "Charte Info (FR)" %}</a> —
|
|
<a href="https://note.crans.org/doc/faq/"
|
|
class="text-muted">{% trans "FAQ (FR)" %}</a> —
|
|
</span>
|
|
{% csrf_token %}
|
|
<select title="language" name="language"
|
|
class="form-control form-control-sm language"
|
|
onchange="this.form.submit()">
|
|
{% get_current_language as LANGUAGE_CODE %}
|
|
{% get_available_languages as LANGUAGES %}
|
|
{% for lang_code, lang_name in LANGUAGES %}
|
|
<option value="{{ lang_code }}"
|
|
{% if lang_code == LANGUAGE_CODE %}
|
|
selected{% endif %}>
|
|
{{ lang_name }} ({{ lang_code }})
|
|
</option>
|
|
{% endfor %}
|
|
</select>
|
|
<noscript>
|
|
<input type="submit">
|
|
</noscript>
|
|
</form>
|
|
</div>
|
|
<div class="col text-right">
|
|
<a href="#" data-turbolinks="false" class="text-muted">
|
|
<i class="fa fa-arrow-up" aria-hidden="true"></i>
|
|
</a>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</footer>
|
|
|
|
<script>
|
|
CSRF_TOKEN = "{{ csrf_token }}";
|
|
$(".invalid-feedback").addClass("d-block");
|
|
</script>
|
|
|
|
{% block extrajavascript %}{% endblock %}
|
|
</body>
|
|
</html>
|