Compare commits

...

3 commits

7 changed files with 195 additions and 66 deletions

View file

@ -1,5 +1,7 @@
from datetime import date from datetime import date
from authens.models import CASAccount
from django.contrib.auth.models import User from django.contrib.auth.models import User
from django.core.management.base import BaseCommand, CommandError from django.core.management.base import BaseCommand, CommandError
@ -36,7 +38,7 @@ class Command(BaseCommand):
else: else:
promo = self.get_current_promo() promo = self.get_current_promo()
if promo < 2000 or promo > 2100: if promo is not None and (promo < 2000 or promo > 2100):
raise CommandError("Promotion invalide : {}".format(promo)) raise CommandError("Promotion invalide : {}".format(promo))
verbosity = options["verbosity"] verbosity = options["verbosity"]
@ -48,7 +50,7 @@ class Command(BaseCommand):
) )
# On vire les élèves déjà existants # On vire les élèves déjà existants
existing_users = set(User.objects.values_list("username", flat=True)) existing_users = set(CASAccount.objects.values_list("cas_login", flat=True))
clippers = [ clippers = [
clipper for clipper in clipper_list if clipper.uid not in existing_users clipper for clipper in clipper_list if clipper.uid not in existing_users
] ]
@ -62,9 +64,14 @@ class Command(BaseCommand):
users_to_create = [] users_to_create = []
profiles_to_create = [] profiles_to_create = []
dept_m2m_to_create = [] dept_m2m_to_create = []
cas_account_to_create = []
for clipper in clippers: for clipper in clippers:
user = User(username=clipper.uid, email=clipper.email) user = User(username=clipper.uid, email=clipper.email)
cas_account = CASAccount(
user=user, cas_login=clipper.uid, entrance_year=clipper.year
)
cas_account_to_create.append(cas_account)
profile = Profile(user=user, full_name=clipper.name, promotion=clipper.year) profile = Profile(user=user, full_name=clipper.name, promotion=clipper.year)
users_to_create.append(user) users_to_create.append(user)
profiles_to_create.append(profile) profiles_to_create.append(profile)
@ -83,10 +90,14 @@ class Command(BaseCommand):
# p.id = pid # p.id = pid
# _manual_ids(User, users_to_create) # _manual_ids(User, users_to_create)
# _manual_ids(CASAccount, cas_account_to_create)
# _manual_ids(Profile, profiles_to_create) # _manual_ids(Profile, profiles_to_create)
# _manual_ids(Profile.department.through, dept_m2m_to_create) # _manual_ids(Profile.department.through, dept_m2m_to_create)
User.objects.bulk_create(users_to_create) User.objects.bulk_create(users_to_create)
for cas_account in cas_account_to_create:
cas_account.user_id = cas_account.user.id
CASAccount.objects.bulk_create(cas_account_to_create)
for profile in profiles_to_create: for profile in profiles_to_create:
profile.user_id = profile.user.id profile.user_id = profile.user.id
Profile.objects.bulk_create(profiles_to_create) Profile.objects.bulk_create(profiles_to_create)

View file

