chore: Initial Commit

feat: Gestion des inscriptions [#1]
feat(frontend): Création des vues pour le paramétrage de l'école [#2]
feat: Gestion du login [#6]
fix: Correction lors de la migration des modèle [#8]
feat: Révision du menu principal [#9]
feat: Ajout d'un footer [#10]
feat: Création des dockers compose pour les environnements de
développement et de production [#12]
doc(ci): Mise en place de Husky et d'un suivi de version automatique [#14]
This commit is contained in:
Luc SORIGNET
2024-11-18 10:02:58 +01:00
committed by N3WT DE COMPET
commit af0cd1c840
228 changed files with 22694 additions and 0 deletions

View File

@ -0,0 +1,52 @@
{% extends "base.html" %}
{% load rest_framework %}
{% block content %}
<h1>Création d'une nouvelle fiche d'inscription</h1>
<br>
<form action='{% url 'GestionInscriptions:nouvelEleve' %}' method="post">
{% csrf_token %}
<ul>
<li style="margin-bottom: 15px"><strong>ELEVE</strong></li>
<div class="input-group">
<label for="nomEleve">Nom</label>
<div class="input-wrapper">
<input type="text" id="nomEleve" name="nomEleve">
</div>
</div>
<div class="input-group">
<label for="prenomEleve">Prénom</label>
<div class="input-wrapper">
<input type="text" id="prenomEleve" name="prenomEleve">
</div>
</div>
<li style="margin-bottom: 15px"><strong>LISTE DES CONTACTS</strong></li>
<div class="input-group">
<label for="mail">Adresse e-mail </label>
<div class="input-wrapper">
<input type="text" id="mail" name="mailResponsable">
</div>
</div>
<div class="input-group">
<label for="telephone">Numéro de téléphone</label>
<div class="input-wrapper">
<input type="text" id="telephone" name="telephoneResponsable">
</div>
</div>
<div class="input-group">
<label for="nomContact">Nom</label>
<div class="input-wrapper">
<input type="text" id="nomContact" name="nomResponsable">
</div>
</div>
<div class="input-group">
<label for="prenomContact">Prénom</label>
<div class="input-wrapper">
<input type="text" id="prenomContact" name="prenomResponsable">
</div>
</div>
</ul>
<input class="btn primary" type="submit" value="Créer" name="valider">
<br>
<input class="btn" type="button" value="Annuler" name="cancel">
</form>
{% endblock %}

View File

@ -0,0 +1,16 @@
{% extends "base.html" %}
{% block content %}
<h1>Configuration des dossiers d'inscriptions</h1>
<br>
<form action='{% url 'GestionInscriptions:index' %}' method="post">
{% csrf_token %}
<ul>
<div style="margin-bottom: 15px">
<label>Relance automatique :</label>
<input type="text" name="delaiRelance" value="{{ delaiRelance }}">
<label>secondes</label>
</div>
</ul>
<input class="btn" type="submit" value="Configurer" name="valider">
</form>
{% endblock %}

View File

@ -0,0 +1,162 @@
{% extends "base.html" %}
{% block content %}
<h1>Création du dossier d'inscription</h1>
<br>
<form action='{% url 'GestionInscriptions:validate' eleve.id %}' method="post" enctype="multipart/form-data">
{% csrf_token %}
{% with responsable=eleve.getResponsablePrincipal %}
<ul>
<li style="margin-bottom: 15px"><strong>ELEVE</strong></li>
<div style="margin-bottom: 15px">
<label>Nom :</label>
<input type="text" name="nomEleve" value="{{ eleve.nom }}">
</div>
<div style="margin-bottom: 15px">
<label>Prénom :</label>
<input type="text" name="prenomEleve" value="{{ eleve.prenom }}">
</div>
<div style="margin-bottom: 15px">
<label>Genre :<br></label>
{% for genre in genres %}
<label>{{ genre }}</label>
<input type="radio" id="{{ genre }}" name="genre" value="{{ genre }}">
{% endfor %}
</div>
<div style="margin-bottom: 15px">
<label>Adresse :</label>
<input type="text" name="adresseEleve">
</div>
<div style="margin-bottom: 15px">
<label>Date de naissance :</label>
<input type="text" name="dateNaissanceEleve">
</div>
<div style="margin-bottom: 15px">
<label>Lieu de naissance :</label>
<input type="text" name="lieuNaissanceEleve">
</div>
<div style="margin-bottom: 15px">
<label>Code postal de naissance :</label>
<input type="text" name="codePostalNaissanceEleve">
</div>
<div style="margin-bottom: 15px">
<label>Nationalité :</label>
<input type="text" name="nationaliteEleve">
</div>
<div style="margin-bottom: 15px">
<label>Langue parlée :</label>
<input type="text" name="langueEleve">
</div>
<div style="margin-bottom: 15px">
<label>Ambiance :<br></label>
{% for ambiance in ambiances %}
<label>{{ ambiance }}</label>
<input type="radio" id="{{ ambiance }}" name="ambiance" value="{{ ambiance }}">
{% endfor %}
</div>
<div style="margin-bottom: 15px">
<label>Médecin traitant :</label>
<input type="text" name="medecinTraitantEleve">
</div>
<li style="margin-bottom: 15px"><strong>RESPONSABLES</strong></li>
<ul>
<li style="margin-bottom: 15px"><strong>RESPONSABLE 1</strong></li>
<div style="margin-bottom: 15px">
<label>Nom :</label>
<input type="text" name="nomResponsable1" value="{{ responsable.nom }}">
</div>
<div style="margin-bottom: 15px">
<label>Prénom :</label>
<input type="text" name="prenomResponsable1" value="{{ responsable.prenom }}">
</div>
<div style="margin-bottom: 15px">
<label>Adresse :</label>
<input type="text" name="adresseResponsable1" value="{{ responsable.adresse }}">
</div>
<div style="margin-bottom: 15px">
<label>Date de naissance :</label>
<input type="text" name="dateNaissanceResponsable1" value="{{ responsable.dateNaissance }}">
</div>
<div style="margin-bottom: 15px">
<label>Mail :</label>
<input type="text" name="mailResponsable1" value="{{ responsable.mail }}">
</div>
<div style="margin-bottom: 15px">
<label>Téléphone :</label>
<input type="text" name="telephoneResponsable1" value="{{ responsable.telephone }}">
</div>
<div style="margin-bottom: 15px">
<label>Profession :</label>
<input type="text" name="professionResponsable1" value="{{ responsable.profession }}">
</div>
<li style="margin-bottom: 15px"><strong>RESPONSABLE 2</strong></li>
<div style="margin-bottom: 15px">
<label>Nom :</label>
<input type="text" name="nomResponsable2">
</div>
<div style="margin-bottom: 15px">
<label>Prénom :</label>
<input type="text" name="prenomResponsable2">
</div>
<div style="margin-bottom: 15px">
<label>Adresse :</label>
<input type="text" name="adresseResponsable2">
</div>
<div style="margin-bottom: 15px">
<label>Date de naissance :</label>
<input type="text" name="dateNaissanceResponsable2">
</div>
<div style="margin-bottom: 15px">
<label>Mail :</label>
<input type="text" name="mailResponsable2">
</div>
<div style="margin-bottom: 15px">
<label>Téléphone :</label>
<input type="text" name="telephoneResponsable2">
</div>
<div style="margin-bottom: 15px">
<label>Profession :</label>
<input type="text" name="professionResponsable2">
</div>
</ul>
<li style="margin-bottom: 15px"><strong>FRATRIE</strong></li>
<ul>
<li style="margin-bottom: 15px"><strong>FRERE - SOEUR 1 :</strong></li>
<div style="margin-bottom: 15px">
<label>Nom :</label>
<input type="text" name="nomFrere1">
</div>
<div style="margin-bottom: 15px">
<label>Prénom :</label>
<input type="text" name="prenomFrere1">
</div>
<div style="margin-bottom: 15px">
<label>Date de naissance :</label>
<input type="text" name="dateNaissanceFrere1">
</div>
<li style="margin-bottom: 15px"><strong>FRERE - SOEUR 2 :</strong></li>
<div style="margin-bottom: 15px">
<label>Nom :</label>
<input type="text" name="nomFrere2">
</div>
<div style="margin-bottom: 15px">
<label>Prénom :</label>
<input type="text" name="prenomFrere2">
</div>
<div style="margin-bottom: 15px">
<label>Date de naissance :</label>
<input type="text" name="dateNaissanceFrere2">
</div>
</ul>
<li style="margin-bottom: 15px"><strong>PAIEMENT</strong></li>
<div style="margin-bottom: 15px">
<label>Mode Paiement :<br></label>
{% for modePaiement in modesPaiement %}
<label>{{ modePaiement }}</label>
<input type="radio" id="{{ modePaiement }}" name="modePaiement" value="{{ modePaiement }}">
{% endfor %}
</div>
</ul>
<input class="btn" type="submit" value="Valider" name="valider">
{% endwith %}
</form>
{% endblock %}

View File

@ -0,0 +1,42 @@
{% extends "base.html" %}
{% block content %}
<h1>Edition d'une fiche d'inscription</h1>
<br>
<form action='{% url 'GestionInscriptions:index' %}' method="post">
{% csrf_token %}
{% with responsable=eleve.getResponsablePrincipal %}
<ul>
<div style="margin-bottom: 15px">
<input type="hidden" name="fiche_id" value="{{ eleve.id }}">
</div>
<li style="margin-bottom: 15px"><strong>ELEVE</strong></li>
<div style="margin-bottom: 15px">
<label>Nom :</label>
<input type="text" name="nomEleve" value="{{ eleve.nom }}">
</div>
<div style="margin-bottom: 15px">
<label>Prénom :</label>
<input type="text" name="prenomEleve" value="{{ eleve.prenom }}">
</div>
<li style="margin-bottom: 15px"><strong>LISTE DES CONTACTS</strong></li>
<div style="margin-bottom: 15px">
<label>Adresse e-mail :</label>
<input type="text" name="mail" value="{{ responsable.mail }}">
</div>
<div style="margin-bottom: 15px">
<label>Numéro de téléphone :</label>
<input type="text" name="telephone" value="{{ responsable.telephone }}">
</div>
<div style="margin-bottom: 15px">
<label>Nom :</label>
<input type="text" name="nomContact" value="{{ responsable.nom }}">
</div>
<div style="margin-bottom: 15px">
<label>Prénom :</label>
<input type="text" name="prenomContact" value="{{ responsable.prenom }}">
</div>
</ul>
<input class="btn" type="submit" value="Modifier" name="valider">
{% endwith %}
</form>
{% endblock %}

View File

@ -0,0 +1,126 @@
{% extends "base.html" %}
{% load myTemplateTag %}
{% block content %}
<h1>Inscriptions 2024/2025</h1>
<br>
<div>
<br>
<br>
</div>
<section class="heading-section">
<!-- Search bar -->
<div class="input-group max-80">
<div class="input-wrapper max">
<span class="icon-ctn">
<i class="icon user-search"></i>
</span>
<input type="text" id="username" placeholder="Rechercher">
</div>
</div>
<a class="btn primary" href="nouvelEleve">
Ajouter <i class="icon profile-add"></i>
</a>
</section>
<section class="heading-section">
<div class="alphabet-filter">
{% for letter in "*ABCDEFGHIJKLMNOPQRSTUVWXYZ" %}
<a class="item" href="?letter={{ letter }}">{{ letter }}</a>
{% endfor %}
</div>
</section>
<table class="table">
<thead>
<tr>
<th>Nom</th>
<th>Prenom</th>
<th>Mail</th>
<th>Téléphone</th>
<th>MàJ Le</th>
<th>Statut</th>
<th>Fichiers</th>
<th>Action</th>
</tr>
</thead>
<tbody>
{% for ficheInscription in ficheInscriptions_list %}
{% with eleve=ficheInscription.eleve %}
{% with responsable=eleve.getResponsablePrincipal %}
{% with fichiers=ficheInscription|recupereFichiersDossierInscription %}
<tr>
<td>{{ eleve.nom }}</td>
<td>{{ eleve.prenom }}</td>
<td>{{ responsable.mail }}</td>
<td>{{ responsable.telephone }}</td>
<td>{{ ficheInscription.dateMAJ }}</td>
<td>
{% if ficheInscription.etat == 0 %}
<span class="tag blue"> Créé</span>
{% elif ficheInscription.etat == 1 %}
<span class="tag orange"> Envoyé</span>
{% elif ficheInscription.etat == 2 %}
<span class="tag purple"> En Validation</span>
{% else %}
<span class="tag green"> Validé</span>
{% endif %}
</td>
<td>
{% for fichier in fichiers %}
<a href="{{ fichier.url }}">{{ fichier.nom }}</a>
{% endfor %}
</td>
<td class="actions">
<button class="icon-btn" onclick="location.href='{% url 'GestionInscriptions:send' eleve.id %}'" type="submit"> <i class="icon directbox-send"></i></button>
<button class="icon-btn"> <i class="icon edit"></i></button>
<button class="icon-btn red"> <i class="icon user-minus"></i></button>
</td>
</tr>
{% endwith %}
{% endwith %}
{% endwith %}
{% endfor %}
</tbody>
<tfoot>
<tr>
<td></td>
<td colspan="6">
<div class="pagination">
{% if ficheInscriptions_list.has_previous %}
{% if ficheInscriptions_list.previous_page_number == 1 %}
<a class="item" href="?page={{ ficheInscriptions_list.previous_page_number }}">&lt;</a>
<a class="item" href="?page=1">1</a>
{% else %}
<a class="item" href="?page={{ ficheInscriptions_list.previous_page_number }}">&lt;</a>
<a class="item" href="?page=1">1</a>
<a class="item" >...</a>
{% endif %}
{% endif %}
{% if ficheInscriptions_list %}
<a class="item active">{{ ficheInscriptions_list.number }}</a>
{% else %}
<a class="item">{{ ficheInscriptions_list.number }}</a>
{% endif %}
{% if ficheInscriptions_list.has_next %}
{% if ficheInscriptions_list.next_page_number == ficheInscriptions_list.paginator.num_pages %}
<a class="item" href="?page={{ ficheInscriptions_list.next_page_number }}">{{ ficheInscriptions_list.next_page_number }}</a>
<a class="item" href="?page={{ ficheInscriptions_list.next_page_number }}">&gt;</a>
{% else %}
<a class="item" >...</a>
<a class="item" href="?page={{ ficheInscriptions_list.paginator.num_pages }}">{{ ficheInscriptions_list.paginator.num_pages }}</a>
<a class="item" href="?page={{ ficheInscriptions_list.next_page_number }}">&gt;</a>
{% endif %}
{% endif %}
</div>
</td>
<td></td>
</tr>
</tfoot>
</table>
{% endblock %}