From 0cbb72dfa2a76601e10de66d3c0965d463c88aad Mon Sep 17 00:00:00 2001 From: Ambulance Clerc Date: Fri, 11 Aug 2023 19:20:59 +0200 Subject: [PATCH] alpha du modul studenteval --- Reskreen/settings.py | 1 + Reskreen/urls.py | 1 + studenteval/admin.py | 47 ++++++++++++++++++++++++++++++++++++++++- studenteval/models.py | 49 ++++++++++++++++++++++++++++++------------- studenteval/urls.py | 6 +++--- studenteval/views.py | 4 ++++ 6 files changed, 90 insertions(+), 18 deletions(-) diff --git a/Reskreen/settings.py b/Reskreen/settings.py index 892beaa..98f50b5 100644 --- a/Reskreen/settings.py +++ b/Reskreen/settings.py @@ -47,6 +47,7 @@ INSTALLED_APPS = [ 'vehicles.apps.VehiclesConfig', 'collabs.apps.CollabsConfig', 'mycaldav.apps.CaldavConfig', + 'studenteval.apps.StudentevalConfig', 'custom_admin.apps.CustomAdminConfig', 'rangefilter', 'django.contrib.admin', diff --git a/Reskreen/urls.py b/Reskreen/urls.py index 83d499f..5eea486 100644 --- a/Reskreen/urls.py +++ b/Reskreen/urls.py @@ -29,6 +29,7 @@ urlpatterns = [ path('caldav/', include('mycaldav.urls')), #path('collabs_hour/', include('collabs.urls')), path('carnet_rouge/', include('carnet_rouge.urls')), + path('student_eval/', include('studenteval.urls')), path('summernote/', include('django_summernote.urls')), path('editor/', include('django_summernote.urls')), ] diff --git a/studenteval/admin.py b/studenteval/admin.py index 32ec25f..30d9f9a 100644 --- a/studenteval/admin.py +++ b/studenteval/admin.py @@ -1,5 +1,50 @@ from django.contrib import admin from studenteval.models import cl_Student_eval + +class _cl_Student_eval_admin(admin.ModelAdmin): + + list_display = ('uuid', 'sStudent', "get_ref_of_eval", "nEval_Type", "nEval_Mode", "sAuthor") + + + + search_fields = ['Student'] + + + #fields = ["Vehicle", "nType",'sTitle', "sDesc","dtStart", "dtEnd", "Author"] + + fieldsets = ( + ('Informations générales', { + 'fields': ('Student','nEval_Type','dtDate') + }), + ("Information propre à l'intervention ou exercice", { + 'fields': ('sRef','sInter_Desc', 'nInter_Nature', 'nInter_Priority', 'nInter_Complexity', 'nStudent_Role') + }), + ("Appréciation de l'étudiant/stagiaire", { + 'fields': ("nEval_Mode", "sDesc_neg", 'sDesc_pos', "sDesc_global") + }), + ("Co-écriture du suivi", { + 'fields': ("Author_2e",) + }), + ) + + + def save_model(self, request, obj, form, change): + obj.Author = request.user + obj.sAuthor = request.user.first_name + " " + request.user.last_name + print("pass-Save") + print(obj.Student) + + obj.sStudent = obj.Student.first_name + " " + obj.Student.last_name + print(f"sStudent = {obj.sStudent}") + + if obj.Author_2e is not None: + obj.sAuthor_2e = obj.Author_2e.first_name + " " + obj.Author_2e.last_name + + obj.save() + + + + # Register your models here. -admin.site.register(cl_Student_eval) \ No newline at end of file +admin.site.register(cl_Student_eval, _cl_Student_eval_admin) diff --git a/studenteval/models.py b/studenteval/models.py index 1f3055a..d61fa79 100644 --- a/studenteval/models.py +++ b/studenteval/models.py @@ -1,10 +1,11 @@ from django.db import models from django.conf import settings from django.utils import timezone +from django.contrib import admin import uuid EVAL_TYPE = [ - ('1', 'Intervention'), + ('1', 'Intervention/Exercice'), ('2', 'Journée'), ] INTER_NATURE = [ @@ -30,42 +31,49 @@ INTER_COMPLEXITY = [ STUDENT_ROLE = [ ('1', 'Leader'), ('2', 'Équipier'), - ('3', '3e position (observateur'), + ('3', '3e position (observateur)'), ] EVAL_MODE = [ ('1', 'Auto-évaluation'), - ('2', 'Ecadrant'), + ('2', 'Encadrant'), ] +def increment_ID(): + last_id = cl_Student_eval.objects.all().order_by('ID').last() + if not last_id: + return 1 + last_id = last_id.ID + return last_id + 1 class cl_Student_eval(models.Model): uuid = models.UUIDField(default=uuid.uuid4(), editable=False, primary_key=True) + #ID = models.IntegerField("ID du Suivi", editable=False, unique=True, default=increment_ID) # Informations sur l'auteur Author = models.ForeignKey(settings.AUTH_USER_MODEL, verbose_name="Auteur", on_delete=models.SET_NULL, null=True, related_name="eval_author") sAuthor = models.CharField("Auteur", max_length=120) - Author_2e = models.ForeignKey(settings.AUTH_USER_MODEL, verbose_name="Second auteur", on_delete=models.SET_NULL, null=True, related_name="eval_second_author") - sAuthor_2e = models.CharField("Second auteur", max_length=120) + Author_2e = models.ForeignKey(settings.AUTH_USER_MODEL,limit_choices_to={'groups__name': "FI-Encadrants"}, verbose_name="Second auteur", on_delete=models.SET_NULL, null=True, related_name="eval_second_author", blank=True,) + sAuthor_2e = models.CharField("Second auteur", max_length=120, blank=True,) #Information sur l 'étudiant/stagiaire - Student = models.ForeignKey(settings.AUTH_USER_MODEL, verbose_name="Nom du stagiaire/étudaint", on_delete=models.SET_NULL, null=True) + Student = models.ForeignKey(settings.AUTH_USER_MODEL,limit_choices_to={'groups__name': "FI-Étudiants"}, verbose_name="Nom du stagiaire/étudaint", on_delete=models.SET_NULL, null=True) sStudent = models.CharField("Nom de l'étudiant/stagiaire", max_length=120) #Information sur le suivi nEval_Type = models.CharField('Type de suivi', max_length=1, choices=EVAL_TYPE, default=1) - dtDate = models.DateField("Date", default=timezone.now) - sRef = models.CharField("N° de référence / FIP", max_length=120) + dtDate = models.DateField("Date concernée", default=timezone.now) + sRef = models.CharField("N° de référence / FIP", max_length=120, blank=True,) nEval_Mode = models.CharField('Mode de suivi ', max_length=1, choices=EVAL_MODE, default=1) sDesc_neg = models.TextField("Points à améliorer") sDesc_pos = models.TextField("Points positifs") sDesc_global = models.TextField("Avis global sur l'intervention/journée/exercice") #Information sur l'intervention - nInter_Nature = models.CharField('Nature', max_length=1, choices=INTER_NATURE, default=1) - nInter_Priority = models.CharField('Priorité', max_length=1, choices=INTER_PRIORITY, default=1) - nInter_Complexity = models.CharField('Nature de complexité', max_length=1, choices=INTER_COMPLEXITY, default=1) - sInter_Desc = models.TextField("Description courte") - nStudent_Roles = models.CharField("Rôle de l'étudiant/stagiaire", max_length=1, choices=STUDENT_ROLE, default=1) + nInter_Nature = models.CharField('Nature', max_length=1, choices=INTER_NATURE, default=1, blank=True,) + nInter_Priority = models.CharField('Priorité', max_length=1, choices=INTER_PRIORITY, default=1, blank=True,) + nInter_Complexity = models.CharField('Nature de complexité', max_length=1, choices=INTER_COMPLEXITY, default=1, blank=True,) + sInter_Desc = models.TextField("Description courte", blank=True,) + nStudent_Role = models.CharField("Rôle de l'étudiant/stagiaire", max_length=1, choices=STUDENT_ROLE, default=1, blank=True,) #Automatic data @@ -76,6 +84,19 @@ class cl_Student_eval(models.Model): super().__init__(*args, **kwargs) self.a_evals = None + @admin.display(description='Référence du suivi') + def get_ref_of_eval(self): + sRet = "" + + if int(self.nEval_Type) == 1: + sRet = self.sRef + elif int(self.nEval_Type) == 2: + sRet = self.dtDate.strftime("%d.%b.%Y") + + + print(sRet) + print(f"Eval_Type = {self.nEval_Type} => {int(self.nEval_Type)-1}") + return f"{EVAL_TYPE[int(self.nEval_Type)-1][1]}: {sRet}" def get_all_evals_for_student(self,sStudent): @@ -93,7 +114,7 @@ class cl_Student_eval(models.Model): def __str__(self): - return f"{ self.sStudent } => {self.sRef} ({ EVAL_MODE[self.nEval_Mode]})" + return f"{ self.sStudent } => {self.sRef} ({ self.nEval_Mode})" class Meta: verbose_name = "Suivi étudiants - stagiaires" diff --git a/studenteval/urls.py b/studenteval/urls.py index 3afa415..b603d2d 100644 --- a/studenteval/urls.py +++ b/studenteval/urls.py @@ -3,15 +3,15 @@ from django.urls import path from . import views -''' + app_name = "studenteval" + urlpatterns = [ - #path('vhc', views.view_vhc, name='view_vhc'), + path('student/', views.student, name='views.student'), #path('peremptions', views.view_peremptions, name='view_peremptions'), ] -''' \ No newline at end of file diff --git a/studenteval/views.py b/studenteval/views.py index 91ea44a..faff3b5 100644 --- a/studenteval/views.py +++ b/studenteval/views.py @@ -1,3 +1,7 @@ +from django.http import HttpResponse from django.shortcuts import render # Create your views here. +def student(request, sStudent): + response = "You're looking at the results of question %s." + return HttpResponse(response % question_id)