From c92c0425ec44af7cee592b88a1fd82eb2ffdad84 Mon Sep 17 00:00:00 2001 From: alazo Date: Mon, 20 Feb 2017 20:23:52 +0100 Subject: [PATCH 1/5] deplacement module --- cms/models.py | 32 ++++++++++---------------------- common/settings.py | 10 +++++----- templates/cms/index.html | 10 +++------- 3 files changed, 18 insertions(+), 34 deletions(-) diff --git a/cms/models.py b/cms/models.py index 58d6861..a5750d3 100644 --- a/cms/models.py +++ b/cms/models.py @@ -47,25 +47,7 @@ class Enseignant(models.Model): return '{0} {1}'.format(self.nom, self.prenom) def descr(self): - return '{0} ({1})'.format(self.__str__(), self.email) - - -class SVG_Domaine: - compteur = 0 - x = 30 - y = 10 - width = 200 - svg = '' - txt = '{1}' - - def get_svg(self): - return '{0}{1}'.format(self.svg, self.txt) - - def __init__(self, domaine): - SVG_Domaine.compteur += 1 - self.svg = self.svg.format(20, 100, settings.DOMAINE_COULEUR[domaine.code]) - self.txt = self.txt.format(20, domaine.__str__()) - + return '{0} ({1})'.format(self.__str__(), self.email) class Domaine(models.Model): @@ -73,6 +55,8 @@ class Domaine(models.Model): nom = models.CharField(max_length=200, blank=False) responsable = models.ForeignKey(Enseignant, null=True, default=None) + height_screen = 50 + class Meta: ordering = ('code',) @@ -83,10 +67,14 @@ class Domaine(models.Model): return "{1}".format(self.id, self.__str__()) def svg(self): - svg = '' - txt = '{1}' + processus = self.processus_set.all() - return svg.format(20, 100, settings.DOMAINE_COULEURS[self.code]) + txt.format(50, self.__str__()) + + svg = '' + txt = '{1}' + 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__()) diff --git a/common/settings.py b/common/settings.py index 254c6de..e5c22c9 100644 --- a/common/settings.py +++ b/common/settings.py @@ -55,7 +55,7 @@ ROOT_URLCONF = 'common.urls' TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', - 'DIRS': [os.path.join(BASE_DIR, 'templates/')], + 'DIRS': [os.path.join(BASE_DIR, 'templates')], 'APP_DIRS': True, 'OPTIONS': { 'context_processors': [ @@ -97,7 +97,7 @@ AUTH_PASSWORD_VALIDATORS = [ LANGUAGE_CODE = 'fr-fr' -TIME_ZONE = 'UTC' +TIME_ZONE = 'Europe/Zurich' USE_I18N = True @@ -109,11 +109,11 @@ USE_TZ = True # Static files (CSS, JavaScript, Images) # https://docs.djangoproject.com/en/1.10/howto/static-files/ -STATIC_URL = '/static/' -STATIC_ROOT = os.path.join(BASE_DIR, 'static/') +STATIC_URL = '/cms/static/' +STATIC_ROOT = os.path.join(BASE_DIR, 'static') MEDIA_URL = '/media/' -MEDIA_ROOT = os.path.join(BASE_DIR, 'media/') +MEDIA_ROOT = os.path.join(BASE_DIR, 'media') STUDENT_IMPORT_MAPPING = { 'Num élève': 'id_ext', diff --git a/templates/cms/index.html b/templates/cms/index.html index 5fd9712..905d1d1 100644 --- a/templates/cms/index.html +++ b/templates/cms/index.html @@ -47,7 +47,6 @@    {{M07.url_code|safe}}{{M09.url_code|safe}} -    {{M08.url_code|safe}}  @@ -79,9 +78,9 @@ {{D6.url|safe}} {{P09.url|safe}} - {{M16_1.url_code|safe}} - {{M16_2.url_code|safe}} - {{M16_3.url_code|safe}} + {{M16_1a.url_code|safe}} / {{M16_1b.url_code|safe}} / {{M16_1c.url_code|safe}} / {{M16_1d.url_code|safe}} / {{M16_1e.url_code|safe}} + {{M16_2a.url_code|safe}} + {{M16_3a.url_code|safe}} / {{M16_3b.url_code|safe}} / {{M16_3c.url_code|safe}} / {{M16_3d.url_code|safe}} / {{M16_3e.url_code|safe}} @@ -102,9 +101,6 @@
Imprimer en PDF - -{{D1.svg|safe}} - {% endblock %} From e4ca0f9901eec41f14827dc365d1229e51b914c8 Mon Sep 17 00:00:00 2001 From: alazo Date: Mon, 20 Feb 2017 21:21:01 +0100 Subject: [PATCH 2/5] fichier static --- cms/models.py | 26 +++----------------------- common/settings.py | 2 +- templates/cms/index.html | 8 -------- 3 files changed, 4 insertions(+), 32 deletions(-) diff --git a/cms/models.py b/cms/models.py index 37d036e..998225f 100644 --- a/cms/models.py +++ b/cms/models.py @@ -47,29 +47,9 @@ class Enseignant(models.Model): return '{0} {1}'.format(self.nom, self.prenom) def descr(self): -<<<<<<< HEAD - return '{0} ({1})'.format(self.__str__(), self.email) -======= - return '{0} ({3})'.format(self.__str__(), self.email, self.email) - - -class SVG_Domaine: - compteur = 0 - x = 30 - y = 10 - width = 200 - svg = '' - txt = '{1}' - - def get_svg(self): - return '{0}{1}'.format(self.svg, self.txt) - - def __init__(self, domaine): - SVG_Domaine.compteur += 1 - self.svg = self.svg.format(20, 100, settings.DOMAINE_COULEUR[domaine.code]) - self.txt = self.txt.format(20, domaine.__str__()) - ->>>>>>> 52cca0ce67c3fff10578bd13d8a9d4f1c0b77de5 + + return '{0} ({2})'.format(self.__str__(), self.email, self.email) + class Domaine(models.Model): diff --git a/common/settings.py b/common/settings.py index e5c22c9..c2bd28d 100644 --- a/common/settings.py +++ b/common/settings.py @@ -109,7 +109,7 @@ USE_TZ = True # Static files (CSS, JavaScript, Images) # https://docs.djangoproject.com/en/1.10/howto/static-files/ -STATIC_URL = '/cms/static/' +STATIC_URL = '/static/' STATIC_ROOT = os.path.join(BASE_DIR, 'static') MEDIA_URL = '/media/' diff --git a/templates/cms/index.html b/templates/cms/index.html index d4189b4..905d1d1 100644 --- a/templates/cms/index.html +++ b/templates/cms/index.html @@ -80,11 +80,7 @@ {{P09.url|safe}} {{M16_1a.url_code|safe}} / {{M16_1b.url_code|safe}} / {{M16_1c.url_code|safe}} / {{M16_1d.url_code|safe}} / {{M16_1e.url_code|safe}} {{M16_2a.url_code|safe}} -<<<<<<< HEAD {{M16_3a.url_code|safe}} / {{M16_3b.url_code|safe}} / {{M16_3c.url_code|safe}} / {{M16_3d.url_code|safe}} / {{M16_3e.url_code|safe}} -======= - {{M16_3a.url_code|safe}} / {{M16_3b.url_code|safe}} / {{M16_3c.url_code|safe}} / {{M16_3d.url_code|safe}} ->>>>>>> 52cca0ce67c3fff10578bd13d8a9d4f1c0b77de5 @@ -105,10 +101,6 @@
Imprimer en PDF -<<<<<<< HEAD -======= - ->>>>>>> 52cca0ce67c3fff10578bd13d8a9d4f1c0b77de5 {% endblock %} From 5e59148fd95d423ffb275b3c8e40bb1cece548e7 Mon Sep 17 00:00:00 2001 From: alazo Date: Fri, 24 Feb 2017 17:26:42 +0100 Subject: [PATCH 3/5] mailto --- cms/models.py | 2 +- templates/cms/module_detail.html | 2 +- templates/cms/processus_detail.html | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/cms/models.py b/cms/models.py index 998225f..07d7b9a 100644 --- a/cms/models.py +++ b/cms/models.py @@ -48,7 +48,7 @@ class Enseignant(models.Model): def descr(self): - return '{0} ({2})'.format(self.__str__(), self.email, self.email) + return '{0} ({2})'.format(self.__str__(), self.email, self.email) diff --git a/templates/cms/module_detail.html b/templates/cms/module_detail.html index 18bea69..72a19e1 100644 --- a/templates/cms/module_detail.html +++ b/templates/cms/module_detail.html @@ -30,7 +30,7 @@ {% if object.travail_perso > 0 %} Travail perso.{{object.travail_perso}} heures {% endif %} -Responsable{{object.processus.domaine.responsable.descr}} +Responsable{{object.processus.domaine.responsable.descr|safe}}

