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_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

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>
</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>
{% endblock %}
{% block cl_content %}

View File

@@ -4,7 +4,7 @@
{% block url_nav %}
<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>
{% endblock %}
{% block cl_content %}

View File

@@ -10,9 +10,9 @@ app_name = "studenteval"
urlpatterns = [
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('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'),
]

View File

@@ -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, })