85 lines
2.8 KiB
Python
85 lines
2.8 KiB
Python
from django.contrib import admin
|
|
from studenteval.models import cl_Student_eval
|
|
from django.urls import reverse
|
|
from django.utils.html import format_html
|
|
from . import views
|
|
from rangefilter.filters import *
|
|
from django.core.exceptions import PermissionDenied
|
|
|
|
def is_member(user, group):
|
|
return user.groups.filter(name=group).exists()
|
|
|
|
class _cl_Student_eval_admin(admin.ModelAdmin):
|
|
request = None
|
|
|
|
list_display = ('ID','action_buttons','sStudent', "get_ref_of_eval", "nEval_Type", "nEval_Mode", "sAuthor", 'get_mirrored')
|
|
|
|
|
|
|
|
def action_buttons(self, obj):
|
|
action1_url = f"/student_eval/show_pdf/{obj.uuid}/?dtDate__range__gte={self.request.GET.get('dtDate__range__gte')}&dtDate__range__lte={self.request.GET.get('dtDate__range__lte')}"
|
|
return format_html('<a href="{}">Voir PDF</a>', action1_url)
|
|
|
|
action_buttons.short_description = 'Voir la fiche PDF'
|
|
|
|
def get_queryset(self, request):
|
|
self.request = request
|
|
return super(_cl_Student_eval_admin, self).get_queryset(request)
|
|
|
|
|
|
|
|
search_fields = ['sStudent', 'sRef']
|
|
list_filter = ['sStudent',"sAuthor", "nEval_Type", "nEval_Mode"]
|
|
|
|
def get_form(self, request, obj=None, **kwargs):
|
|
user_obj = request.user
|
|
if obj is not None:
|
|
author_id = obj.Author.id if obj.Author is not None else 0
|
|
student_id = obj.Student.id if obj.Student is not None else 0
|
|
|
|
if not user_obj.id == author_id and not user_obj.id == student_id and not is_member(user_obj, "FI-Encadrants"):
|
|
raise PermissionDenied
|
|
return super().get_form(request, obj, **kwargs)
|
|
|
|
|
|
|
|
#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}")
|
|
|
|
print(obj.Author_2e)
|
|
if obj.Author_2e is not None:
|
|
print(f"Maj author 2e")
|
|
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, _cl_Student_eval_admin)
|