Imprimer en PDF

diff --git a/templates/cms/processus_detail.html b/templates/cms/processus_detail.html index bfeb01a..abb8f71 100644 --- a/templates/cms/processus_detail.html +++ b/templates/cms/processus_detail.html @@ -17,7 +17,7 @@ {% for m in object.module_set.all %}{% for c in m.competences.all %} - {{c.libelle}} ({{c.code}})
{% endfor %}{% endfor %} Domaine{{object.domaine.url|safe}} -Responsable{{object.domaine.responsable}} ({{object.domaine.responsable.email}}) +Responsable{{object.domaine.responsable.descr|safe}} Modules concernés{% for m in object.module_set.all %}{{m.url|safe}}
{% endfor %} From 3fdb5496d831e207bfd28166c6639d6cf7d9de87 Mon Sep 17 00:00:00 2001 From: alazo Date: Wed, 8 Mar 2017 04:39:37 +0100 Subject: [PATCH 4/5] Corrections mineures --- cms/admin.py | 23 ++++- cms/forms.py | 104 +++++++++++++++++++--- cms/migrations/0017_auto_20170308_0437.py | 30 +++++++ cms/models.py | 6 +- templates/cms/404.html | 25 ++++++ templates/cms/domaine_detail.html | 2 +- 6 files changed, 172 insertions(+), 18 deletions(-) create mode 100644 cms/migrations/0017_auto_20170308_0437.py create mode 100644 templates/cms/404.html diff --git a/cms/admin.py b/cms/admin.py index 669a5c3..8d293a2 100644 --- a/cms/admin.py +++ b/cms/admin.py @@ -1,19 +1,30 @@ from django.contrib import admin from .models import (Enseignant, Domaine, Competence, SousCompetence, Objectif, Ressource, Module, Processus) -from .forms import ProcessusAdminForm, ModuleAdminForm, DomaineAdminForm +from .forms import (ProcessusAdminForm, ModuleAdminForm, DomaineAdminForm, CompetenceAdminForm, +SousCompetenceInlineAdminForm, CompetenceInlineAdminForm, ObjectifAdminForm, RessourceAdminForm, +SousCompetenceAdminForm) # Register your models here. class SousCompetenceInline(admin.TabularInline): + form = SousCompetenceInlineAdminForm model = SousCompetence extra = 0 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 + + + + class RessourceAdmin(admin.ModelAdmin): + form = RessourceAdminForm list_display = ('nom', 'module') @@ -26,12 +37,18 @@ class ModuleAdmin(admin.ModelAdmin): class ProcessusAdmin(admin.ModelAdmin): form = ProcessusAdminForm + +class ObjectifAdmin(admin.ModelAdmin): + form = ObjectifAdminForm + + class ProcessusAdminInline(admin.TabularInline): model = Processus extra=0 class CompetenceAdmin(admin.ModelAdmin): + form = CompetenceAdminForm list_display = ('code', 'nom', 'module') list_editable = ('module',) inlines = (SousCompetenceInline,) @@ -46,8 +63,8 @@ class DomaineAdmin(admin.ModelAdmin): admin.site.register(Enseignant) admin.site.register(Domaine, DomaineAdmin) admin.site.register(Competence, CompetenceAdmin) -admin.site.register(SousCompetence) -admin.site.register(Objectif) +admin.site.register(SousCompetence, SousCompetenceAdmin) +admin.site.register(Objectif, ObjectifAdmin) admin.site.register(Ressource, RessourceAdmin) admin.site.register(Module, ModuleAdmin) admin.site.register(Processus, ProcessusAdmin) diff --git a/cms/forms.py b/cms/forms.py index ec95593..22e91ba 100644 --- a/cms/forms.py +++ b/cms/forms.py @@ -4,7 +4,7 @@ Created on 17 nov. 2012 @author: alzo ''' -from .models import Processus, Module, Domaine +from .models import Processus, Module, Domaine, Competence, SousCompetence from django import forms from django.contrib import admin @@ -14,7 +14,8 @@ from _collections_abc import __all__ class DocumentForm(forms.Form): docfile = forms.FileField(label='Selectionner un fichier', help_text='Taille max.: 42 megabytes') - + + class ProcessusAdminForm(forms.ModelForm): def __init__(self, *args, **kwargs): @@ -25,7 +26,8 @@ class ProcessusAdminForm(forms.ModelForm): model = Processus fields = ('code', 'nom', 'domaine', 'description') widgets = { - 'nom': forms.Textarea(attrs={'cols': 75, 'rows':2}), + 'nom': forms.Textarea(attrs={'cols': 125, 'rows':2}), + 'description': forms.Textarea(attrs={'cols': 125, 'rows':8}), } class DomaineAdminForm(forms.ModelForm): @@ -37,9 +39,89 @@ class DomaineAdminForm(forms.ModelForm): model = Domaine fields = ('code', 'nom', 'responsable') widgets = { - 'nom': forms.Textarea(attrs={'cols': 75, 'rows':2}), + 'nom': forms.Textarea(attrs={'cols': 125, 'rows':2}), } - + +class CompetenceAdminForm(forms.ModelForm): + + def __init__(self, *args, **kwargs): + super(CompetenceAdminForm, self).__init__(*args, **kwargs) + + class Meta: + model = Competence + 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__') + widgets = { + 'code': forms.Textarea(attrs={'cols': 5, 'rows':1}), + 'nom': forms.Textarea(attrs={'cols': 125, 'rows':2}), + } + + +class SousCompetenceInlineAdminForm(forms.ModelForm): + + def __init__(self, *args, **kwargs): + super(SousCompetenceInlineAdminForm, self).__init__(*args, **kwargs) + + class Meta: + model = SousCompetence + fields = ('__all__') + widgets = { + 'code': forms.Textarea(attrs={'cols': 5, 'rows':1}), + 'nom': forms.Textarea(attrs={'cols': 125, 'rows':1}), + } + + +class ObjectifAdminForm(forms.ModelForm): + + def __init__(self, *args, **kwargs): + super(ObjectifAdminForm, self).__init__(*args, **kwargs) + + class Meta: + model = SousCompetence + fields = ('__all__') + widgets = { + 'nom': forms.Textarea(attrs={'cols': 125, 'rows':2}), + } + + +class RessourceAdminForm(forms.ModelForm): + + def __init__(self, *args, **kwargs): + super(RessourceAdminForm, self).__init__(*args, **kwargs) + + class Meta: + model = SousCompetence + fields = ('__all__') + widgets = { + 'nom': forms.Textarea(attrs={'cols': 125, 'rows':3}), + } + + class ModuleAdminForm(forms.ModelForm): def __init__(self, *args, **kwargs): @@ -50,11 +132,11 @@ class ModuleAdminForm(forms.ModelForm): model = Module fields = ('__all__') widgets = { - 'nom': forms.Textarea(attrs={'cols': 73, 'rows':2}), - 'description': forms.Textarea(attrs={'cols': 73, 'rows':4}), - 'situation': forms.Textarea(attrs={'cols': 73, 'rows':6}), - 'contenu': forms.Textarea(attrs={'cols': 73, 'rows':4}), - 'didactique': forms.Textarea(attrs={'cols': 73, 'rows':4}), - 'evaluation': forms.Textarea(attrs={'cols': 73, 'rows':2}), + 'nom': forms.Textarea(attrs={'cols': 125, 'rows':2}), + 'description': forms.Textarea(attrs={'cols': 125, 'rows':4}), + 'situation': forms.Textarea(attrs={'cols': 125, 'rows':6}), + 'contenu': forms.Textarea(attrs={'cols': 125, 'rows':4}), + 'didactique': forms.Textarea(attrs={'cols': 125, 'rows':2}), + 'evaluation': forms.Textarea(attrs={'cols': 125, 'rows':2}), } \ No newline at end of file diff --git a/cms/migrations/0017_auto_20170308_0437.py b/cms/migrations/0017_auto_20170308_0437.py new file mode 100644 index 0000000..784ddb6 --- /dev/null +++ b/cms/migrations/0017_auto_20170308_0437.py @@ -0,0 +1,30 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.10.4 on 2017-03-08 03:37 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('cms', '0016_remove_module_description'), + ] + + operations = [ + migrations.AlterField( + model_name='module', + name='periode_presentiel', + field=models.IntegerField(verbose_name='Période en présentiel'), + ), + migrations.AlterField( + model_name='module', + name='pratique_prof', + field=models.IntegerField(default=0, verbose_name='Pratique professionnelle'), + ), + migrations.AlterField( + model_name='module', + name='travail_perso', + field=models.IntegerField(verbose_name='Travail personnel'), + ), + ] diff --git a/cms/models.py b/cms/models.py index 07d7b9a..e2709dc 100644 --- a/cms/models.py +++ b/cms/models.py @@ -107,9 +107,9 @@ class Module(models.Model): situation = models.TextField() evaluation = models.TextField() contenu = models.TextField() - periode_presentiel = models.IntegerField() - travail_perso = models.IntegerField() - pratique_prof = models.IntegerField(default=0) + 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) diff --git a/templates/cms/404.html b/templates/cms/404.html new file mode 100644 index 0000000..e508b42 --- /dev/null +++ b/templates/cms/404.html @@ -0,0 +1,25 @@ +{% extends "./base_site.html" %} +{% load i18n static %} + +{% block extrastyle %}{{ block.super }} +{% endblock %} + +{% block coltype %}colMS{% endblock %} + +{% block bodyclass %}{{ block.super }} dashboard{% endblock %} + +{% block breadcrumbs %} + + {% endblock %} + +{% block content %} + +
+Page non trouvée +
+{% endblock %} + + diff --git a/templates/cms/domaine_detail.html b/templates/cms/domaine_detail.html index a40b273..0b62d0b 100644 --- a/templates/cms/domaine_detail.html +++ b/templates/cms/domaine_detail.html @@ -8,7 +8,7 @@ {% block content %}
-

