From c99f99f055b969a4202f559d44bb505f664397ea Mon Sep 17 00:00:00 2001 From: bonnegent Date: Wed, 15 Sep 2021 15:43:29 +0200 Subject: [PATCH 1/4] del(docker-compose) --- docs/devs.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/devs.md b/docs/devs.md index 508ed88..8f61ec8 100644 --- a/docs/devs.md +++ b/docs/devs.md @@ -46,12 +46,12 @@ AUTH_LDAP_USER_DN_TEMPLATE = "uid=%(user)s,ou=people,dc=insa-rouen,dc=fr" Si besoin, vous pouvez créer un administrateur avec la commande suivante: ```bash -docker-compose run web python36 ./manage.py createsuperuser +./make user ``` ## Récupération de la liste des utilisateurs LDAP : ```bash -docker-compose run web python36 ./manage.py projets_sync_users +docker run -v $(pwd):/code -it pao python3 ./manage.py projets_sync_users ``` ## Changement dans les données initiales @@ -61,12 +61,12 @@ Les données sur les semestres et les crédits sont créés dans le fichier **in Ces données peuvent être chargées grâce à la commande: ```bash -docker-compose run web python36 ./manage.py loaddata initial_data +docker run -v $(pwd):/code -it pao python3 ./manage.py loaddata initial_data ``` Si besoin, ces données peuvent être recréées avec cette commande: ```bash -docker-compose run web python36 ./manage.py dumpdata --indent 4 projets.Semestre projets.Credit --output projets/fixtures/initial_data.json +docker run -v $(pwd):/code -it pao python3 ./manage.py dumpdata --indent 4 projets.Semestre projets.Credit --output projets/fixtures/initial_data.json ``` Puis lancer la commande : ```bash -- GitLab From 6c1aaa4661e5c1e26dcff36c9b268675d0c7ae28 Mon Sep 17 00:00:00 2001 From: bonnegent Date: Wed, 15 Sep 2021 16:05:04 +0200 Subject: [PATCH 2/4] ajout du groupe d'admins fonctionnels --- conf/settings.py | 8 ++++++-- projets/views.py | 4 ++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/conf/settings.py b/conf/settings.py index c802427..c6f5cee 100644 --- a/conf/settings.py +++ b/conf/settings.py @@ -32,7 +32,7 @@ INSTALLED_APPS = [ "fontawesome", "hijack", "hijack.contrib.admin", -# "compat", + # "compat", ] MIDDLEWARE = [ @@ -99,7 +99,7 @@ USE_I18N = True USE_L10N = True USE_TZ = True -DEFAULT_AUTO_FIELD = 'django.db.models.AutoField' +DEFAULT_AUTO_FIELD = "django.db.models.AutoField" # Static files (CSS, JavaScript, Images) # https://docs.djangoproject.com/en/2.1/howto/static-files/ @@ -137,6 +137,10 @@ LDAP_ALLOWED_STUDENTS_GROUPS = ["asi3", "asi4", "asi5"] # le groupe django permettant de regrouper les enseignants GROUP_TEACHER = "enseignants" +# groupe des administrateurs fonctionnels, typiquement les secrétariats +# cela permet d'utiliser certaines fonctions avancées sans passer par l'interface d'admin +GROUP_ADMIN = "admins" + # This is the default, but I like to be explicit. AUTH_LDAP_ALWAYS_UPDATE_USER = True diff --git a/projets/views.py b/projets/views.py index 5afc6e7..a7e6617 100644 --- a/projets/views.py +++ b/projets/views.py @@ -486,7 +486,7 @@ def envoyer_mail(request, pk): def campagne_ouvert(request, pk): campagne = get_object_or_404(Campagne, pk=pk) - if request.user.is_superuser: + if request.user.has_perm("projets.add_campagne"): LOG.info(f"[campagne activité:{pk}] état modifié par {request.user}") campagne.toggle_ouvert() else: @@ -496,7 +496,7 @@ def campagne_ouvert(request, pk): def campagne_note(request, pk): campagne = get_object_or_404(Campagne, pk=pk) - if request.user.is_superuser: + if request.user.has_perm("projets.add_campagne"): LOG.info(f"[période d'évaluation':{pk}] état modifié par {request.user}") campagne.toggle_note() else: -- GitLab From df036964e9d6a3e08d967c6dc0650441d4ada1a5 Mon Sep 17 00:00:00 2001 From: bonnegent Date: Wed, 15 Sep 2021 16:05:22 +0200 Subject: [PATCH 3/4] affichage d'un texte (en plus de l'icone) pour la page campagne --- projets/management/commands/projets_sync_users.py | 7 +++++++ projets/templates/projets/icon_ko.html | 2 +- projets/templates/projets/icon_ok.html | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/projets/management/commands/projets_sync_users.py b/projets/management/commands/projets_sync_users.py index 1efc372..b3583ae 100644 --- a/projets/management/commands/projets_sync_users.py +++ b/projets/management/commands/projets_sync_users.py @@ -10,6 +10,13 @@ class Command(BaseCommand): def handle(self, *args, **options): self.stdout.write("> connexion au ldap") + self.stdout.write("> le groupe des admins fonctionnels") + grp, created = Group.objects.get_or_create(name=settings.GROUP_ADMIN) + if created: + self.stdout.write(f">> création du groupe admin [{settings.GROUP_ADMIN}]") + grp_add_perm = Permission.objects.get(name="Can add campagne") + grp.permissions.add(grp_add_perm) + grp.save() self.stdout.write("> les enseignants") grp, created = Group.objects.get_or_create(name=settings.GROUP_TEACHER) if created: diff --git a/projets/templates/projets/icon_ko.html b/projets/templates/projets/icon_ko.html index 4863730..bbd83db 100644 --- a/projets/templates/projets/icon_ko.html +++ b/projets/templates/projets/icon_ko.html @@ -1 +1 @@ - +fermé diff --git a/projets/templates/projets/icon_ok.html b/projets/templates/projets/icon_ok.html index 6167128..7c91cb3 100644 --- a/projets/templates/projets/icon_ok.html +++ b/projets/templates/projets/icon_ok.html @@ -1 +1 @@ - +ouvert -- GitLab From 24673b87f67a1a233d52f20244012daa00cd941b Mon Sep 17 00:00:00 2001 From: bonnegent Date: Wed, 15 Sep 2021 16:42:04 +0200 Subject: [PATCH 4/4] ajout d'une campagne possible --- projets/models.py | 9 ++++++++- projets/templates/projets/campagne_list.html | 11 +++++++++-- projets/templates/projets/sujet_detail.html | 7 ++++--- projets/urls.py | 5 +++++ projets/views.py | 6 ++++++ 5 files changed, 32 insertions(+), 6 deletions(-) diff --git a/projets/models.py b/projets/models.py index d2cd4be..cd3db99 100644 --- a/projets/models.py +++ b/projets/models.py @@ -92,7 +92,7 @@ class Campagne(models.Model): :param note : booléen indiquant si on peut noter les PAO """ - annee = models.PositiveSmallIntegerField(default=2018) + annee = models.PositiveSmallIntegerField(default=2021) CHOIX = (("1", "semestre 1"), ("2", "semestre 2")) semestre = models.CharField(max_length=1, choices=CHOIX, default="1") ouvert = models.BooleanField(default=True) @@ -108,6 +108,13 @@ class Campagne(models.Model): """Affiche un nom cours pour la campagne.""" return f"{self.annee}S{self.semestre}" + def get_absolute_url(self): + """Utiliser après la création d'une instance. + + :return: + """ + return reverse("pao:campagne-list") + def get_pao_notables(self, user): """ Permet d'obtenir tous les PAO qui peuvent être noter par un user """ pao_responsable = [] diff --git a/projets/templates/projets/campagne_list.html b/projets/templates/projets/campagne_list.html index 5146d71..6837ce9 100644 --- a/projets/templates/projets/campagne_list.html +++ b/projets/templates/projets/campagne_list.html @@ -2,6 +2,9 @@ {% load static %} {% block titre %}Liste des campagnes{% endblock %} {% block content %} +

