Ajout impression

This commit is contained in:
Ambulance Clerc
2023-09-12 15:19:17 +02:00
parent 1d72a244ea
commit 47fbbd207d
6 changed files with 75 additions and 7 deletions

View File

@@ -1,4 +1,5 @@
from django.contrib import admin from django.contrib import admin
from django_summernote.admin import SummernoteModelAdmin
from studenteval.models import cl_Student_eval from studenteval.models import cl_Student_eval
from django.db.models import Q from django.db.models import Q
from django.urls import reverse from django.urls import reverse
@@ -8,10 +9,18 @@ from django.contrib.auth.models import User
from rangefilter.filters import * from rangefilter.filters import *
from django.core.exceptions import PermissionDenied from django.core.exceptions import PermissionDenied
from rangefilter.filters import (
DateRangeFilterBuilder,
DateTimeRangeFilterBuilder,
NumericRangeFilterBuilder,
DateRangeQuickSelectListFilterBuilder,
)
def is_member(user, group): def is_member(user, group):
return user.groups.filter(name=group).exists() 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 request = None
always_show_username = True always_show_username = True
@@ -43,7 +52,10 @@ class _cl_Student_eval_admin(admin.ModelAdmin):
search_fields = ['sStudent', 'sRef'] 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): def get_form(self, request, obj=None, **kwargs):
user_obj = request.user user_obj = request.user

View File

@@ -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 <pre>' + html + '</pre>')
return response

View File

@@ -5,7 +5,7 @@
<a href="{% url 'studenteval:student_eval_list' object.Student.id %}?dtDate__range__gte={{ dtDate__range__gte }}&dtDate__range__lte={{ dtDate__range__lte }}" class="nav-link" target="_blank">Voir toutes les évaluations</a> <a href="{% url 'studenteval:student_eval_list' object.Student.id %}?dtDate__range__gte={{ dtDate__range__gte }}&dtDate__range__lte={{ dtDate__range__lte }}" class="nav-link" target="_blank">Voir toutes les évaluations</a>
</li> </li>
<li> <li>
<a href="{% url 'studenteval:Export_pdf' object.uuid %}?dtDate__range__gte={{ dtDate__range__gte }}&dtDate__range__lte={{ dtDate__range__lte }}" class="nav-link" target="_blank">Imprimer liste PDF</a> <a href="{% url 'studenteval:export_pdf' object.uuid %}?dtDate__range__gte={{ dtDate__range__gte }}&dtDate__range__lte={{ dtDate__range__lte }}" class="nav-link" target="_blank">Imprimer liste PDF</a>
</li> </li>
{% endblock %} {% endblock %}
{% block cl_content %} {% block cl_content %}

View File

@@ -4,7 +4,7 @@
{% block url_nav %} {% block url_nav %}
<li> <li>
<a href="{% url 'studenteval:Export_pdf_all' student_id %}?dtDate__range__gte={{ dtDate__range__gte }}&dtDate__range__lte={{ dtDate__range__lte }}" class="nav-link" target="_blank">Imprimer liste PDF</a> <a href="{% url 'studenteval:export_pdf_all' student_id %}?dtDate__range__gte={{ dtDate__range__gte }}&dtDate__range__lte={{ dtDate__range__lte }}" class="nav-link" target="_blank">Imprimer liste PDF</a>
</li> </li>
{% endblock %} {% endblock %}
{% block cl_content %} {% block cl_content %}

View File

@@ -10,9 +10,9 @@ app_name = "studenteval"
urlpatterns = [ urlpatterns = [
path('show_pdf/<uuid:pk>/', views.student_eval_detail.as_view(), name='student_eval_detail'), path('show_pdf/<uuid:pk>/', views.student_eval_detail.as_view(), name='student_eval_detail'),
path('show_pdf_all/<int:Student>/', views.student_eval_list.as_view(), name='student_eval_list'), path('show_pdf_all/<int:Student>/', views.student_eval_list.as_view(), name='student_eval_list'),
path('export_pdf_all/<int:student_id>/', views.export_pdf_all, name='export_pdf_all'),
path('export_pdf/<uuid:pk>/', views.export_pdf, name='export_pdf'),
#path('peremptions', views.view_peremptions, name='view_peremptions'), #path('peremptions', views.view_peremptions, name='view_peremptions'),
] ]

View File

@@ -4,7 +4,7 @@ from django.http import HttpResponse, Http404
from django.shortcuts import render from django.shortcuts import render
from django.views.generic import ListView, UpdateView, DetailView, FormView, CreateView from django.views.generic import ListView, UpdateView, DetailView, FormView, CreateView
from django.core.exceptions import PermissionDenied from django.core.exceptions import PermissionDenied
from studenteval.list_pdf_export import render_to_pdf
from studenteval.models import cl_Student_eval from studenteval.models import cl_Student_eval
from studenteval.filters import cl_Student_eval_Filter 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_all_evals_for_student()
object.get_mirror_eval(object.a_evals) object.get_mirror_eval(object.a_evals)
context['my_objects'].append(object) context['my_objects'].append(object)
context["student_id"] = object.Student.id
return context 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, })