From 47fbbd207d22f894a91ba3dcfad6bdff11cda901 Mon Sep 17 00:00:00 2001 From: Ambulance Clerc Date: Tue, 12 Sep 2023 15:19:17 +0200 Subject: [PATCH] Ajout impression --- studenteval/admin.py | 16 ++++++- studenteval/list_pdf_export.py | 15 +++++++ .../studenteval/cl_student_eval_detail.html | 2 +- .../studenteval/cl_student_eval_list.html | 2 +- studenteval/urls.py | 4 +- studenteval/views.py | 43 ++++++++++++++++++- 6 files changed, 75 insertions(+), 7 deletions(-) create mode 100644 studenteval/list_pdf_export.py diff --git a/studenteval/admin.py b/studenteval/admin.py index 63959b5..f60f89c 100644 --- a/studenteval/admin.py +++ b/studenteval/admin.py @@ -1,4 +1,5 @@ from django.contrib import admin +from django_summernote.admin import SummernoteModelAdmin from studenteval.models import cl_Student_eval from django.db.models import Q from django.urls import reverse @@ -8,10 +9,18 @@ from django.contrib.auth.models import User from rangefilter.filters import * from django.core.exceptions import PermissionDenied +from rangefilter.filters import ( + DateRangeFilterBuilder, + DateTimeRangeFilterBuilder, + NumericRangeFilterBuilder, + DateRangeQuickSelectListFilterBuilder, +) + def is_member(user, group): return user.groups.filter(name=group).exists() -class _cl_Student_eval_admin(admin.ModelAdmin): +class _cl_Student_eval_admin(SummernoteModelAdmin): + summernote_fields = ('sDesc_neg','sDesc_pos','sDesc_global') request = None always_show_username = True @@ -43,7 +52,10 @@ class _cl_Student_eval_admin(admin.ModelAdmin): search_fields = ['sStudent', 'sRef'] - list_filter = ['sStudent',"sAuthor", "nEval_Type", "nEval_Mode"] + list_filter = ['sStudent',"sAuthor", "nEval_Type", "nEval_Mode",] + #list_filter = ('sStudent', "sAuthor", "nEval_Type", "nEval_Mode", ("dtDate", DateRangeFilterBuilder()),) + + def get_form(self, request, obj=None, **kwargs): user_obj = request.user diff --git a/studenteval/list_pdf_export.py b/studenteval/list_pdf_export.py new file mode 100644 index 0000000..fba4a89 --- /dev/null +++ b/studenteval/list_pdf_export.py @@ -0,0 +1,15 @@ +from django.http import HttpResponse +from django.template.loader import get_template +from xhtml2pdf import pisa + + +def render_to_pdf(template_src, context_dict={}): + template = get_template(template_src) + html = template.render(context_dict) + response = HttpResponse(content_type='application/pdf') + pdf_status = pisa.CreatePDF(html, dest=response) + + if pdf_status.err: + return HttpResponse('Some errors were encountered
' + html + '
') + + return response \ No newline at end of file diff --git a/studenteval/templates/studenteval/cl_student_eval_detail.html b/studenteval/templates/studenteval/cl_student_eval_detail.html index f9ec85e..e17b90f 100644 --- a/studenteval/templates/studenteval/cl_student_eval_detail.html +++ b/studenteval/templates/studenteval/cl_student_eval_detail.html @@ -5,7 +5,7 @@ Voir toutes les évaluations
  • - Imprimer liste PDF + Imprimer liste PDF
  • {% endblock %} {% block cl_content %} diff --git a/studenteval/templates/studenteval/cl_student_eval_list.html b/studenteval/templates/studenteval/cl_student_eval_list.html index 3496002..fbe8e9d 100644 --- a/studenteval/templates/studenteval/cl_student_eval_list.html +++ b/studenteval/templates/studenteval/cl_student_eval_list.html @@ -4,7 +4,7 @@ {% block url_nav %}
  • - Imprimer liste PDF + Imprimer liste PDF
  • {% endblock %} {% block cl_content %} diff --git a/studenteval/urls.py b/studenteval/urls.py index 09d7658..7c70eac 100644 --- a/studenteval/urls.py +++ b/studenteval/urls.py @@ -10,9 +10,9 @@ app_name = "studenteval" urlpatterns = [ path('show_pdf//', views.student_eval_detail.as_view(), name='student_eval_detail'), path('show_pdf_all//', views.student_eval_list.as_view(), name='student_eval_list'), + path('export_pdf_all//', views.export_pdf_all, name='export_pdf_all'), + path('export_pdf//', views.export_pdf, name='export_pdf'), #path('peremptions', views.view_peremptions, name='view_peremptions'), - - ] diff --git a/studenteval/views.py b/studenteval/views.py index 0cc6ef2..ad34c64 100644 --- a/studenteval/views.py +++ b/studenteval/views.py @@ -4,7 +4,7 @@ from django.http import HttpResponse, Http404 from django.shortcuts import render from django.views.generic import ListView, UpdateView, DetailView, FormView, CreateView from django.core.exceptions import PermissionDenied - +from studenteval.list_pdf_export import render_to_pdf from studenteval.models import cl_Student_eval from studenteval.filters import cl_Student_eval_Filter @@ -78,6 +78,47 @@ class student_eval_list(LoginRequiredMixin,ListView): object.get_all_evals_for_student() object.get_mirror_eval(object.a_evals) context['my_objects'].append(object) + context["student_id"] = object.Student.id return context + +def export_pdf_all(request,student_id): + ''' + if not "dtDate__range__gte" in request.GET.keys(): + start = datetime.today().replace(day=1,hour=0, minute=0) + else: + start = request.GET['dtDate__range__gte'] + if not "dtDate__range__lte" in request.GET.keys(): + end = datetime.now() + else: + end = request.GET['dtDate__range__lte'] + ''' + template_name = "studenteval/all_pdf_template.html" + records = cl_Student_eval.objects.filter(Student=student_id) + objects=[] + for record in records: + record.get_all_evals_for_student() + record.get_mirror_eval(record.a_evals) + objects.append(record) + return render_to_pdf(template_name,{"objects": objects, }) + +def export_pdf(request,pk): + ''' + if not "dtDate__range__gte" in request.GET.keys(): + start = datetime.today().replace(day=1,hour=0, minute=0) + else: + start = request.GET['dtDate__range__gte'] + if not "dtDate__range__lte" in request.GET.keys(): + end = datetime.now() + else: + end = request.GET['dtDate__range__lte'] + ''' + template_name = "studenteval/all_pdf_template.html" + objects = [] + record = cl_Student_eval.objects.get(pk=pk) + record.get_all_evals_for_student() + record.get_mirror_eval(record.a_evals) + objects.append(record) + + return render_to_pdf(template_name,{"objects": objects, }) \ No newline at end of file