Domaine: {{object.code}} - {{object.libelle}}

+

Domaine: {{object}}

{% for p in object.processus_set.all %}

Processus: {{ p.url|safe }}

{% for m in p.module_set.all %} From 9f5bfa6f86a80cc3002c71c5712b47835cf66af5 Mon Sep 17 00:00:00 2001 From: alazo Date: Wed, 8 Mar 2017 04:52:47 +0100 Subject: [PATCH 5/5] Processus inline --- cms/admin.py | 7 ++++--- cms/forms.py | 14 ++++++++++++++ 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/cms/admin.py b/cms/admin.py index 8d293a2..f5c626e 100644 --- a/cms/admin.py +++ b/cms/admin.py @@ -1,7 +1,7 @@ from django.contrib import admin from .models import (Enseignant, Domaine, Competence, SousCompetence, Objectif, Ressource, Module, Processus) -from .forms import (ProcessusAdminForm, ModuleAdminForm, DomaineAdminForm, CompetenceAdminForm, +from .forms import (ProcessusAdminForm, ProcessusInlineAdminForm, ModuleAdminForm, DomaineAdminForm, CompetenceAdminForm, SousCompetenceInlineAdminForm, CompetenceInlineAdminForm, ObjectifAdminForm, RessourceAdminForm, SousCompetenceAdminForm) # Register your models here. @@ -42,7 +42,8 @@ class ObjectifAdmin(admin.ModelAdmin): form = ObjectifAdminForm -class ProcessusAdminInline(admin.TabularInline): +class ProcessusInlineAdmin(admin.TabularInline): + form = ProcessusInlineAdminForm model = Processus extra=0 @@ -57,7 +58,7 @@ class CompetenceAdmin(admin.ModelAdmin): class DomaineAdmin(admin.ModelAdmin): list_display = ('nom', 'responsable',) form = DomaineAdminForm - inlines = [ProcessusAdminInline,] + inlines = [ProcessusInlineAdmin,] admin.site.register(Enseignant) diff --git a/cms/forms.py b/cms/forms.py index 22e91ba..f2d7c27 100644 --- a/cms/forms.py +++ b/cms/forms.py @@ -96,6 +96,20 @@ class SousCompetenceInlineAdminForm(forms.ModelForm): } +class ProcessusInlineAdminForm(forms.ModelForm): + + def __init__(self, *args, **kwargs): + super(ProcessusInlineAdminForm, self).__init__(*args, **kwargs) + + class Meta: + model = SousCompetence + 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):