PDF_periodes

This commit is contained in:
alazo 2017-08-13 22:58:46 +02:00
parent 7b04443965
commit d9d4fd7879
31 changed files with 1175 additions and 999 deletions

View file

@ -3,12 +3,11 @@ from django.contrib import admin
from .models import (Enseignant, Domaine, Competence, SousCompetence, Objectif,
Ressource, Module, Processus, Document, UploadDoc)
from .forms import (ProcessusAdminForm, ProcessusInlineAdminForm, ModuleAdminForm, DomaineAdminForm, CompetenceAdminForm,
SousCompetenceInlineAdminForm, CompetenceInlineAdminForm, ObjectifAdminForm, RessourceAdminForm,
from .forms import (ProcessusAdminForm, ProcessusInlineAdminForm, ModuleAdminForm,
DomaineAdminForm, CompetenceAdminForm, SousCompetenceInlineAdminForm,
CompetenceInlineAdminForm, ObjectifAdminForm, RessourceAdminForm,
SousCompetenceAdminForm, DocumentAdminForm, UploadAdminForm)
# Register your models here.
class SousCompetenceInline(admin.TabularInline):
form = SousCompetenceInlineAdminForm
@ -20,7 +19,7 @@ class CompetenceInline(admin.TabularInline):
form = CompetenceInlineAdminForm
model = Competence
extra = 0
#template ='templates/admin/cms/processus/edit_inline/tabular.html'
class SousCompetenceAdmin(admin.ModelAdmin):
form = SousCompetenceAdminForm
@ -33,10 +32,10 @@ class RessourceAdmin(admin.ModelAdmin):
class ModuleAdmin(admin.ModelAdmin):
form = ModuleAdminForm
inlines = [CompetenceInline,]
inlines = [CompetenceInline]
extra = 0
fields = (('code', 'nom'),
('situation'),
'situation',
('contenu', 'contenu_published'),
('didactique', 'didactique_published'),
('evaluation', 'evaluation_published'),
@ -45,7 +44,7 @@ class ModuleAdmin(admin.ModelAdmin):
('sem1', 'sem2'),
('sem3', 'sem4'),
('sem5', 'sem6'),
('processus'),
'processus',
)
@ -73,7 +72,7 @@ class CompetenceAdmin(admin.ModelAdmin):
class DomaineAdmin(admin.ModelAdmin):
list_display = ('nom', 'responsable',)
form = DomaineAdminForm
inlines = [ProcessusInlineAdmin,]
inlines = [ProcessusInlineAdmin]
class DocumentAdmin(admin.ModelAdmin):

View file

@ -1,20 +1,14 @@
# -*- encoding: utf-8 -*-
'''
"""
Created on 17 nov. 2012
@author: alzo
'''
from .models import (Processus, Module, Domaine, Competence, SousCompetence, Document,
UploadDoc)
"""
from django import forms
#from django.forms import Textarea, TextInput
from .models import (Processus, Module, Domaine, Competence, SousCompetence, Document, UploadDoc)
from tinymce.widgets import TinyMCE
class DocumentAdminForm(forms.ModelForm):
class Meta:
@ -28,10 +22,6 @@ class DocumentAdminForm(forms.ModelForm):
class ProcessusAdminForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super(ProcessusAdminForm, self).__init__(*args, **kwargs)
#self.fields['nom'].widget.attrs['size']='50'
class Meta:
model = Processus
fields = ('code', 'nom', 'domaine', 'description')
@ -40,10 +30,11 @@ class ProcessusAdminForm(forms.ModelForm):
'description': forms.Textarea(attrs={'cols': 125, 'rows': 8}),
}
class DomaineAdminForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super(DomaineAdminForm, self).__init__(*args, **kwargs)
super(ProcessusAdminForm, self).__init__(*args, **kwargs)
class DomaineAdminForm(forms.ModelForm):
class Meta:
model = Domaine
@ -52,109 +43,110 @@ class DomaineAdminForm(forms.ModelForm):
'nom': forms.Textarea(attrs={'cols': 125, 'rows': 2}),
}
def __init__(self, *args, **kwargs):
super(DomaineAdminForm, self).__init__(*args, **kwargs)
class CompetenceAdminForm(forms.ModelForm):
class Meta:
model = Competence
fields = '__all__'
widgets = {
'nom': forms.Textarea(attrs={'cols': 125, 'rows': 2}),
}
def __init__(self, *args, **kwargs):
super(CompetenceAdminForm, self).__init__(*args, **kwargs)
class SousCompetenceAdminForm(forms.ModelForm):
class Meta:
model = Competence
fields = ('__all__')
model = SousCompetence
fields = '__all__'
widgets = {
'nom': forms.Textarea(attrs={'cols': 125, 'rows': 2}),
}
class SousCompetenceAdminForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super(SousCompetenceAdminForm, self).__init__(*args, **kwargs)
class Meta:
model = SousCompetence
fields = ('__all__')
widgets = {
'nom': forms.Textarea(attrs={'cols': 125, 'rows':2}),
}
class CompetenceInlineAdminForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super(CompetenceInlineAdminForm, self).__init__(*args, **kwargs)
class Meta:
model = SousCompetence
fields = ('__all__')
fields = '__all__'
widgets = {
'code': forms.Textarea(attrs={'cols': 5, 'rows': 1}),
'nom': forms.Textarea(attrs={'cols': 125, 'rows': 2}),
}
def __init__(self, *args, **kwargs):
super(CompetenceInlineAdminForm, self).__init__(*args, **kwargs)
class SousCompetenceInlineAdminForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super(SousCompetenceInlineAdminForm, self).__init__(*args, **kwargs)
class Meta:
model = SousCompetence
fields = ('__all__')
fields = '__all__'
widgets = {
'code': forms.Textarea(attrs={'cols': 5, 'rows': 1}),
'nom': forms.Textarea(attrs={'cols': 125, 'rows': 1}),
}
def __init__(self, *args, **kwargs):
super(SousCompetenceInlineAdminForm, self).__init__(*args, **kwargs)
class ProcessusInlineAdminForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super(ProcessusInlineAdminForm, self).__init__(*args, **kwargs)
class Meta:
model = SousCompetence
fields = ('__all__')
fields = '__all__'
widgets = {
'code': forms.Textarea(attrs={'cols': 5, 'rows': 1}),
'nom': forms.Textarea(attrs={'cols': 75, 'rows': 4}),
'description': forms.Textarea(attrs={'cols': 95, 'rows': 6}),
}
class ObjectifAdminForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super(ObjectifAdminForm, self).__init__(*args, **kwargs)
super(ProcessusInlineAdminForm, self).__init__(*args, **kwargs)
class ObjectifAdminForm(forms.ModelForm):
class Meta:
model = SousCompetence
fields = ('__all__')
fields = '__all__'
widgets = {
'nom': forms.Textarea(attrs={'cols': 125, 'rows': 2}),
}
def __init__(self, *args, **kwargs):
super(ObjectifAdminForm, self).__init__(*args, **kwargs)
class RessourceAdminForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super(RessourceAdminForm, self).__init__(*args, **kwargs)
class Meta:
model = SousCompetence
fields = ('__all__')
fields = '__all__'
widgets = {
'nom': forms.Textarea(attrs={'cols': 125, 'rows': 3}),
}
def __init__(self, *args, **kwargs):
super(RessourceAdminForm, self).__init__(*args, **kwargs)
class ModuleAdminForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super(ModuleAdminForm, self).__init__(*args, **kwargs)
#self.fields['nom'].widget.attrs['size']='50'
class Meta:
model = Module
fields = ('__all__')
fields = '__all__'
widgets = {
'nom': forms.Textarea(attrs={'cols': 125, 'rows': 2}),
'description': forms.Textarea(attrs={'cols': 125, 'rows': 4}),
@ -164,10 +156,12 @@ class ModuleAdminForm(forms.ModelForm):
'evaluation': forms.Textarea(attrs={'cols': 125, 'rows': 2}),
}
def __init__(self, *args, **kwargs):
super(ModuleAdminForm, self).__init__(*args, **kwargs)
class UploadAdminForm(forms.ModelForm):
class Meta:
model = UploadDoc
fields = ('titre', 'docfile', 'published', )

View file

@ -21,6 +21,7 @@ class Migration(migrations.Migration):
('published', models.BooleanField(default=False)),
],
),
migrations.RemoveField(
model_name='document',
name='docfile',

View file

@ -1,28 +1,29 @@
# -*- encoding: utf-8 -*-
'''
"""
Created on 17 nov. 2012
@author: alzo
'''
"""
from django.db import models
from django.http.response import HttpResponse
from django.conf import settings
from tinymce import models as tinymce_models
from reportlab.platypus import SimpleDocTemplate
from reportlab.platypus import Paragraph, Spacer, PageBreak, Table, TableStyle, Image
from reportlab.graphics.shapes import Line
from reportlab.platypus import Table, TableStyle, Image
from reportlab.lib.pagesizes import A4, landscape
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)
style_title = PS(name='CORPS', fontName='Helvetica', fontSize=12, alignment=TA_LEFT)
style_adress = PS(name='CORPS', fontName='Helvetica', fontSize=10, alignment=TA_LEFT, leftIndent=300)
# Create your models here.
CHOIX_TYPE_SAVOIR = (
('Savoir', 'savoir'),
@ -30,21 +31,22 @@ CHOIX_TYPE_SAVOIR = (
('Savoir relationnel', 'savoir relationnel'),
)
CHOIX_TYPE_MODULE = (
('Spécifique', 'spécifique'),
('Transversal', 'transversal'),
)
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)
@ -56,15 +58,12 @@ 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', )
def __str__(self):
return '{0} - {1}'.format(self.code, self.nom)
@ -72,36 +71,17 @@ class Domaine(models.Model):
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
color = settings.DOMAINE_COULEURS[self.code]
return svg.format(20, height_frame , color) + txt.format(50, self.__str__())
def json(self):
dic_js = {}
dic_js['{code'] = self.code
dic_js['nom'] = self.nom
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)
@ -110,10 +90,6 @@ 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)
@ -124,7 +100,6 @@ class Module(models.Model):
travail_perso = models.IntegerField(verbose_name='Travail personnel')
pratique_prof = models.IntegerField(default=0, verbose_name='Pratique prof.')
didactique = models.TextField()
evaluation = models.TextField()
sem1 = models.IntegerField(default=0)
sem2 = models.IntegerField(default=0)
@ -139,6 +114,9 @@ class Module(models.Model):
evaluation_published = models.BooleanField(default=False)
contenu_published = models.BooleanField(default=False)
class Meta:
ordering = ('code',)
def __str__(self):
return '{0} - {1}'.format(self.code, self.nom)
@ -150,11 +128,6 @@ 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='')
@ -162,26 +135,28 @@ class Competence(models.Model):
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)
@ -191,7 +166,6 @@ class Ressource(models.Model):
class Objectif(models.Model):
nom = models.CharField(max_length=200, blank=False)
module = models.ForeignKey(Module, null=True, default=None)
@ -200,8 +174,6 @@ class Objectif(models.Model):
class Document(models.Model):
#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)
@ -211,22 +183,15 @@ class Document(models.Model):
class UploadDoc(models.Model):
class Meta:
verbose_name= 'UploadDoc'
docfile = models.FileField(upload_to='doc/')
titre = models.CharField(max_length=100, blank=False)
published = models.BooleanField(default=False)
class Meta:
verbose_name = 'UploadDoc'
def __str__(self):
return self.titre
"""
class OffreEmploi(models.Model):
source = models.CharField(max_lenght=200, blank=False)
descr = model.HTMLField(blank=False)
published = models.BooleanField(default=False)
"""
class PDFResponse(HttpResponse):
@ -238,16 +203,14 @@ class PDFResponse(HttpResponse):
self.story = []
image = Image(settings.MEDIA_ROOT + '/media/header.png', width=520, height=75)
image.hAlign = TA_LEFT
self.story.append(image)
#self.story.append(Spacer(0,1*cm))
data = [['Filières EDS', title]]
data = list(['Filières EDS', title])
if portrait:
t = Table(data, colWidths=[8*cm, 8*cm])
else:
t = Table(data, colWidths=[11*cm, 11*cm])
t.setStyle(TableStyle([ ('ALIGN',(0,0),(0,0),'LEFT'),
t.setStyle(TableStyle([
('ALIGN', (0, 0), (0, 0), 'LEFT'),
('ALIGN', (1, 0), (-1, -1), 'RIGHT'),
('LINEABOVE', (0, 0), (-1, -1), 0.5, colors.black),
('LINEBELOW', (0, -1), (-1, -1), 0.5, colors.black),
@ -290,6 +253,3 @@ class MyDocTemplateLandscape(SimpleDocTemplate):
self.canv.setFontSize(8)
self.canv.drawCentredString(self.CENTRE_WIDTH, 1*cm, "Page : " + str(self.canv.getPageNumber()))
self.canv.restoreState()

129
cms/pdf.py Normal file
View file

@ -0,0 +1,129 @@
from django.http.response import HttpResponse
from django.conf import settings
from reportlab.pdfgen import canvas
from reportlab.platypus import SimpleDocTemplate, Frame
from reportlab.platypus import Table, TableStyle, Image
from reportlab.lib.pagesizes import A4, landscape
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)
style_title = PS(name='CORPS', fontName='Helvetica', fontSize=12, alignment=TA_LEFT)
style_adress = PS(name='CORPS', fontName='Helvetica', fontSize=10, alignment=TA_LEFT, leftIndent=300)
class PDFResponse(HttpResponse):
def __init__(self, filename, title='', portrait=True):
HttpResponse.__init__(self, content_type='application/pdf')
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=400, height=80)
image.hAlign = TA_LEFT
self.story.append(image)
data = [['Filières EDS', title]]
if portrait:
t = Table(data, colWidths=[8*cm, 8*cm])
else:
t = Table(data, colWidths=[11*cm, 11*cm])
t.setStyle(TableStyle([
('ALIGN', (0, 0), (0, 0), 'LEFT'),
('ALIGN', (1, 0), (-1, -1), 'RIGHT'),
('LINEABOVE', (0, 0), (-1, -1), 0.5, colors.black),
('LINEBELOW', (0, -1), (-1, -1), 0.5, colors.black),
]))
t.hAlign = TA_LEFT
self.story.append(t)
class MyDocTemplate(SimpleDocTemplate):
def __init__(self, name):
SimpleDocTemplate.__init__(self, name, pagesize=A4, topMargin=0.5*cm, leftMargin=1*cm)
self.fileName = name
self.PAGE_WIDTH = A4[0]
self.PAGE_HEIGHT = A4[1]
self.CENTRE_WIDTH = self.PAGE_WIDTH/2.0
self.CENTRE_HEIGHT = self.PAGE_HEIGHT/2.0
def beforePage(self):
# page number
self.canv.saveState()
self.canv.setFontSize(8)
self.canv.drawCentredString(self.CENTRE_WIDTH, 1*cm, "Page : " + str(self.canv.getPageNumber()))
self.canv.restoreState()
class MyDocTemplateLandscape(SimpleDocTemplate):
def __init__(self, name):
SimpleDocTemplate.__init__(self, name, pagesize=landscape(A4), topMargin=0*cm, leftMargin=2*cm)
self.fileName = name
self.PAGE_WIDTH = A4[1]
self.PAGE_HEIGHT = A4[0]
self.CENTRE_WIDTH = self.PAGE_WIDTH/2.0
self.CENTRE_HEIGHT = self.PAGE_HEIGHT/2.0
def beforePage(self):
# page number
self.canv.saveState()
self.canv.setFontSize(8)
self.canv.drawCentredString(self.CENTRE_WIDTH, 1*cm, "Page : " + str(self.canv.getPageNumber()))
self.canv.restoreState()
class PeriodPDF(object):
"""Imprime les heures de cours par semestre"""
def __init__(self, filename):
self.canv = canvas.Canvas(filename, pagesize=A4)
self.canv.setPageCompression(0)
self.canv.setFont('Helvetica', 9)
header_frame = Frame(1.2*cm, 24*cm, 18*cm, 5*cm, showBoundary=0)
story = []
image = Image(settings.MEDIA_ROOT + 'logo.png', width=520, height=90)
story.append(image)
data = [['Filières EDS', 'Périodes de formation']]
t = Table(data, colWidths=[8.5*cm, 8.5*cm], spaceBefore=0, spaceAfter=0, hAlign=TA_LEFT)
t.setStyle(TableStyle([
('ALIGN', (0, 0), (0, 0), 'LEFT'),
('ALIGN', (1, 0), (-1, -1), 'RIGHT'),
('LINEABOVE', (0, 0), (-1, -1), 0.5, colors.black),
('LINEBELOW', (0, -1), (-1, -1), 0.5, colors.black),
]))
story.append(t)
header_frame.addFromList(story, self.canv)
def produce_half_year(self, half_year_id, modules, total):
initial_pos_x = [2, 11]
initial_pos_y = [17, 17, 10, 10, 3, 3]
width = 7*cm
height = 6.5*cm
x = initial_pos_x[(half_year_id-1) % 2]*cm
y = initial_pos_y[half_year_id-1]*cm
my_frame = Frame(x, y, width, height, showBoundary=0)
data = [['Semestre {0}'.format(half_year_id), '{0} h.'.format(total)]]
for line in modules:
value = getattr(line, 'sem{0}'.format(half_year_id))
data.append([line.nom, '{0} h.'.format(value)])
t = Table(data, colWidths=[7*cm, 1*cm], spaceBefore=0, spaceAfter=0, hAlign=TA_LEFT)
t.setStyle(TableStyle([('ALIGN', (0, 0), (0, 0), 'LEFT'),
('ALIGN', (1, 0), (-1, -1), 'RIGHT'),
('LINEBELOW', (0, 0), (1, 0), 1, colors.black),
('FONT', (0, 0), (-1, 0), 'Helvetica-Bold'), ]))
story = [t]
my_frame.addFromList(story, self.canv)
def print_total(self, total):
self.canv.drawString(2*cm, 2*cm, 'Total de la formation: {0} heures'.format(total))

View file

@ -1,24 +1,24 @@
'''
"""
Created on 4 déc. 2012
@author: alzo
'''
"""
from django.views.generic import ListView, TemplateView, DetailView
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.http import HttpResponse
from reportlab.platypus import Paragraph, Spacer, PageBreak, Table, TableStyle, Preformatted
from reportlab.platypus import Paragraph, Spacer, Table, TableStyle, Preformatted
from reportlab.lib.units import cm
from reportlab.lib.enums import TA_LEFT
from reportlab.lib import colors
from reportlab.lib.colors import HexColor
from cms.pdf import PeriodPDF
from .models import style_normal, style_title
from .models import (Domaine, Processus, Module, Competence, Document, UploadDoc,
PDFResponse, MyDocTemplate, MyDocTemplateLandscape)
# Create your views here.
class HomeView(TemplateView):
template_name = 'cms/index.html'
@ -26,30 +26,28 @@ class HomeView(TemplateView):
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 Element(object):
def __init__(self, el, top_left, bottom_right):
def __init__(self, el):
self.txt = el.__str__()
class HomePDFView(TemplateView):
template_name = 'cms/index.html'
def formating(self, el1=None, length=40 ):
el1 = '' if el1 is None else el1.__str__()
def formating(self, el1='', length=40):
el1 = '' if el1 == '' else el1.__str__()
return Preformatted(el1, style_normal, maxLineLength=length)
def pf40(self, txt):
return Preformatted(txt, style_normal, maxLineLength=40)
# def pf40(self, txt):
# return Preformatted(txt, style_normal, maxLineLength=40)
def render_to_response(self, context, **response_kwargs):
@ -57,16 +55,17 @@ class HomePDFView(TemplateView):
d = Domaine.objects.all().order_by('code')
p = Processus.objects.all().order_by('code')
data = [['Domaines','Processus', 'Sem1', 'Sem2', 'Sem3','Sem4','Sem5','Sem6'],
data = [
['Domaines', 'Processus', 'Sem1', 'Sem2', 'Sem3', 'Sem4', 'Sem5', 'Sem6'],
[self.formating(d[0]), self.formating(p[0], 60), 'M01', '', '', '', '', ''],
[self.formating(None), self.formating(None, 60) , 'M02' , '' ,'' , '' , '' ,'' ],
[self.formating(None), self.formating(p[1], 60) , '' , '' ,'' , 'M03' , '' , '' ],
[self.formating(None), self.formating(None, 60) , '' , 'M04' ,'' , '' , '' , '' ],
[self.formating(''), self.formating('', 60), 'M02', '', '', '', '', ''],
[self.formating(''), self.formating(p[1], 60), '', '', '', 'M03', '', ''],
[self.formating(''), self.formating('', 60), '', 'M04', '', '', '', ''],
[self.formating(d[1]), self.formating(p[2], 60), 'M05', '', 'M06', '', '', ''],
[self.formating(None), self.formating(p[3], 60) , '' , '' ,'' , '' , 'M07' , 'M09' ],
[self.formating(None), self.formating(None, 60) , '' , '' ,'' ,'' , 'M08' , '' ],
[self.formating(''), self.formating(p[3], 60), '', '', '', '', 'M07', 'M09'],
[self.formating(''), self.formating('', 60), '', '', '', '', 'M08', ''],
[self.formating(d[2]), self.formating(p[4], 60), '', '', 'M10', '', 'M12'],
[self.formating(None), self.formating(p[5], 60) , '' , '' , 'M11' '' , '' ],
[self.formating(''), self.formating(p[5], 60), '', '', 'M11', '', ''],
[self.formating(d[3]), self.formating(p[6], 60), '', '', 'M13', '', '', 'M14'],
[self.formating(d[4]), self.formating(p[7], 60), 'M15', '', '', '', '', ''],
[self.formating(d[5]), self.formating(p[8], 60), 'M16_1', '', 'M16_2', '', 'M16_3', ''],
@ -76,7 +75,8 @@ class HomePDFView(TemplateView):
print(data)
t = Table(data, colWidths=[5.5*cm, 8*cm, 1.5*cm, 1.5*cm,1.5*cm, 1.5*cm,1.5*cm,1.5*cm], spaceBefore=0.5*cm, spaceAfter=1*cm)
t = Table(data, colWidths=[5.5*cm, 8*cm, 1.5*cm, 1.5*cm, 1.5*cm, 1.5*cm, 1.5*cm, 1.5*cm],
spaceBefore=0.5*cm, spaceAfter=1*cm)
t.setStyle(TableStyle([
('SIZE', (0, 0), (-1, -1), 8),
('FONT', (0, 0), (-1, 0), 'Helvetica-Bold'),
@ -129,13 +129,10 @@ class HomePDFView(TemplateView):
('BACKGROUND', (0, 14), (-1, 14), colors.lightgrey),
]))
t.hAlign = 0
response.story.append(t)
doc = MyDocTemplateLandscape(response)
doc.build(response.story)
return response
@ -169,11 +166,11 @@ class ModuleListView(ListView):
model = Module
def Preformatted_left(text):
def preformatted_left(text):
return Preformatted(text, style_normal, maxLineLength=15)
def Preformatted_right(text):
def preformatted_right(text):
return Preformatted(text, style_normal, maxLineLength=110)
@ -181,6 +178,7 @@ class EvaluationView(ListView):
template_name = 'cms/evaluation.html'
model = Processus
class DocumentListView(ListView):
template_name = 'cms/document_list.html'
model = Document
@ -189,7 +187,6 @@ class DocumentListView(ListView):
query = Document.objects.filter(published=True)
return query
def get_context_data(self, **kwargs):
context = super(DocumentListView, self).get_context_data(**kwargs)
context['upload'] = UploadDoc.objects.filter(published=True)
@ -254,27 +251,29 @@ class ModulePDF(DetailView):
response.story.append(Spacer(0, 1*cm))
response.story.append(Paragraph(m.__str__(), style_title))
data = [[Preformatted_left('Domaine'), Preformatted_right(m.processus.domaine.__str__())],
[Preformatted_left('Processus'), Preformatted_right(m.processus.__str__())],
[Preformatted_left('Situation emblématique'), Preformatted_right(m.situation)],
[Preformatted_left('Compétences visées'), Preformatted_right(str_comp)],
[Preformatted_left('Plus-value sur le CFC ASE'), Preformatted_right(str_scom)],
data = [
[preformatted_left('Domaine'), preformatted_right(m.processus.domaine.__str__())],
[preformatted_left('Processus'), preformatted_right(m.processus.__str__())],
[preformatted_left('Situation emblématique'), preformatted_right(m.situation)],
[preformatted_left('Compétences visées'), preformatted_right(str_comp)],
[preformatted_left('Plus-value sur le CFC ASE'), preformatted_right(str_scom)],
# [Preformatted_left('Ressources à acquérir'), Preformatted_right(str_res)],
[Preformatted_left('Objectifs à atteindre'), Preformatted_right(str_obj)],
[Preformatted_left('Didactique'), Preformatted_right(m.didactique)],
[preformatted_left('Objectifs à atteindre'), preformatted_right(str_obj)],
[preformatted_left('Didactique'), preformatted_right(m.didactique)],
# [Preformatted_left('Contenu'), Preformatted_right(str_con)],
[Preformatted_left('Evaluation'), Preformatted_right(m.evaluation)],
[Preformatted_left('Type'), Preformatted_right('{0}, obligatoire'.format(m.type))],
[Preformatted_left('Semestre'), Preformatted_right('Sem. {0}'.format(m.semestre))],
[Preformatted_left('Présentiel'), Preformatted_right('{0} heures'.format(m.periode_presentiel))],
[Preformatted_left('Travail personnel'), Preformatted_right('{0} heures'.format(m.travail_perso))],
[Preformatted_left('Responsable'), Preformatted_right(m.processus.domaine.responsable.descr_pdf())],
[preformatted_left('Evaluation'), preformatted_right(m.evaluation)],
[preformatted_left('Type'), preformatted_right('{0}, obligatoire'.format(m.type))],
[preformatted_left('Semestre'), preformatted_right('Sem. {0}'.format(m.semestre))],
[preformatted_left('Présentiel'), preformatted_right('{0} heures'.format(m.periode_presentiel))],
[preformatted_left('Travail personnel'), preformatted_right('{0} heures'.format(m.travail_perso))],
[preformatted_left('Responsable'), preformatted_right(m.processus.domaine.responsable.descr_pdf())],
]
t = Table(data, colWidths=[2.5*cm, 10*cm])
t.setStyle(TableStyle([ ('ALIGN',(0,0),(-1,-1),'LEFT'),
t.setStyle(TableStyle([
('ALIGN', (0, 0), (-1, -1), 'LEFT'),
('VALIGN', (0, 0), (-1, -1), 'TOP'),
('LEFTPADDING', (0,0),(-1,-1), 0),
]))
('LEFTPADDING', (0, 0), (-1, -1), 0), ])
)
t.hAlign = 0
response.story.append(Spacer(0, 1*cm))
response.story.append(t)
@ -292,19 +291,20 @@ def get_context(context):
# context['tot'] = liste.aggregate(Sum(F('periode_presentiel')))
context['sem1'] = liste.exclude(sem1=0)
context['tot1'] = liste.aggregate(Sum(F('sem1')))
context['tot1'] = liste.aggregate(Sum(F('sem1')))['sem1__sum']
context['sem2'] = liste.exclude(sem2=0)
context['tot2'] = liste.aggregate(Sum(F('sem2')))
context['tot2'] = liste.aggregate(Sum(F('sem2')))['sem2__sum']
context['sem3'] = liste.exclude(sem3=0)
context['tot3'] = liste.aggregate(Sum(F('sem3')))
context['tot3'] = liste.aggregate(Sum(F('sem3')))['sem3__sum']
context['sem4'] = liste.exclude(sem4=0)
context['tot4'] = liste.aggregate(Sum(F('sem4')))
context['tot4'] = liste.aggregate(Sum(F('sem4')))['sem4__sum']
context['sem5'] = liste.exclude(sem5=0)
context['tot5'] = liste.aggregate(Sum(F('sem5')))
context['tot5'] = liste.aggregate(Sum(F('sem5')))['sem5__sum']
context['sem6'] = liste.exclude(sem6=0)
context['tot6'] = liste.aggregate(Sum(F('sem6')))
context['tot'] = context['tot1']['sem1__sum'] + context['tot2']['sem2__sum'] + context['tot3']['sem3__sum'] + \
context['tot4']['sem4__sum'] + context['tot5']['sem5__sum'] + context['tot6']['sem6__sum']
context['tot6'] = liste.aggregate(Sum(F('sem6')))['sem6__sum']
context['tot'] = context['tot1'] + context['tot2'] + context['tot3'] + \
context['tot4'] + context['tot5'] + context['tot6']
return context
@ -318,72 +318,24 @@ class PeriodeView(TemplateView):
class PeriodePDFView(TemplateView):
template_name = 'cms/periodes.html'
def render_to_response(self, context, **response_kwargs):
response = PDFResponse('Périodes.pdf' ,'Périodes de formation')
context = get_context(context)
filename = 'periode.pdf'
pdf = PeriodPDF(filename)
for semestre_id in range(1, 7):
modules = context['sem{0}'.format(str(semestre_id))]
total = context['tot{0}'.format(str(semestre_id))]
pdf.produce_half_year(semestre_id, modules, total)
pdf.print_total(context['tot'])
pdf.canv.save()
data = [['Semestre 1', '{0} h.'.format(context['tot1']['sem1__sum']),'', 'Semestre 2', '{0} h.'.format(context['tot2']['sem2__sum'])],
[context['sem1'][0], '{0} h.'.format(context['sem1'][0].sem1),'', context['sem2'][0], '{0} h.'.format(context['sem2'][0].sem2) ],
[context['sem1'][1], '{0} h.'.format(context['sem1'][1].sem1),'', context['sem2'][1], '{0} h.'.format(context['sem2'][1].sem2) ],
[context['sem1'][2], '{0} h.'.format(context['sem1'][2].sem1),'', context['sem2'][2], '{0} h.'.format(context['sem2'][2].sem2) ],
[context['sem1'][3], '{0} h.'.format(context['sem1'][3].sem1),'', context['sem2'][3], '{0} h.'.format(context['sem2'][3].sem2) ],
[context['sem1'][4], '{0} h.'.format(context['sem1'][4].sem1),'', context['sem2'][4], '{0} h.'.format(context['sem2'][4].sem2) ],
[context['sem1'][5], '{0} h.'.format(context['sem1'][5].sem1),'', context['sem2'][5], '{0} h.'.format(context['sem2'][5].sem2) ],
[context['sem1'][6], '{0} h.'.format(context['sem1'][6].sem1),'', '', ''],
['Semestre 3', '{0} h.'.format(context['tot3']['sem3__sum']),'', 'Semestre 4', '{0} h.'.format(context['tot4']['sem4__sum'])],
[context['sem3'][0], '{0} h.'.format(context['sem3'][0].sem3),'', context['sem4'][0], '{0} h.'.format(context['sem4'][0].sem4) ],
[context['sem3'][1], '{0} h.'.format(context['sem3'][1].sem3),'', context['sem4'][1], '{0} h.'.format(context['sem4'][1].sem4) ],
[context['sem3'][2], '{0} h.'.format(context['sem3'][2].sem3),'', context['sem4'][2], '{0} h.'.format(context['sem4'][2].sem4) ],
[context['sem3'][3], '{0} h.'.format(context['sem3'][3].sem3),'', context['sem4'][3], '{0} h.'.format(context['sem4'][3].sem4) ],
[context['sem3'][4], '{0} h.'.format(context['sem3'][4].sem3),'', context['sem4'][4], '{0} h.'.format(context['sem4'][4].sem4) ],
[context['sem3'][5], '{0} h.'.format(context['sem3'][5].sem3),'', context['sem4'][5], '{0} h.'.format(context['sem4'][5].sem4) ],
['Semestre 5', '{0} h.'.format(context['tot5']['sem5__sum']),'', 'Semestre 6', '{0} h.'.format(context['tot6']['sem6__sum'])],
[context['sem5'][0], '{0} h.'.format(context['sem5'][0].sem5),'', context['sem6'][0], '{0} h.'.format(context['sem6'][0].sem6) ],
[context['sem5'][1], '{0} h.'.format(context['sem5'][1].sem5),'', context['sem6'][1], '{0} h.'.format(context['sem6'][1].sem6) ],
[context['sem5'][2], '{0} h.'.format(context['sem5'][2].sem5),'', context['sem6'][2], '{0} h.'.format(context['sem6'][2].sem6) ],
[context['sem5'][3], '{0} h.'.format(context['sem5'][3].sem5),'', context['sem6'][3], '{0} h.'.format(context['sem6'][3].sem6) ],
[context['sem5'][4], '{0} h.'.format(context['sem5'][4].sem5),'', context['sem6'][4], '{0} h.'.format(context['sem6'][4].sem6) ],
[context['sem5'][5], '{0} h.'.format(context['sem5'][5].sem5),'', '', '' ],
[context['sem5'][6], '{0} h.'.format(context['sem5'][6].sem5),'', '', '' ],
]
t = Table(data, colWidths=[6.5*cm,1*cm, 1*cm, 6.5*cm, 1*cm], spaceBefore=2*cm, spaceAfter=1.5*cm)
t.setStyle(TableStyle([ ('ALIGN',(0,0),(-1,-1),'LEFT'),
('VALIGN',(0,0),(-1,-1),'TOP'),
('LEFTPADDING', (0,0),(-1,-1), 0),
('SIZE', (0,0), (-1,-1), 8),
('ALIGN', (1,0), (1,-1), 'RIGHT'),
('ALIGN', (-1,0), (-1,-1), 'RIGHT'),
('LINEBELOW', (0,0), (1,0), 1, colors.black),
('LINEBELOW', (3,0), (-1,0), 1, colors.black),
('TOPPADDING', (0,8), (-1,8), 15),
('LINEBELOW', (0,8), (1,8), 1, colors.black),
('LINEBELOW', (3,8), (-1,8), 1, colors.black),
('TOPPADDING', (0,15), (-1,15), 15),
('LINEBELOW', (0,15), (1,15), 1, colors.black),
('LINEBELOW', (3,15), (-1,15), 1, colors.black),
('FONT', (0, 0), (-1, 0), 'Helvetica-Bold'),
('FONT', (0, 8), (-1, 8), 'Helvetica-Bold'),
('FONT', (0, 15), (-1, 15), 'Helvetica-Bold'),
]))
t.hAlign = 0
response.story.append(t)
response.story.append(Paragraph('Total des heures de cours: {0} heures'.format(context['tot']), style_normal))
doc = MyDocTemplate(response)
doc.build(response.story)
with open(filename, mode='rb') as fh:
response = HttpResponse(fh.read(), content_type='application/pdf')
response['Content-Disposition'] = 'attachment; filename="{0}"'.format(filename)
return response
class CompetenceListView(ListView):
model = Competence
template_name = 'cms/competence_list.html'
@ -401,9 +353,6 @@ class TravailPersoListView(ListView):
return get_context(context)
"""
class AddDocument(TemplateView):
template_name = 'cms/upload.html'

View file

@ -42,6 +42,7 @@ INSTALLED_APPS = [
'cms',
]
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
@ -72,9 +73,6 @@ TEMPLATES = [
WSGI_APPLICATION = 'common.wsgi.application'
# Password validation
# https://docs.djangoproject.com/en/1.10/ref/settings/#auth-password-validators
@ -128,10 +126,18 @@ STUDENT_IMPORT_MAPPING = {
'Email élève': 'email_rpn',
'Date nais. élève': 'date_naissance',
'Classe': 'klasse',
}
DOMAINE_COULEURS = {'D1':'#fcaf3e', 'D2': '#cc0000', 'D3': '#ef896b', 'D4': '#ad7fa8', 'D5': '#729fcf', 'D6':'#73d216', 'D7':'#ffffff', 'D8':'#babdb6' }
DOMAINE_COULEURS = {
'D1': '#fcaf3e',
'D2': '#cc0000',
'D3': '#ef896b',
'D4': '#ad7fa8',
'D5': '#729fcf',
'D6': '#73d216',
'D7': '#ffffff',
'D8': '#babdb6'
}
TINYMCE_JS_URL = MEDIA_URL + 'js/tiny_mce/tiny_mce.js'
TINYMCE_JS_ROOT = MEDIA_ROOT + 'js/tiny_mce'
@ -146,5 +152,3 @@ TINYMCE_SPELLCHECKER = True
TINYMCE_COMPRESSOR = True
from .local_settings import *

View file

@ -15,10 +15,11 @@ Including another URLconf
"""
from django.conf.urls import url, include
from django.contrib import admin
from cms import views
from django.conf import settings
from django.conf.urls.static import static
from cms import views
urlpatterns = [
url(r'^$', views.HomeView.as_view(), name='home'),
url(r'^plan_pdf/$', views.HomePDFView.as_view(), name='plan-pdf'),

View file

View file

@ -1,87 +0,0 @@
from django.http.response import HttpResponse
from django.conf import settings
from reportlab.platypus import SimpleDocTemplate
from reportlab.platypus import Paragraph, Spacer, PageBreak, Table, TableStyle, Image
from reportlab.graphics.shapes import Line
from reportlab.lib.pagesizes import A4, landscape
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)
style_title = PS(name='CORPS', fontName='Helvetica', fontSize=12, alignment = TA_LEFT)
style_adress = PS(name='CORPS', fontName='Helvetica', fontSize=10, alignment = TA_LEFT, leftIndent=300)
class PDFResponse(HttpResponse):
def __init__(self, filename, title='', portrait=True):
HttpResponse.__init__(self, content_type='application/pdf')
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.hAlign = TA_LEFT
self.story.append(image)
#self.story.append(Spacer(0,1*cm))
data = [['Filières EDS', title]]
if portrait:
t = Table(data, colWidths=[8*cm,8*cm])
else:
t = Table(data, colWidths=[11*cm,11*cm])
t.setStyle(TableStyle([ ('ALIGN',(0,0),(0,0),'LEFT'),
('ALIGN',(1,0),(-1,-1),'RIGHT'),
('LINEABOVE', (0,0) ,(-1,-1), 0.5, colors.black),
('LINEBELOW', (0,-1),(-1,-1), 0.5, colors.black),
]))
t.hAlign = TA_LEFT
self.story.append(t)
class MyDocTemplate(SimpleDocTemplate):
def __init__(self, name):
SimpleDocTemplate.__init__(self, name, pagesize=A4, topMargin=0*cm)
self.fileName = name
self.PAGE_WIDTH = A4[0]
self.PAGE_HEIGHT = A4[1]
self.CENTRE_WIDTH = self.PAGE_WIDTH/2.0
self.CENTRE_HEIGHT = self.PAGE_HEIGHT/2.0
def beforePage(self):
# page number
self.canv.saveState()
self.canv.setFontSize(8)
self.canv.drawCentredString(self.CENTRE_WIDTH,1*cm,"Page : " + str(self.canv.getPageNumber()))
self.canv.restoreState()
class MyDocTemplateLandscape(SimpleDocTemplate):
def __init__(self, name):
SimpleDocTemplate.__init__(self, name, pagesize=landscape(A4), topMargin=0*cm, leftMargin=2*cm)
self.fileName = name
self.PAGE_WIDTH = A4[1]
self.PAGE_HEIGHT = A4[0]
self.CENTRE_WIDTH = self.PAGE_WIDTH/2.0
self.CENTRE_HEIGHT = self.PAGE_HEIGHT/2.0
def beforePage(self):
# page number
self.canv.saveState()
self.canv.setFontSize(8)
self.canv.drawCentredString(self.CENTRE_WIDTH,1*cm,"Page : " + str(self.canv.getPageNumber()))
self.canv.restoreState()

View file

@ -5,12 +5,15 @@
<title>{% block title %}{% endblock %}</title>
<link rel="stylesheet" type="text/css" href="{% block stylesheet %}{% static "admin/css/base.css" %}{% endblock %}" />
{% block extrastyle %}{% endblock %}
{% if LANGUAGE_BIDI %}<link rel="stylesheet" type="text/css" href="{% block stylesheet_rtl %}{% static "admin/css/rtl.css" %}{% endblock %}" />{% endif %}
{% if LANGUAGE_BIDI %}
<link rel="stylesheet" type="text/css" href="{% block stylesheet_rtl %}{% static "admin/css/rtl.css" %}{% endblock %}" />
{% endif %}
{% block extrahead %}
<script type="text/javascript" src="{% static "js/tiny_mce/tiny_mce.js" %}"></script>{% endblock %}
{% block blockbots %}<meta name="robots" content="NONE,NOARCHIVE" />{% endblock %}
<script type="text/javascript" src="{% static "js/tiny_mce/tiny_mce.js" %}"></script>
{% endblock %}
{% block blockbots %}
<meta name="robots" content="NONE,NOARCHIVE" />
{% endblock %}
</head>
{% load i18n %}

View file

@ -1,5 +1,4 @@
{% extends "./base.html" %}
{% block title %}EDS{% endblock %}
{% block branding %}
@ -10,6 +9,5 @@
{% block breadcrumbs %}
<div class="breadcrumbs">
<a href="{% url 'home' %}">Accueil</a>&nbsp;&nbsp;
</div>
{% endblock %}

View file

@ -1,12 +1,17 @@
{% extends "./base_site.html" %}
{% load i18n static %}
{% block extrastyle %}{{ block.super }}<link rel="stylesheet" type="text/css" href="{% static "admin/css/dashboard.css" %}" />
<link rel="stylesheet" type="text/css" href="{% static "css/main.css" %}" />{% endblock %}
{% block extrastyle %}
{{ block.super }}
<link rel="stylesheet" type="text/css" href="{% static "admin/css/dashboard.css" %}" />
<link rel="stylesheet" type="text/css" href="{% static "css/main.css" %}" />
{% endblock %}
{% block coltype %}colMS{% endblock %}
{% block bodyclass %}{{ block.super }} dashboard{% endblock %}
{% block bodyclass %}
{{ block.super }} dashboard
{% endblock %}
{% block breadcrumbs %}
<div class="breadcrumbs">
@ -14,9 +19,7 @@
<a href="{% url 'document' %}">Document</a>
</div>
{% endblock %}
{% block content %}
<div id="content-main">
Page non trouvée
</div>

View file

@ -7,8 +7,6 @@
<link rel="stylesheet" type="text/css" href="{% static "admin/css/base.css" %}" />
<link rel="stylesheet" type="text/css" href="{% static "admin/css/dashboard.css" %}" />
<script type="text/javascript" src="{% static "js/tiny_mce/tiny_mce.js" %}"></script>
<script src="{% static 'js/jquery.js' %}"></script>
{% block extrastyle %}<link rel="stylesheet" type="text/css" href="{% static "css/main.css" %}" />{% endblock %}
{% if LANGUAGE_BIDI %}<link rel="stylesheet" type="text/css" href="{% block stylesheet_rtl %}{% static "admin/css/rtl.css" %}{% endblock %}" />{% endif %}

View file

@ -2,7 +2,9 @@
{% block title %}EDS{% endblock %}
{% block branding %}<h1 id="site-name"><a href="{% url 'home' %}">Ecole Santé-social Pierre-Coullery</a> &nbsp;&nbsp;Formation en Education sociale</h1>{% endblock %}
{% block branding %}
<h1 id="site-name"><a href="{% url 'home' %}">Ecole Santé-social Pierre-Coullery</a> &nbsp;&nbsp;Formation en Education sociale</h1>
{% endblock %}
{% block usertools %}
<div id="user-tools">
{% if user.is_authenticated %}

View file

@ -6,17 +6,19 @@
{% block bodyclass %}{{ block.super }}{% endblock %}
{% block content %}
<div id="content-main">
<h1>Liste des compétences du PEC avec les modules correspondants</h1>
<table border="0">
{% for c in object_list %}
<tr><td colspan="3">{{ c }}</td></td></tr>
<tr><th width="10px">&nbsp;</th><td colspan="2"><a href=" {% url 'module-detail' c.module.id %}">{{ c.module }}</a></td></tr>
<tr>
<td colspan="3">{{ c }}</td>
</tr>
<tr>
<th width="10px">&nbsp;</th>
<td colspan="2"><a href=" {% url 'module-detail' c.module.id %}">{{ c.module }}</a></td>
</tr>
{% endfor %}
</table>
</div>
{% endblock %}

View file

@ -8,7 +8,6 @@
{% block content %}
<div id="content-main">
<div style="margin:auto;width:50%;">
<h1><b>{{object}}</b></h1>
<p>{{object.texte|safe}}</p>

View file

@ -12,7 +12,6 @@
{% for doc in object_list %}
<li><a href="{% url 'document-detail' doc.id %}">{{ doc }}</a></li>
{% endfor %}
{% for fic in upload %}
<li><a href="{% url 'upload-detail' fic.id %}">{{ fic.titre }}</a></li>
{% endfor %}

View file

@ -19,7 +19,6 @@
{% endfor %}
{% endfor %}
{% endfor %}
</div>
{% endblock %}

View file

@ -11,20 +11,27 @@
{% block content %}
<div id="content-main">
<h1>Liste des domaines</h1>
<table border="0">
{% for d in object_list %}
<tr><td colspan="3">{{d}}</td></td></tr>
<tr>
<td colspan="3">{{d}}</td></td>
</tr>
{% for p in d.processus_set.all %}
<tr><th width="10px">&nbsp;</th><td colspan="2"><a href=" {% url 'processus-detail' p.id %}">{{p}}</a></td></tr>
<tr>
<th width="10px">&nbsp;</th>
<td colspan="2"><a href=" {% url 'processus-detail' p.id %}">{{p}}</a></td>
</tr>
{% for m in p.module_set.all %}
<tr><th colspan="2" width="45px">&nbsp;<td><a href=" {% url 'module-detail' m.id %}">{{m}}</a></td></tr>
<tr>
<th colspan="2" width="45px">&nbsp;</th>
<td><a href=" {% url 'module-detail' m.id %}">{{m}}</a></td>
</tr>
{% endfor %}
{% endfor %}
{% endfor %}
</table>
</div>
{% endblock %}

View file

@ -49,7 +49,6 @@
</style>
<script type="text/javascript">
$(document).ready(function(){
$('select').change(function(){
cl = $(this).attr('class');
@ -71,7 +70,6 @@ $(document).ready(function(){
$("#"+tab_id).addClass('current');
});
});
</script>
<div id="content-main">
<h1>Evaluation des compétences</h1>
@ -87,28 +85,34 @@ $(document).ready(function(){
<li class="tab-link" data-tab="P07">P07</li>
<li class="tab-link" data-tab="P08">P08</li>
</ul>
<hr/>
<hr>
</div>
{% for p in object_list %}
<div id="{{p.code}}" class="tab-content">
<table>
<tr><th>{{p}}</th><td width="100px"><div id="tot_{{p.code}}"></div></td></tr>
<tr>
<th>{{p}}</th>
<td width="100px">
<div id="tot_{{p.code}}"></div>
</td>
</tr>
{% for c in p.competence_set.all %}
<tr><td>{{c}}</td><td><select class="{{p.code}}" ><option value="0">0</option>
<tr>
<td>{{c}}</td>
<td>
<select class="{{p.code}}" >
<option value="0">0</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option></select></td></tr>
<option value="3">3</option>
</select>
</td>
</tr>
{% endfor %}
</table>
</div>
{% endfor %}
</div><!-- container -->
</div>
{% endblock %}

View file

@ -18,53 +18,99 @@
<th width="180px" style="text-align:center;">Sem5</th>
<th width="180px" style="text-align:center;">Sem6</th>
</tr>
<tr>
<td rowspan="4" class="l1 d">{{D1.url|safe}}</td>
<td rowspan="2" class="l1 p">{{P01.url|safe}}</td>
<td class="l1 m">{{M01.url_code|safe}}</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td>
<td class="l1 m">{{M01.url_code|safe}}</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td class="l1 m" >{{M02.url_code|safe}}</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td>
<td class="l1 m" >{{M02.url_code|safe}}</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td rowspan="2" class="l1 p">{{P02.url|safe}}</td>
<td></td><td>&nbsp;</td><td>&nbsp;</td><td class="l1 m">{{M03.url_code|safe}}</td><td>&nbsp;</td><td>&nbsp;</td>
<td></td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td class="l1 m">{{M03.url_code|safe}}</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td></td><td class="l1 m">{{ M04.url_code|safe }}</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td>
<td></td>
<td class="l1 m">{{ M04.url_code|safe }}</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<!-- Ligne 2 -->
<tr>
<td rowspan="3" class="l2 d">{{D2.url|safe}}</td>
<td class="l2 p">{{P03.url|safe}}</td>
<td class="l2 m">{{M05.url_code|safe}}</td><td>&nbsp;</td><td class="l2 m">{{M06.url_code|safe}}</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td>
<td class="l2 m">{{M05.url_code|safe}}</td>
<td>&nbsp;</td>
<td class="l2 m">{{M06.url_code|safe}}</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td rowspan="2" class="l2 p">{{P04.url|safe}}</td>
<td></td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td class="l2 m">{{M07.url_code|safe}}</td><td class="l2 m">{{M09.url_code|safe}}</td>
<td></td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td class="l2 m">{{M07.url_code|safe}}</td>
<td class="l2 m">{{M09.url_code|safe}}</td>
</tr>
<tr>
<td></td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td class="l2 m">{{M08.url_code|safe}}</td><td>&nbsp;</td>
<td></td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td class="l2 m">{{M08.url_code|safe}}</td
><td>&nbsp;</td>
</tr>
<!-- Ligne 3 -->
<tr>
<td rowspan="2" class="l3 d">{{D3.url|safe}}</td>
<td class="l3 p">{{P05.url|safe}}</td>
<td >&nbsp;</td><td>&nbsp;</td><td colspan="2" class="l3 m">{{M10.url_code|safe}}</td><td class="l3 m">{{M12.url_code|safe}}</td><td>&nbsp;</td>
<td >&nbsp;</td>
<td>&nbsp;</td>
<td colspan="2" class="l3 m">{{M10.url_code|safe}}</td>
<td class="l3 m">{{M12.url_code|safe}}</td>
<td>&nbsp;</td>
</tr>
<tr>
<td class="l3 p">{{P06.url|safe}}</td>
<td >&nbsp;</td><td>&nbsp;</td><td colspan="2" class="l3 m">{{M11.url_code|safe}}</td><td>&nbsp;</td><td>&nbsp;</td>
<td >&nbsp;</td>
<td>&nbsp;</td>
<td colspan="2" class="l3 m">{{M11.url_code|safe}}</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<!-- Ligne 4 -->
<tr>
<td class="l4 d">{{D4.url|safe}}</td>
<td class="l4 p">{{P07.url|safe}}</td>
<td >&nbsp;</td><td>&nbsp;</td><td class="l4 m">{{M13.url_code|safe}}</td><td>&nbsp;</td><td>&nbsp;</td><td class="l4 m">{{M14.url_code|safe}}</td>
<td >&nbsp;</td>
<td>&nbsp;</td>
<td class="l4 m">{{M13.url_code|safe}}</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td class="l4 m">{{M14.url_code|safe}}</td>
</tr>
<!-- Ligne 5 -->
@ -98,7 +144,7 @@
<td colspan="6" class="l8 m">{{MACC.url_code|safe}}</td>
</tr>
</table>
<br/>
<br>
<a href="{% url 'plan-pdf' %}">Imprimer en PDF</a>
</div>
{% endblock %}

View file

@ -4,44 +4,90 @@
{% block coltype %}colMS{% endblock %}
{% block content %}
<div id="content-main">
<h1>{{object}}</h1>
<table>
<tr><th width="100px">Domaine</th><td>{{object.processus.domaine.url|safe}}</td></tr>
<tr><th>Processus</th><td>{{object.processus.url|safe}}</td></tr>
<tr><th>Situation emblématique</th><td>{{object.situation|linebreaksbr}}</td></tr>
<tr><th>Compétences visées</th><td><p>L'éducateur social, l'éducatrice sociale:</p>
{% for c in object.competence_set.all %}- {{c.nom}} ({{c.code}})<br />{% endfor %}</td></tr>
<tr><th>Plus-value sur le CFC ASE</th><td>
<tr>
<th width="100px">Domaine</th>
<td>{{object.processus.domaine.url|safe}}</td>
</tr>
<tr>
<th>Processus</th>
<td>{{object.processus.url|safe}}</td>
</tr>
<tr>
<th>Situation emblématique</th>
<td>{{object.situation|linebreaksbr}}</td>
</tr>
<tr>
<th>Compétences visées</th>
<td>
<p>L'éducateur social, l'éducatrice sociale:</p>
{% for c in object.competence_set.all %}
- {{c.nom}} ({{c.code}})<br>
{% endfor %}
</td>
</tr>
<tr>
<th>Plus-value sur le CFC ASE</th>
<td>
{% for c in object.competence_set.all %}
{% for sc in c.souscompetence_set.all %}
- {{sc.nom}} (voir {{sc.competence.code}}) <br />
- {{sc.nom}} (voir {{sc.competence.code}}) <br>
{%endfor %}
{% endfor %}
</td></tr>
</td>
</tr>
<!-- <tr><th>Ressources à acquérir</th><td>{% for c in object.ressource_set.all %}- {{c}}<br />{% endfor %}</td></tr> -->
<tr><th>Objectifs à atteindre</th><td>{% for c in object.objectif_set.all %}- {{c}}<br />{% endfor %}</td></tr>
<tr><th>Didactique</th><td>{{ object.didactique }}</td></tr>
<tr>
<th>Objectifs à atteindre</th>
<td>
{% for c in object.objectif_set.all %}
- {{c}}<br>
{% endfor %}
</td>
</tr>
<tr>
<th>Didactique</th>
<td>{{ object.didactique }}</td>
</tr>
<!-- <tr><th>Contenu</th><td>{{object.contenu|linebreaksbr}}</td></tr> -->
<tr><th>Evaluation</th><td>{{object.evaluation|linebreaksbr}}</td></tr>
<tr><th>Type</th><td>{{object.type}}, obligatoire</td></tr>
<tr><th>Semestre</th><td>Sem. {{object.semestre}}</td></tr>
<tr>
<th>Evaluation</th>
<td>{{object.evaluation|linebreaksbr}}</td>
</tr>
<tr>
<th>Type</th>
<td>{{object.type}}, obligatoire</td>
</tr>
<tr>
<th>Semestre</th>
<td>Sem. {{object.semestre}}</td>
</tr>
{% if object.periode_presentiel > 0 %}
<tr><th>Présentiel</th><td>{{object.periode_presentiel}} heures</td></tr>
<tr>
<th>Présentiel</th>
<td>{{object.periode_presentiel}} heures</td>
</tr>
{% endif %}
{% if object.pratique_prof > 0 %}
<tr><th>Pratique prof.</th><td>{{object.pratique_prof}} heures</td></tr>
<tr>
<th>Pratique prof.</th>
<td>{{object.pratique_prof}} heures</td>
</tr>
{% endif %}
{% if object.travail_perso > 0 %}
<tr><th>Travail perso.</th><td>{{object.travail_perso}} heures</td></tr>
<tr>
<th>Travail perso.</th>
<td>{{object.travail_perso}} heures</td>
</tr>
{% endif %}
<tr><th>Responsable</th><td>{{object.processus.domaine.responsable.descr|safe}}</td></tr>
<tr>
<th>Responsable</th>
<td>{{object.processus.domaine.responsable.descr|safe}}</td>
</tr>
</table>
<p><a href="{% url 'module-pdf' object.id %}">Imprimer en PDF</a></p>
</div>
{% endblock %}

View file

@ -8,33 +8,81 @@
<div id="content-main">
<h1>{{object}}</h1>
<table>
<tr><th>Domaine</th><td>{{object.processus.domaine.url|safe}}</td></tr>
<tr><th>Processus</th><td>{{object.processus.url|safe}}</td></tr>
<tr><th>Situation emblématique</th><td>{{object.situation|linebreaksbr}}</td></tr>
<tr><th>Compétences visées</th><td><p>L'éducateur social, l'éducatrice sociale:</p>
{% for c in object.competence_set.all %}- {{c.nom}} ({{c.code}})<br />
<tr>
<th>Domaine</th>
<td>{{object.processus.domaine.url|safe}}</td>
</tr>
<tr>
<th>Processus</th>
<td>{{object.processus.url|safe}}</td>
</tr>
<tr>
<th>Situation emblématique</th>
<td>{{object.situation|linebreaksbr}}</td>
</tr>
<tr>
<th>Compétences visées</th>
<td><p>L'éducateur social, l'éducatrice sociale:</p>
{% for c in object.competence_set.all %}
- {{c.nom}} ({{c.code}})<br>
{% if user.is_authenticated %}
{% for sc in c.souscompetence_set.all %}&nbsp;&nbsp;&nbsp; -- {{sc.nom}} <br />{%endfor %}{% endif %}{% endfor %}</td></tr>
{% for sc in c.souscompetence_set.all %}
&nbsp;&nbsp;&nbsp; -- {{sc.nom}} <br>
{%endfor %}
{% endif %}
{% endfor %}
</td>
</tr>
<!-- <tr><th>Ressources à acquérir</th><td>{% for c in object.ressource_set.all %}- {{c}}<br />{% endfor %}</td></tr> -->
<tr><th>Objectifs à atteindre</th><td>{% for c in object.objectif_set.all %}- {{c}}<br />{% endfor %}</td></tr>
<tr><th>Didactique</th><td>{{ object.didactique }}</td></tr>
<tr>
<th>Objectifs à atteindre</th>
<td>
{% for c in object.objectif_set.all %}
- {{c}}<br>
{% endfor %}
</td>
</tr>
<tr>
<th>Didactique</th>
<td>{{ object.didactique }}</td>
</tr>
<!-- <tr><th>Contenu</th><td>{{object.contenu|linebreaksbr}}</td></tr> -->
<tr><th>Evaluation</th><td>{{object.evaluation|linebreaksbr}}</td></tr>
<tr><th>Type</th><td>{{object.type}}, obligatoire</td></tr>
<tr><th>Semestre</th><td>Sem. {{object.semestre}}</td></tr>
<tr>
<th>Evaluation</th>
<td>{{object.evaluation|linebreaksbr}}</td>
</tr>
<tr>
<th>Type</th>
<td>{{object.type}}, obligatoire</td>
</tr>
<tr>
<th>Semestre</th>
<td>Sem. {{object.semestre}}</td>
</tr>
{% if object.periode_presentiel > 0 %}
<tr><th>Présentiel</th><td>{{object.periode_presentiel}} heures</td></tr>
<tr>
<th>Présentiel</th>
<td>{{object.periode_presentiel}} heures</td>
</tr>
{% endif %}
{% if object.pratique_prof > 0 %}
<tr><th>Pratique prof.</th><td>{{object.pratique_prof}} heures</td></tr>
<tr>
<th>Pratique prof.</th>
<td>{{object.pratique_prof}} heures</td>
</tr>
{% endif %}
{% if object.travail_perso > 0 %}
<tr><th>Travail perso.</th><td>{{object.travail_perso}} heures</td></tr>
<tr>
<th>Travail perso.</th>
<td>{{object.travail_perso}} heures</td>
</tr>
{% endif %}
<tr><th>Responsable</th><td>{{object.processus.domaine.responsable.descr|safe}}</td></tr>
<tr>
<th>Responsable</th>
<td>{{object.processus.domaine.responsable.descr|safe}}</td>
</tr>
</table>
<p><a href="{% url 'module-pdf' object.id %}">Imprimer en PDF</a></p>
</div>
{% endblock %}

View file

@ -11,11 +11,12 @@
<h1>Liste des modules</h1>
<table>
{% for m in object_list %}
<tr><th>{{m.code}}</th><td><a href=" {% url 'module-detail' m.id %}">{{m.nom}}</a></td></tr>
<tr>
<th>{{m.code}}</th>
<td><a href=" {% url 'module-detail' m.id %}">{{m.nom}}</a></td>
</tr>
{% endfor %}
</table>
</div>
{% endblock %}

View file

@ -5,12 +5,19 @@
{% block content %}
<div id="content-main">
<h1>Périodes de formation</h1>
<table>
<tr><th width="290px">Semestre 1</th><th text-align="right">{{tot1.sem1__sum}}h.</th><th width="40px"></th><th width="290px">Semestre 2</th><th text-align="right">{{tot2.sem2__sum}}h.</th></tr>
<tr><td colspan="2"><table align="left">
<tr>
<th width="290px">Semestre 1</th>
<th text-align="right">{{tot1}}h.</th>
<th width="40px"></th>
<th width="290px">Semestre 2</th>
<th text-align="right">{{tot2}}h.</th>
</tr>
<tr>
<td colspan="2">
<table align="left">
{% for s in sem1 %}
<tr><td width="290px">{{s}}</td><td>{{s.sem1}} h.</td></tr>
{% endfor %}
@ -23,41 +30,73 @@
<tr><td width="290px">{{s}}</td><td>{{s.sem2}} h.</td></tr>
{% endfor %}
</table>
</td></tr>
<tr><td>&nbsp;</td><td>&nbsp;</td></tr>
<tr><th>Semestre 3</th><th text-align="right">{{tot3.sem3__sum}}h.</th><th></th><th>Semestre 4</th><th text-align="right">{{tot4.sem4__sum}}h.</th> </tr>
<tr><td colspan="2"><table align="left">
</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<th>Semestre 3</th>
<th text-align="right">{{tot3}}h.</th>
<th></th>
<th>Semestre 4</th>
<th text-align="right">{{tot4}}h.</th>
</tr>
<tr>
<td colspan="2">
<table align="left">
{% for s in sem3 %}
<tr><td width="290px">{{s}}</td><td>{{s.sem3}} h.</td></tr>
{% endfor %}
</table></td>
</table>
</td>
<td></td>
<td colspan="2"><table align="left">
<td colspan="2">
<table align="left">
{% for s in sem4 %}
<tr><td width="290px">{{s}}</td><td>{{s.sem4}} h.</td></tr>
<tr>
<td width="290px">{{s}}</td>
<td>{{s.sem4}} h.</td>
</tr>
{% endfor %}
</table></td></tr>
<tr><td>&nbsp;</td><td>&nbsp;</td></tr>
<tr><th>Semestre 5</th><th text-align="right">{{tot5.sem5__sum}}h.</th><th></th><th>Semestre 6</th><th text-align="right">{{tot6.sem6__sum}}h.</th></tr>
<tr><td colspan="2"><table align="left">
</table>
</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<th>Semestre 5</th>
<th text-align="right">{{tot5}}h.</th>
<th></th>
<th>Semestre 6</th>
<th text-align="right">{{tot6}}h.</th>
</tr>
<tr>
<td colspan="2">
<table align="left">
{% for s in sem5 %}
<tr><td width="290px">{{s}}</td><td>{{s.sem5}} h.</td></tr>
{% endfor %}
</table></td>
</table>
</td>
<td></td>
<td colspan="2">
<table align="left">
{% for s in sem6 %}
<tr><td width="290px">{{s}}</td><td>{{s.sem6}} h.</td></tr>
<tr>
<td width="290px">{{s}}</td>
<td>{{s.sem6}} h.</td>
</tr>
{% endfor %}
</table>
</td></tr>
</td>
</tr>
</table>
<br/>
Total des heures de cours: {{tot}} heures
<br/><br/>
<br>
<p><strong>Total des heures de cours: {{tot}} heures</strong></p>
<a href="{% url 'periodes-pdf' %}">Imprimer en PDF</a>
</div>
{% endblock %}

View file

@ -1,29 +1,46 @@
{% extends "./base_site.html" %}
{% load i18n static %}
{% block coltype %}colMS{% endblock %}
{% block bodyclass %}{{ block.super }} dashboard{% endblock %}
{% block content %}
<div id="content-main">
<h1>{{object}}</h1>
<table>
<tr><th width="100px">Description</th><td>{{object.description}}</td></tr>
<tr><th>Compétences visées</th><td><p>L'éducateur social, l'éducatrice sociale:</p>
{% for m in object.module_set.all %}{% for c in m.competences.all %}
- {{c.libelle}} ({{c.code}})<br />{% endfor %}{% endfor %}</td></tr>
<tr><th>Domaine</th><td>{{object.domaine.url|safe}}</td></tr>
<tr><th>Responsable</th><td>{{object.domaine.responsable.descr|safe}}</td></tr>
<tr><th>Modules concernés</th><td>{% for m in object.module_set.all %}{{m.url|safe}}</br>{% endfor %}</td></tr>
<tr>
<th width="100px">Description</th>
<td>{{object.description}}</td>
</tr>
<tr>
<th>Compétences visées</th>
<td>
<p>L'éducateur social, l'éducatrice sociale:</p>
{% for m in object.module_set.all %}
{% for c in m.competences.all %}
- {{c.libelle}} ({{c.code}})<br>
{% endfor %}
{% endfor %}
</td>
</tr>
<tr>
<th>Domaine</th>
<td>{{object.domaine.url|safe}}</td>
</tr>
<tr>
<th>Responsable</th>
<td>{{object.domaine.responsable.descr|safe}}</td>
</tr>
<tr>
<th>Modules concernés</th>
<td>
{% for m in object.module_set.all %}
{{m.url|safe}}<br>
{% endfor %}
</td>
</tr>
</table>
</div>
{% endblock %}

View file

@ -1,27 +1,27 @@
{% extends "./base_site.html" %}
{% load i18n static %}
{% block coltype %}colMS{% endblock %}
{% block bodyclass %}{{ block.super }}{% endblock %}
{% block content %}
<div id="content-main">
<h1>Liste des processus</h1>
<table>
{% for p in object_list %}
<tr><th>{{p.code}}</th><td><a href=" {% url 'processus-detail' p.id %}">{{p.nom}}</a></td></tr>
<tr>
<th>{{p.code}}</th>
<td><a href=" {% url 'processus-detail' p.id %}">{{p.nom}}</a></td>
</tr>
{% for m in p.module_set.all %}
<tr><th>&nbsp;</th><td><a href=" {% url 'module-detail' m.id %}">{{m}}</a></td></tr>
<tr>
<th>&nbsp;</th>
<td><a href=" {% url 'module-detail' m.id %}">{{m}}</a></td>
</tr>
{% endfor %}
{% endfor %}
</table>
</div>
{% endblock %}

View file

@ -10,7 +10,12 @@
<div id="content-main">
<h1>Répartion des heures de formation</h1>
<table border="0">
<tr><th>Module</th><th >Heures de cours</th><th>Travail perso.</th><th>Pratique prof.</th></tr>
<tr>
<th>Module</th>
<th >Heures de cours</th>
<th>Travail perso.</th>
<th>Pratique prof.</th>
</tr>
{% for m in object_list %}
<tr>
<td >
@ -20,9 +25,27 @@
{{ m }}
{% endif %}
</td>
<td align="center">{% if m.periode_presentiel == 0 %} &nbsp; {% else %} {{ m.periode_presentiel|rjust:"3" }} h. {% endif %}</td>
<td align="center">{% if m.travail_perso == 0 %} &nbsp; {% else %} {{ m.travail_perso|rjust:"3" }} h. {% endif %}</td>
<td align="center">{% if m.pratique_prof == 0 %} &nbsp; {% else %} {{ m.pratique_prof|rjust:"3" }} h.{% endif %}</td>
<td align="center">
{% if m.periode_presentiel == 0 %}
&nbsp;
{% else %}
{{ m.periode_presentiel|rjust:"3" }} h.
{% endif %}
</td>
<td align="center">
{% if m.travail_perso == 0 %}
&nbsp;nbsp;
{% else %}
{{ m.travail_perso|rjust:"3" }} h.
{% endif %}
</td>
<td align="center">
{% if m.pratique_prof == 0 %}
&nbsp;
{% else %}
{{ m.pratique_prof|rjust:"3" }} h.
{% endif %}
</td>
</tr>
{% endfor %}
<tr>

View file

@ -16,7 +16,6 @@
{% endblock %}
{% block content %}
<div id="content-main">
<h1>Enregistrements de documents</h1>
{% if documents %}
@ -34,11 +33,7 @@
{% csrf_token %}
<p>{{ form.non_field_errors }}</p>
<p>{{ form.docfile.label_tag }} {{ form.docfile.help_text }}</p>
<p>
{{ form.docfile.errors }}
{{ form.docfile }}
</p>
<p>{{ form.docfile.errors }} {{ form.docfile }}</p>
<p><input type="submit" value="Upload" /></p>
</form>
</div>

View file

@ -3,13 +3,10 @@
{% block coltype %}colMS{% endblock %}
{% block content %}
<div id="content-main">
<iframe src="{{fichier}}" width="1200" height="800" align="middle"></iframe>
</div>
{% endblock %}