+ Nouvelle campagne +

@@ -13,8 +16,12 @@ {% for campagne in object_list %} - - + + {% empty %} diff --git a/projets/templates/projets/sujet_detail.html b/projets/templates/projets/sujet_detail.html index 99112ea..642e926 100644 --- a/projets/templates/projets/sujet_detail.html +++ b/projets/templates/projets/sujet_detail.html @@ -37,9 +37,10 @@ - + diff --git a/projets/urls.py b/projets/urls.py index bdfcd52..99fc4e0 100644 --- a/projets/urls.py +++ b/projets/urls.py @@ -106,6 +106,11 @@ urlpatterns = [ path( "campagne/", login_required(views.CampagneList.as_view()), name="campagne-list" ), + path( + "campagne/create/", + permission_required("projets.add_campagne")(views.CampagneCreate.as_view()), + name="campagne-create", + ), path( "campagne//", login_required(views.CampagneDetail.as_view()), diff --git a/projets/views.py b/projets/views.py index a7e6617..ac79052 100644 --- a/projets/views.py +++ b/projets/views.py @@ -395,6 +395,12 @@ class MenuCampagne(object): return context +class CampagneCreate(MenuCampagne, edit.CreateView): + model = Campagne + fields = ["annee", "semestre"] + template_name = "projets/object_create.html" + + class CampagneList(MenuCampagne, generic.ListView): model = Campagne -- GitLab
Nom
{{ campagne }}{% include 'projets/etat_objet.html' with bool=campagne.ouvert only%}{% include 'projets/etat_objet.html' with bool=campagne.note only%} + {% include 'projets/etat_objet.html' with bool=campagne.ouvert only%} + + {% include 'projets/etat_objet.html' with bool=campagne.note only%} +
Aucune campagne
État{% include 'projets/etat_objet.html' with bool=sujet.actif only%} - désactiver - {% else %}success">activer{% endif %} + + {% include 'projets/etat_objet.html' with bool=sujet.actif only%} +
Date de création