@ -28,65 +28,21 @@
font-weight: 400; font-weight: 400;
src: local("Source Code Pro Regular"), local("SourceCodePro-Regular"), url("../fonts/source-code-pro/source-code-pro-v12-latin-regular.woff2") format("woff2"), url("../fonts/source-code-pro/source-code-pro-v12-latin-regular.woff") format("woff"); src: local("Source Code Pro Regular"), local("SourceCodePro-Regular"), url("../fonts/source-code-pro/source-code-pro-v12-latin-regular.woff2") format("woff2"), url("../fonts/source-code-pro/source-code-pro-v12-latin-regular.woff") format("woff");
} }
#main-menu a a, #account-area a, a { a, #main-menu a a, #account-area a {
text-decoration: none; text-decoration: none;
color: #FFDC00; color: #FFDC00;
} }
#main-menu a a:hover, #account-area a:hover, a:hover, a:hover, #main-menu a a:hover, #account-area a:hover,
a:active,
#main-menu a a:active, #main-menu a a:active,
#account-area a:active, #account-area a:active,
a:active, a:focus,
#main-menu a a:focus, #main-menu a a:focus,
#account-area a:focus, #account-area a:focus {
a:focus {
color: #ffbb00; color: #ffbb00;
} }
* {
box-sizing: border-box;
}
body, html {
height: 100%;
}
body {
display: grid;
grid-template-columns: auto auto;
grid-template-areas: "aside main";
background-color: #301827;
color: #FFFFFF;
font-family: "Fira Sans", "Roboto", sans-serif;
}
#aside {
grid-area: aside;
padding: 0 0 0 10vw;
background-color: #1f0e19;
box-shadow: 4px 0 0 rgba(31, 14, 25, 0.3);
z-index: 1000;
}
#main {
grid-area: main;
padding: 0 10vw 0 0;
display: flex;
flex-direction: column;
justify-content: space-between;
background-color: #301827;
z-index: 500;
}
@media only screen and (max-width: 1200px) {
#header {
margin: 0;
}
#main {
margin: 0;
}
}
#menu { #menu {
display: grid; display: grid;
float: right; float: right;
@ -95,6 +51,15 @@ body {
grid-template-rows: auto auto auto auto 120px; grid-template-rows: auto auto auto auto 120px;
grid-template-areas: "title" "language" "search" "menu" "account"; grid-template-areas: "title" "language" "search" "menu" "account";
} }
#menu #hamburger {
display: none;
grid-area: hamburger;
background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAABhGlDQ1BJQ0MgcHJvZmlsZQAAKJF9kT1Iw0AcxV9TS1VaHOwg4pChOlkoKuKoVShChVIrtOpgcukXNGlIUlwcBdeCgx+LVQcXZ10dXAVB8APEzc1J0UVK/F9SaBHjwXE/3t173L0DhGaVqWZPHFA1y8gkE2IuvyoGXyEggD6EEZeYqc+l0yl4jq97+Ph6F+NZ3uf+HGGlYDLAJxLPMt2wiDeIpzctnfM+cYSVJYX4nHjcoAsSP3JddvmNc8lhgWdGjGxmnjhCLJa6WO5iVjZU4iniqKJqlC/kXFY4b3FWq3XWvid/YaigrSxzneYIkljEEtIQIaOOCqqwEKNVI8VEhvYTHv5hx58ml0yuChg5FlCDCsnxg//B727N4uSEmxRKAIEX2/4YBYK7QKth29/Htt06AfzPwJXW8deawMwn6Y2OFj0CBraBi+uOJu8BlzvA0JMuGZIj+WkKxSLwfkbflAcGb4H+Nbe39j5OH4AsdZW6AQ4OgbESZa97vLu3u7d/z7T7+wEsq3KLN3ZkxAAAAAlwSFlzAAAA7AAAAOwBeShxvQAAADNJREFUWMPt1EERAEAIA7Ee/h0hjpPBg0RBp49NrnvTmc0Btf2AARVAipVQikGKpdgArvsZZAhH7c55ywAAAABJRU5ErkJggg==");
height: 30px;
width: 30px;
float: right;
margin-top: 20px;
}
#title { #title {
grid-area: title; grid-area: title;
@ -545,4 +510,84 @@ body {
text-align: center; text-align: center;
} }
* {
box-sizing: border-box;
}
body, html {
height: 100%;
}
body {
display: grid;
grid-template-areas: "aside main";
background-color: #301827;
color: #FFFFFF;
font-family: "Fira Sans", "Roboto", sans-serif;
}
#aside {
grid-area: aside;
padding: 0 0 0 10vw;
background-color: #1f0e19;
box-shadow: 4px 0 0 rgba(31, 14, 25, 0.3);
z-index: 1000;
}
#main {
grid-area: main;
padding: 0 10vw 0 0;
display: flex;
flex-direction: column;
justify-content: space-between;
background-color: #301827;
z-index: 500;
}
@media screen and (max-width: 900px), (orientation: portrait) {
body {
grid-template-rows: max-content auto;
grid-template-areas: "aside" "main";
}
#aside,
#main {
padding: 0;
}
#content-home,
#content-birthdays,
#content-view-profile,
#content-edit-profile {
width: auto;
}
#content-home form input[type=submit] {
grid-column: 1/3;
}
#footer,
.content {
max-width: 100%;
}
#menu {
width: auto;
float: none;
grid-template-columns: auto 50px;
grid-template-areas: "title hamburger" "language language" "search search" "menu menu" "account account";
}
#menu #hamburger {
display: grid;
}
#menu #main-menu,
#menu #account-area {
display: none;
}
#search-area {
width: auto;
}
}
/*# sourceMappingURL=annuaire.css.map */ /*# sourceMappingURL=annuaire.css.map */

View file

