Upload document
This commit is contained in:
parent
30550d3066
commit
9f0e515f4e
12 changed files with 341 additions and 90 deletions
31
cms/admin.py
31
cms/admin.py
|
|
@ -1,16 +1,21 @@
|
|||
from django.contrib import admin
|
||||
|
||||
from .models import (Enseignant, Domaine, Competence, SousCompetence, Objectif,
|
||||
Ressource, Module, Processus, Document)
|
||||
Ressource, Module, Processus, Document, UploadDoc)
|
||||
|
||||
from .forms import (ProcessusAdminForm, ProcessusInlineAdminForm, ModuleAdminForm, DomaineAdminForm, CompetenceAdminForm,
|
||||
SousCompetenceInlineAdminForm, CompetenceInlineAdminForm, ObjectifAdminForm, RessourceAdminForm,
|
||||
SousCompetenceAdminForm, DocumentAdminForm)
|
||||
SousCompetenceAdminForm, DocumentAdminForm, UploadAdminForm )
|
||||
|
||||
# Register your models here.
|
||||
|
||||
|
||||
class SousCompetenceInline(admin.TabularInline):
|
||||
form = SousCompetenceInlineAdminForm
|
||||
model = SousCompetence
|
||||
extra = 0
|
||||
|
||||
|
||||
|
||||
class CompetenceInline(admin.TabularInline):
|
||||
form = CompetenceInlineAdminForm
|
||||
model = Competence
|
||||
|
|
@ -21,8 +26,6 @@ class SousCompetenceAdmin(admin.ModelAdmin):
|
|||
form = SousCompetenceAdminForm
|
||||
|
||||
|
||||
|
||||
|
||||
class RessourceAdmin(admin.ModelAdmin):
|
||||
form = RessourceAdminForm
|
||||
list_display = ('nom', 'module')
|
||||
|
|
@ -59,16 +62,16 @@ class DomaineAdmin(admin.ModelAdmin):
|
|||
list_display = ('nom', 'responsable',)
|
||||
form = DomaineAdminForm
|
||||
inlines = [ProcessusInlineAdmin,]
|
||||
|
||||
|
||||
|
||||
class DocumentAdmin(admin.ModelAdmin):
|
||||
form = DocumentAdminForm
|
||||
|
||||
class Meta:
|
||||
js = (
|
||||
'/static/js/tiny_mce/tiny_mce.js',
|
||||
'/static/js/textarea.js',
|
||||
)
|
||||
|
||||
|
||||
class UploadAdmin(admin.ModelAdmin):
|
||||
form = UploadAdminForm
|
||||
|
||||
|
||||
admin.site.register(Enseignant)
|
||||
admin.site.register(Domaine, DomaineAdmin)
|
||||
admin.site.register(Competence, CompetenceAdmin)
|
||||
|
|
@ -77,4 +80,6 @@ admin.site.register(Objectif, ObjectifAdmin)
|
|||
admin.site.register(Ressource, RessourceAdmin)
|
||||
admin.site.register(Module, ModuleAdmin)
|
||||
admin.site.register(Processus, ProcessusAdmin)
|
||||
admin.site.register(Document, DocumentAdmin)
|
||||
admin.site.register(Document, DocumentAdmin)
|
||||
|
||||
admin.site.register(UploadDoc, UploadAdmin)
|
||||
|
|
|
|||
13
cms/forms.py
13
cms/forms.py
|
|
@ -4,7 +4,9 @@ Created on 17 nov. 2012
|
|||
|
||||
@author: alzo
|
||||
'''
|
||||
from .models import Processus, Module, Domaine, Competence, SousCompetence, Document
|
||||
from .models import (Processus, Module, Domaine, Competence, SousCompetence, Document,
|
||||
UploadDoc)
|
||||
|
||||
from django import forms
|
||||
|
||||
from django.contrib import admin
|
||||
|
|
@ -163,4 +165,11 @@ class ModuleAdminForm(forms.ModelForm):
|
|||
'didactique': forms.Textarea(attrs={'cols': 125, 'rows':2}),
|
||||
'evaluation': forms.Textarea(attrs={'cols': 125, 'rows':2}),
|
||||
}
|
||||
|
||||
|
||||
|
||||
class UploadAdminForm(forms.ModelForm):
|
||||
|
||||
class Meta:
|
||||
model = UploadDoc
|
||||
fields = ('titre', 'docfile', 'published', )
|
||||
|
||||
155
cms/migrations/0001_initial.py
Normal file
155
cms/migrations/0001_initial.py
Normal file
|
|
@ -0,0 +1,155 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# Generated by Django 1.10.4 on 2017-04-19 11:32
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
import tinymce.models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
initial = True
|
||||
|
||||
dependencies = [
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='Competence',
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('code', models.CharField(blank=True, max_length=20)),
|
||||
('nom', models.CharField(max_length=250)),
|
||||
('type', models.CharField(blank=True, default='', max_length=35)),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'compétence',
|
||||
'ordering': ('code',),
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Document',
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('docfile', models.FileField(upload_to='media/')),
|
||||
('titre', models.CharField(blank=True, max_length=128)),
|
||||
('texte', tinymce.models.HTMLField(blank=True)),
|
||||
('published', models.BooleanField(default=False)),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Domaine',
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('code', models.CharField(blank=True, max_length=20)),
|
||||
('nom', models.CharField(max_length=200)),
|
||||
],
|
||||
options={
|
||||
'ordering': ('code',),
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Enseignant',
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('sigle', models.CharField(blank=True, default='', max_length=5)),
|
||||
('nom', models.CharField(blank=True, default='', max_length=20)),
|
||||
('prenom', models.CharField(blank=True, default='', max_length=20)),
|
||||
('email', models.EmailField(blank=True, default='', max_length=254)),
|
||||
],
|
||||
options={
|
||||
'ordering': ('nom',),
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Module',
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('code', models.CharField(default='Code', max_length=10)),
|
||||
('nom', models.CharField(default='Nom du module', max_length=100)),
|
||||
('type', models.CharField(choices=[('Spécifique', 'spécifique'), ('Transversal', 'transversal')], max_length=20)),
|
||||
('situation', models.TextField()),
|
||||
('contenu', models.TextField()),
|
||||
('periode_presentiel', models.IntegerField(verbose_name='Période en présentiel')),
|
||||
('travail_perso', models.IntegerField(verbose_name='Travail personnel')),
|
||||
('pratique_prof', models.IntegerField(default=0, verbose_name='Pratique professionnelle')),
|
||||
('didactique', models.TextField()),
|
||||
('evaluation', models.TextField()),
|
||||
('sem1', models.IntegerField(default=0)),
|
||||
('sem2', models.IntegerField(default=0)),
|
||||
('sem3', models.IntegerField(default=0)),
|
||||
('sem4', models.IntegerField(default=0)),
|
||||
('sem5', models.IntegerField(default=0)),
|
||||
('sem6', models.IntegerField(default=0)),
|
||||
('semestre', models.CharField(default='', max_length=15)),
|
||||
],
|
||||
options={
|
||||
'ordering': ('code',),
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Objectif',
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('nom', models.CharField(max_length=200)),
|
||||
('module', models.ForeignKey(default=None, null=True, on_delete=django.db.models.deletion.CASCADE, to='cms.Module')),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Processus',
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('code', models.CharField(blank=True, max_length=20)),
|
||||
('nom', models.CharField(max_length=200)),
|
||||
('description', models.TextField(default='')),
|
||||
('domaine', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='cms.Domaine')),
|
||||
],
|
||||
options={
|
||||
'verbose_name_plural': 'processus',
|
||||
'ordering': ('code',),
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Ressource',
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('nom', models.CharField(max_length=200)),
|
||||
('type', models.CharField(choices=[('Savoir', 'savoir'), ('Savoir méthodologique', 'savoir méthodologique'), ('Savoir relationnel', 'savoir relationnel')], default='Savoir', max_length=30)),
|
||||
('module', models.ForeignKey(default=None, null=True, on_delete=django.db.models.deletion.CASCADE, to='cms.Module')),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='SousCompetence',
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('code', models.CharField(blank=True, max_length=20)),
|
||||
('nom', models.CharField(max_length=250)),
|
||||
('competence', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='cms.Competence')),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'sous-compétence',
|
||||
'ordering': ('code',),
|
||||
},
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='module',
|
||||
name='processus',
|
||||
field=models.ForeignKey(default=None, on_delete=django.db.models.deletion.CASCADE, to='cms.Processus'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='domaine',
|
||||
name='responsable',
|
||||
field=models.ForeignKey(default=None, null=True, on_delete=django.db.models.deletion.CASCADE, to='cms.Enseignant'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='competence',
|
||||
name='module',
|
||||
field=models.ForeignKey(default=None, null=True, on_delete=django.db.models.deletion.CASCADE, to='cms.Module'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='competence',
|
||||
name='proces_eval',
|
||||
field=models.ForeignKey(default=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='cms.Processus'),
|
||||
),
|
||||
]
|
||||
28
cms/migrations/0002_auto_20170419_1333.py
Normal file
28
cms/migrations/0002_auto_20170419_1333.py
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# Generated by Django 1.10.4 on 2017-04-19 11:33
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('cms', '0001_initial'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='Upload',
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('docfile', models.FileField(upload_to='doc/')),
|
||||
('titre', models.CharField(max_length=100)),
|
||||
('published', models.BooleanField(default=False)),
|
||||
],
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='document',
|
||||
name='docfile',
|
||||
),
|
||||
]
|
||||
19
cms/migrations/0003_auto_20170419_1409.py
Normal file
19
cms/migrations/0003_auto_20170419_1409.py
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# Generated by Django 1.10.4 on 2017-04-19 12:09
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('cms', '0002_auto_20170419_1333'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RenameModel(
|
||||
old_name='Upload',
|
||||
new_name='UploadDoc',
|
||||
),
|
||||
]
|
||||
0
cms/migrations/__init__.py
Normal file
0
cms/migrations/__init__.py
Normal file
|
|
@ -16,6 +16,7 @@ from reportlab.lib.units import cm
|
|||
from reportlab.lib.enums import TA_LEFT, TA_CENTER
|
||||
from reportlab.lib import colors
|
||||
from reportlab.lib.styles import ParagraphStyle as PS
|
||||
|
||||
style_8_c = PS(name='CORPS', fontName='Helvetica', fontSize=6, alignment = TA_CENTER)
|
||||
style_normal = PS(name='CORPS', fontName='Helvetica', fontSize=8, alignment = TA_LEFT)
|
||||
style_bold = PS(name='CORPS', fontName='Helvetica-Bold', fontSize=10, alignment = TA_LEFT)
|
||||
|
|
@ -35,13 +36,14 @@ CHOIX_TYPE_MODULE = (
|
|||
)
|
||||
|
||||
class Enseignant(models.Model):
|
||||
|
||||
class Meta:
|
||||
ordering =('nom',)
|
||||
|
||||
sigle = models.CharField(max_length= 5, blank=True, default='')
|
||||
nom = models.CharField(max_length=20, blank=True, default='')
|
||||
prenom = models.CharField(max_length=20, blank=True, default='')
|
||||
email = models.EmailField(blank=True, default='')
|
||||
|
||||
class Meta:
|
||||
ordering =('nom',)
|
||||
|
||||
def __str__(self):
|
||||
return '{0} {1}'.format(self.nom, self.prenom)
|
||||
|
|
@ -54,25 +56,25 @@ class Enseignant(models.Model):
|
|||
|
||||
|
||||
class Domaine(models.Model):
|
||||
|
||||
class Meta:
|
||||
ordering = ('code',)
|
||||
|
||||
code = models.CharField(max_length=20, blank=True)
|
||||
nom = models.CharField(max_length=200, blank=False)
|
||||
responsable = models.ForeignKey(Enseignant, null=True, default=None)
|
||||
|
||||
height_screen = 50
|
||||
|
||||
class Meta:
|
||||
ordering = ('code',)
|
||||
|
||||
#height_screen = 50
|
||||
|
||||
def __str__(self):
|
||||
return '{0} - {1}'.format(self.code, self.nom)
|
||||
|
||||
def url(self):
|
||||
return "<a href='/domaine/{0}'>{1}</a>".format(self.id, self.__str__())
|
||||
|
||||
|
||||
"""
|
||||
def svg(self):
|
||||
processus = self.processus_set.all()
|
||||
|
||||
|
||||
svg = '<rect x="20" y="{0}" rx="5" ry="5" width="250" height="{1}" fill="{2}" stroke="black" stroke-width="1" />'
|
||||
txt = '<text x="25" y="{0}" style="stroke:#000000;font-size:10;">{1}</text>'
|
||||
height_frame = processus.count()* self.height_screen
|
||||
|
|
@ -86,20 +88,20 @@ class Domaine(models.Model):
|
|||
dic_js['resp'] = self.responsable.nom
|
||||
|
||||
return '{'
|
||||
|
||||
"""
|
||||
|
||||
|
||||
class Processus(models.Model):
|
||||
|
||||
class Meta:
|
||||
ordering = ('code',)
|
||||
verbose_name_plural = 'processus'
|
||||
|
||||
code = models.CharField(max_length=20, blank=True)
|
||||
nom = models.CharField(max_length=200, blank=False)
|
||||
domaine = models.ForeignKey(Domaine, null=False)
|
||||
description = models.TextField(default='')
|
||||
|
||||
|
||||
class Meta:
|
||||
ordering = ('code',)
|
||||
verbose_name_plural = 'processus'
|
||||
|
||||
def __str__(self):
|
||||
return '{0} - {1}'.format(self.code, self.nom)
|
||||
|
||||
|
|
@ -108,7 +110,10 @@ class Processus(models.Model):
|
|||
|
||||
|
||||
class Module(models.Model):
|
||||
|
||||
|
||||
class Meta:
|
||||
ordering = ('code',)
|
||||
|
||||
code = models.CharField(max_length=10, blank=False, default='Code')
|
||||
nom = models.CharField(max_length=100, blank=False, default='Nom du module')
|
||||
type = models.CharField(max_length=20, choices= CHOIX_TYPE_MODULE)
|
||||
|
|
@ -128,12 +133,7 @@ class Module(models.Model):
|
|||
sem6 = models.IntegerField(default=0)
|
||||
semestre = models.CharField(max_length=15, default='', blank=False)
|
||||
processus = models.ForeignKey(Processus, null=False, default=None)
|
||||
|
||||
|
||||
class Meta:
|
||||
ordering = ('code',)
|
||||
|
||||
|
||||
|
||||
def __str__(self):
|
||||
return '{0} - {1}'.format(self.code, self.nom)
|
||||
|
||||
|
|
@ -145,44 +145,48 @@ class Module(models.Model):
|
|||
|
||||
|
||||
class Competence(models.Model):
|
||||
|
||||
class Meta:
|
||||
ordering = ('code',)
|
||||
verbose_name = 'compétence'
|
||||
|
||||
code = models.CharField(max_length=20, blank=True)
|
||||
nom = models.CharField(max_length=250, blank=False)
|
||||
type = models.CharField(max_length=35, blank=True, default='')
|
||||
module = models.ForeignKey(Module, null=True, default=None)
|
||||
proces_eval = models.ForeignKey(Processus, null=True, default=True)
|
||||
list_display = ('code', 'nom', 'type','proces_eval')
|
||||
|
||||
class Meta:
|
||||
ordering = ('code',)
|
||||
verbose_name = 'compétence'
|
||||
|
||||
|
||||
def __str__(self):
|
||||
return '{0} - {1}'.format(self.code, self.nom)
|
||||
|
||||
|
||||
|
||||
class SousCompetence(models.Model):
|
||||
code = models.CharField(max_length=20, blank=True)
|
||||
nom = models.CharField(max_length=250, blank=False)
|
||||
competence = models.ForeignKey(Competence, null=False)
|
||||
|
||||
|
||||
class Meta:
|
||||
ordering = ('code',)
|
||||
verbose_name = 'sous-compétence'
|
||||
|
||||
code = models.CharField(max_length=20, blank=True)
|
||||
nom = models.CharField(max_length=250, blank=False)
|
||||
competence = models.ForeignKey(Competence, null=False)
|
||||
|
||||
def __str__(self):
|
||||
return '{0} - {1}'.format(self.code, self.nom)
|
||||
|
||||
|
||||
class Ressource(models.Model):
|
||||
|
||||
nom = models.CharField(max_length=200, blank=False)
|
||||
type = models.CharField(max_length=30, choices = CHOIX_TYPE_SAVOIR, default='Savoir')
|
||||
module=models.ForeignKey(Module, null=True, default=None)
|
||||
|
||||
def __str__(self):
|
||||
return '{0}'.format(self.nom)
|
||||
|
||||
|
||||
|
||||
class Objectif(models.Model):
|
||||
|
||||
nom = models.CharField(max_length=200, blank=False)
|
||||
module=models.ForeignKey(Module, null=True, default=None)
|
||||
|
||||
|
|
@ -191,7 +195,8 @@ class Objectif(models.Model):
|
|||
|
||||
|
||||
class Document(models.Model):
|
||||
docfile = models.FileField(upload_to='media', blank=True)
|
||||
|
||||
#docfile = models.FileField(upload_to='media/')
|
||||
titre = models.CharField(max_length=128, blank=True)
|
||||
texte = tinymce_models.HTMLField(blank=True,)
|
||||
published = models.BooleanField(default=False)
|
||||
|
|
@ -200,9 +205,17 @@ class Document(models.Model):
|
|||
return self.titre
|
||||
|
||||
|
||||
class UploadDoc(models.Model):
|
||||
|
||||
docfile = models.FileField(upload_to='doc/')
|
||||
titre = models.CharField(max_length=100, blank=False)
|
||||
published = models.BooleanField(default=False)
|
||||
|
||||
def __str__(self):
|
||||
return self.titre
|
||||
|
||||
|
||||
|
||||
|
||||
class PDFResponse(HttpResponse):
|
||||
|
||||
def __init__(self, filename, title='', portrait=True):
|
||||
|
|
@ -210,7 +223,7 @@ class PDFResponse(HttpResponse):
|
|||
self['Content-Disposition'] = 'attachment; filename={0}'.format(filename)
|
||||
self['Content-Type'] = 'charset=utf-8'
|
||||
self.story = []
|
||||
image = Image(settings.MEDIA_ROOT + '/media/header.png', width=480, height=80)
|
||||
image = Image(settings.MEDIA_ROOT + '/media/header.png', width=520, height=75)
|
||||
image.hAlign = TA_LEFT
|
||||
|
||||
self.story.append(image)
|
||||
|
|
@ -230,7 +243,6 @@ class PDFResponse(HttpResponse):
|
|||
self.story.append(t)
|
||||
|
||||
|
||||
|
||||
class MyDocTemplate(SimpleDocTemplate):
|
||||
|
||||
def __init__(self, name):
|
||||
|
|
@ -241,7 +253,6 @@ class MyDocTemplate(SimpleDocTemplate):
|
|||
self.CENTRE_WIDTH = self.PAGE_WIDTH/2.0
|
||||
self.CENTRE_HEIGHT = self.PAGE_HEIGHT/2.0
|
||||
|
||||
|
||||
def beforePage(self):
|
||||
# page number
|
||||
self.canv.saveState()
|
||||
|
|
@ -250,7 +261,6 @@ class MyDocTemplate(SimpleDocTemplate):
|
|||
self.canv.restoreState()
|
||||
|
||||
|
||||
|
||||
class MyDocTemplateLandscape(SimpleDocTemplate):
|
||||
|
||||
def __init__(self, name):
|
||||
|
|
@ -269,5 +279,4 @@ class MyDocTemplateLandscape(SimpleDocTemplate):
|
|||
self.canv.restoreState()
|
||||
|
||||
|
||||
|
||||
|
||||
50
cms/views.py
50
cms/views.py
|
|
@ -1,4 +1,3 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
'''
|
||||
Created on 4 déc. 2012
|
||||
|
||||
|
|
@ -7,7 +6,8 @@ Created on 4 déc. 2012
|
|||
import os
|
||||
from django.shortcuts import render, render_to_response
|
||||
from django.views.generic import ListView, TemplateView, DetailView
|
||||
from .models import Domaine, Processus, Module, Competence, Document, PDFResponse, MyDocTemplate, MyDocTemplateLandscape
|
||||
from .models import (Domaine, Processus, Module, Competence, Document, UploadDoc,
|
||||
PDFResponse, MyDocTemplate, MyDocTemplateLandscape)
|
||||
from .models import style_normal, style_bold, style_title
|
||||
from django.db.models import F, Sum
|
||||
from django.conf import settings
|
||||
|
|
@ -170,39 +170,37 @@ class EvaluationView(ListView):
|
|||
|
||||
class DocumentListView(ListView):
|
||||
template_name = 'cms/document_list.html'
|
||||
model = Document
|
||||
|
||||
model = Document
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
context = super(DocumentListView, self).get_context_data(**kwargs)
|
||||
context['upload'] = UploadDoc.objects.filter(published=True)
|
||||
return context
|
||||
|
||||
|
||||
class DocumentDetailView(DetailView):
|
||||
template_name ='cms/document_detail.html'
|
||||
model = Document
|
||||
|
||||
|
||||
def pdf_view(request):
|
||||
with open('/path/to/my/file.pdf', 'r') as pdf:
|
||||
response = HttpResponse(pdf.read(), mimetype='application/pdf')
|
||||
response['Content-Disposition'] = 'inline;filename=some_file.pdf'
|
||||
return response
|
||||
pdf.closed
|
||||
class UploadDetailView(DetailView):
|
||||
template_name = 'cms/upload_detail.html'
|
||||
model = UploadDoc
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
context = super(UploadDetailView, self).get_context_data(**kwargs)
|
||||
context['fichier'] = self.get_object().docfile.url
|
||||
return context
|
||||
|
||||
|
||||
class ModulePDF(DetailView):
|
||||
|
||||
template_name = 'cms/module_detail.html'
|
||||
model = Module
|
||||
|
||||
def get_object(self):
|
||||
# Call the superclass
|
||||
return super(ModulePDF, self).get_object()
|
||||
|
||||
|
||||
|
||||
def render_to_response(self, context, **response_kwargs):
|
||||
#return DetailView.render_to_response(self, context, **response_kwargs)
|
||||
def render_to_response(self, context, **response_kwargs):
|
||||
m = self.get_object()
|
||||
response = PDFResponse('Module_{0}.pdf'.format(m.code) ,'Module de formation')
|
||||
|
||||
|
||||
str_comp = ''
|
||||
for c in m.competence_set.all():
|
||||
str_comp += '- {0} ({1})\n'.format(c.nom, c.code)
|
||||
|
|
@ -249,16 +247,16 @@ class ModulePDF(DetailView):
|
|||
response.story.append(Spacer(0,1*cm))
|
||||
response.story.append(t)
|
||||
|
||||
|
||||
doc = MyDocTemplate(response)
|
||||
doc.build(response.story)
|
||||
|
||||
return response
|
||||
|
||||
"""
|
||||
Calcul du nombre de périodes de formation
|
||||
"""
|
||||
|
||||
def get_context(context):
|
||||
"""
|
||||
Calcul du nombre de périodes de formation
|
||||
"""
|
||||
liste = Module.objects.exclude(periode_presentiel = 0)
|
||||
#context['tot'] = liste.aggregate(Sum(F('periode_presentiel')))
|
||||
|
||||
|
|
@ -355,7 +353,7 @@ class PeriodePDFView(TemplateView):
|
|||
|
||||
return response
|
||||
|
||||
|
||||
"""
|
||||
class AddDocument(TemplateView):
|
||||
template_name = 'cms/upload.html'
|
||||
|
||||
|
|
@ -402,5 +400,5 @@ def pdf_view(request):
|
|||
response['Content-Disposition'] = 'inline;filename=some_file.pdf'
|
||||
return response
|
||||
pdf.closed
|
||||
|
||||
"""
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue