118 lines
No EOL
3.3 KiB
Python
118 lines
No EOL
3.3 KiB
Python
# -*- coding: utf-8 -*-
|
|
'''
|
|
Created on 4 déc. 2012
|
|
|
|
@author: alzo
|
|
'''
|
|
import os
|
|
from django.shortcuts import render
|
|
from django.views.generic import ListView, TemplateView, DetailView
|
|
from .models import Domaine, Processus, Module, Document, Document
|
|
from django.db.models import F, Sum
|
|
from django.conf import settings
|
|
|
|
from django.http import HttpResponseRedirect
|
|
from django.http import HttpResponse
|
|
from .forms import DocumentForm
|
|
|
|
# Create your views here.
|
|
|
|
class HomeView(TemplateView):
|
|
template_name = 'cms/index.html'
|
|
|
|
|
|
def get_context_data(self, **kwargs):
|
|
context = super(HomeView, self).get_context_data(**kwargs)
|
|
for d in Domaine.objects.all().order_by('code'):
|
|
context[d.code] = d
|
|
|
|
for c in Processus.objects.all().order_by('code'):
|
|
context[c.code] = c
|
|
|
|
for m in Module.objects.all().order_by('code'):
|
|
context[m.code] = m
|
|
|
|
return context
|
|
|
|
|
|
|
|
class DomaineDetailView(DetailView):
|
|
template_name = 'cms/domaine_detail.html'
|
|
model = Domaine
|
|
|
|
|
|
class DomaineListView(ListView):
|
|
template_name = 'cms/domaine_list.html'
|
|
model = Domaine
|
|
|
|
|
|
class ProcessusDetailView(DetailView):
|
|
template_name = 'cms/processus_detail.html'
|
|
model = Processus
|
|
|
|
|
|
class ProcessusListView(ListView):
|
|
template_name = 'cms/processus_list.html'
|
|
model = Processus
|
|
|
|
|
|
class ModuleDetailView(DetailView):
|
|
template_name = 'cms/module_detail.html'
|
|
model = Module
|
|
|
|
|
|
class ModuleListView(ListView):
|
|
template_name = 'cms/module_list.html'
|
|
model = Module
|
|
|
|
|
|
|
|
|
|
class PeriodeView(TemplateView):
|
|
template_name = 'cms/periodes.html'
|
|
|
|
def get_context_data(self, **kwargs):
|
|
context = TemplateView.get_context_data(self, **kwargs)
|
|
liste = Module.objects.exclude(periode_presentiel = 0)
|
|
context['tot'] = liste.aggregate(Sum(F('periode_presentiel')))
|
|
context['sem1'] = liste.exclude(sem1 = 0)
|
|
context['tot1'] = liste.aggregate(Sum(F('sem1')))
|
|
context['sem2'] = liste.exclude(sem2 = 0)
|
|
context['tot2'] = liste.aggregate(Sum(F('sem2')))
|
|
context['sem3'] = liste.exclude(sem3 = 0)
|
|
context['tot3'] = liste.aggregate(Sum(F('sem3')))
|
|
context['sem4'] = liste.exclude(sem4 = 0)
|
|
context['tot4'] = liste.aggregate(Sum(F('sem4')))
|
|
context['sem5'] = liste.exclude(sem5 = 0)
|
|
context['tot5'] = liste.aggregate(Sum(F('sem5')))
|
|
context['sem6'] = liste.exclude(sem6 = 0)
|
|
context['tot6'] = liste.aggregate(Sum(F('sem6')))
|
|
|
|
return context
|
|
|
|
|
|
|
|
|
|
def AddDoc(request):
|
|
if request.method == 'POST':
|
|
form = DocumentForm(request.POST, request.FILES)
|
|
if form.is_valid():
|
|
newdoc = Document(docfile = request.FILES['docfile'])
|
|
newdoc.save()
|
|
return HttpResponseRedirect('')
|
|
else:
|
|
form = DocumentForm()
|
|
|
|
documents = Document.objects.all()
|
|
return render (request, 'cms/upload.html', {'documents': documents,'form': form})
|
|
|
|
|
|
def Download(request, file_name):
|
|
f = os.path.join(settings.MEDIA_ROOT, file_name)
|
|
response = HttpResponse(content_type='application/pdf')
|
|
response['Content-Disposition'] = 'attachment; filename={0}'.format(file_name)
|
|
response['Content-Length'] = os.stat(f).st_size
|
|
return response
|
|
|
|
|
|
|