@ -15,7 +15,6 @@ body, html {
body { body {
display: grid; display: grid;
grid-template-columns: auto auto;
grid-template-areas: grid-template-areas:
"aside main"; "aside main";
@ -42,13 +41,63 @@ body {
z-index: 500; z-index: 500;
} }
@media only screen and (max-width: 1200px) { // Pour les vues mobile
#header { @media screen and (max-width: 900px), (orientation: portrait) {
margin: 0; body {
grid-template-rows: max-content auto;
grid-template-areas:
"aside"
"main";
} }
#aside,
#main { #main {
margin: 0; padding: 0;
} }
}
#content-home,
#content-birthdays,
#content-view-profile,
#content-edit-profile {
width: auto;
}
#content-home {
form {
input[type="submit"] {
grid-column: 1/3;
}
}
}
#footer,
.content {
max-width: 100%;
}
#menu {
width: auto;
float: none;
grid-template-columns: auto 50px;
grid-template-areas:
"title hamburger"
"language language"
"search search"
"menu menu"
"account account";
#hamburger {
display: grid;
}
#main-menu,
#account-area {
display: none;
}
}
#search-area {
width: auto;
}
}

View file

@ -19,6 +19,16 @@ $account-area-height: 120px;
"search" "search"
"menu" "menu"
"account"; "account";
#hamburger {
display: none;
grid-area: hamburger;
background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAABhGlDQ1BJQ0MgcHJvZmlsZQAAKJF9kT1Iw0AcxV9TS1VaHOwg4pChOlkoKuKoVShChVIrtOpgcukXNGlIUlwcBdeCgx+LVQcXZ10dXAVB8APEzc1J0UVK/F9SaBHjwXE/3t173L0DhGaVqWZPHFA1y8gkE2IuvyoGXyEggD6EEZeYqc+l0yl4jq97+Ph6F+NZ3uf+HGGlYDLAJxLPMt2wiDeIpzctnfM+cYSVJYX4nHjcoAsSP3JddvmNc8lhgWdGjGxmnjhCLJa6WO5iVjZU4iniqKJqlC/kXFY4b3FWq3XWvid/YaigrSxzneYIkljEEtIQIaOOCqqwEKNVI8VEhvYTHv5hx58ml0yuChg5FlCDCsnxg//B727N4uSEmxRKAIEX2/4YBYK7QKth29/Htt06AfzPwJXW8deawMwn6Y2OFj0CBraBi+uOJu8BlzvA0JMuGZIj+WkKxSLwfkbflAcGb4H+Nbe39j5OH4AsdZW6AQ4OgbESZa97vLu3u7d/z7T7+wEsq3KLN3ZkxAAAAAlwSFlzAAAA7AAAAOwBeShxvQAAADNJREFUWMPt1EERAEAIA7Ee/h0hjpPBg0RBp49NrnvTmc0Btf2AARVAipVQikGKpdgArvsZZAhH7c55ywAAAABJRU5ErkJggg==');
height: 30px;
width: 30px;
float: right;
margin-top: 20px;
}
} }
#title { #title {

View file

@ -1,4 +1,4 @@
@use "common";
@use "header"; @use "header";
@use "content"; @use "content";
@use "footer"; @use "footer";
@use "common";

View file

@ -16,6 +16,11 @@
<body> <body>
<div id="aside"> <div id="aside">
<div id="menu"> <div id="menu">
<h1 id="title">
{% block title %} <a href='{% url "home" %}'>{% trans "Annuaire des élèves de l'ENS" %}</a>{% endblock %}
</h1>
<a id="hamburger" href="javascript:void(0);" onclick="toggleMenu()"></a>
<div id="language_switch"> <div id="language_switch">
<form action="{% url 'set_language' %}" method="post"> <form action="{% url 'set_language' %}" method="post">
{% csrf_token %} {% csrf_token %}
@ -31,11 +36,6 @@
<button type="submit">{% trans "Rechercher" %}</button> <button type="submit">{% trans "Rechercher" %}</button>
</form> </form>
<h1 id="title">
{% block title %} <a href='{% url "home" %}'>{% trans "Annuaire des élèves de l'ENS" %}</a>{% endblock %}
</h1>
<div id="main-menu"> <div id="main-menu">
<nav> <nav>
<a href='{% url "home" %}'>{% trans "Accueil" %}</a> <a href='{% url "home" %}'>{% trans "Accueil" %}</a>
@ -77,7 +77,21 @@
{% endblock %} {% endblock %}
</div> </div>
</div> </div>
<script>
function toggleMenu() {
var menu = document.getElementById("main-menu");
var account = document.getElementById("account-area");
if (menu.style.display === "none") {
menu.style.display = "grid"
account.style.display = "grid"
} else {
menu.style.display = "none"
account.style.display = "none"
}
}
</script>
{% block extra_js %}{% endblock %}
</body> </body>
{% block extra_js %}{% endblock %}
</html> </html>