From c569e9f3a52ff6adff8f6caae48f8a2cd4d7e987 Mon Sep 17 00:00:00 2001 From: Claude Paroz Date: Wed, 30 Aug 2017 17:58:53 +0200 Subject: [PATCH] Moved teacher max periods to settings --- common/settings.py | 4 ++++ stages/models.py | 10 +++++----- stages/tests.py | 21 +++++++++++---------- 3 files changed, 20 insertions(+), 15 deletions(-) diff --git a/common/settings.py b/common/settings.py index ec5c2a0..5096813 100644 --- a/common/settings.py +++ b/common/settings.py @@ -151,6 +151,10 @@ INSTRUCTOR_IMPORT_MAPPING = { CHARGE_SHEET_TITLE = "Feuille de charge pour l'année scolaire 2017-2018" +# Maximum numbers of periods per teacher per year +MAX_ENS_PERIODS = 1900 +MAX_ENS_FORMATION = 250 + if 'TRAVIS' in os.environ: SECRET_KEY = 'secretkeyfortravistests' STATICFILES_STORAGE = 'django.contrib.staticfiles.storage.StaticFilesStorage' diff --git a/stages/models.py b/stages/models.py index 3b95bd1..15cfba3 100644 --- a/stages/models.py +++ b/stages/models.py @@ -2,6 +2,7 @@ import json from collections import OrderedDict from datetime import date, timedelta +from django.conf import settings from django.db import models from . import utils @@ -65,9 +66,6 @@ class Teacher(models.Model): next_report = models.IntegerField(default=0, verbose_name='Report suivant') archived = models.BooleanField(default=False) - MAX_ENS_PERIODS = 1900 - MAX_FORMATION = 250 - class Meta: verbose_name='Enseignant' ordering = ('last_name', 'first_name') @@ -85,10 +83,12 @@ class Teacher(models.Model): tot_mandats = mandats.aggregate(models.Sum('period'))['period__sum'] or 0 tot_ens = ens.aggregate(models.Sum('period'))['period__sum'] or 0 # formation periods calculated at pro-rata of total charge - tot_formation = int(round((tot_mandats + tot_ens) / self.MAX_ENS_PERIODS * self.MAX_FORMATION)) + tot_formation = int(round( + (tot_mandats + tot_ens) / settings.MAX_ENS_PERIODS * settings.MAX_ENS_FORMATION + )) tot_trav = self.previous_report + tot_mandats + tot_ens + tot_formation tot_paye = tot_trav - max_periods = self.MAX_ENS_PERIODS + self.MAX_FORMATION + max_periods = settings.MAX_ENS_PERIODS + settings.MAX_ENS_FORMATION # Special situations triggering reporting (positive or negative) hours for next year: # - full-time teacher with a total charge under 100% # - teachers with a total charge over 100% diff --git a/stages/tests.py b/stages/tests.py index e1e2f7d..31a7616 100644 --- a/stages/tests.py +++ b/stages/tests.py @@ -2,6 +2,7 @@ import json import os from datetime import date +from django.conf import settings from django.contrib.auth.models import User from django.test import TestCase, override_settings from django.urls import reverse @@ -224,31 +225,31 @@ class TeacherTests(TestCase): self.teacher.rate = 100.0 self.teacher.save() crs = Course.objects.create( - teacher=self.teacher, period=Teacher.MAX_ENS_PERIODS - 4, subject='Cours principal', imputation='ASSCFE', + teacher=self.teacher, period=settings.MAX_ENS_PERIODS - 4, subject='Cours principal', imputation='ASSCFE', ) effective = self.teacher.calc_activity() del effective['mandats'] self.assertEqual(effective, { 'tot_mandats': 8, - 'tot_ens': Teacher.MAX_ENS_PERIODS, - 'tot_formation': Teacher.MAX_FORMATION + 1, - 'tot_trav': Teacher.MAX_ENS_PERIODS + Teacher.MAX_FORMATION + 1 + 8, - 'tot_paye': Teacher.MAX_ENS_PERIODS + Teacher.MAX_FORMATION, + 'tot_ens': settings.MAX_ENS_PERIODS, + 'tot_formation': settings.MAX_ENS_FORMATION + 1, + 'tot_trav': settings.MAX_ENS_PERIODS + settings.MAX_ENS_FORMATION + 1 + 8, + 'tot_paye': settings.MAX_ENS_PERIODS + settings.MAX_ENS_FORMATION, 'report': 8 + 1, }) self.assertEqual(self.teacher.next_report, 8 + 1) # Test below max hours per year for a full time - crs.period = Teacher.MAX_ENS_PERIODS - 4 - 10 + crs.period = settings.MAX_ENS_PERIODS - 4 - 10 crs.save() effective = self.teacher.calc_activity() del effective['mandats'] self.assertEqual(effective, { 'tot_mandats': 8, - 'tot_ens': Teacher.MAX_ENS_PERIODS - 10, - 'tot_formation': Teacher.MAX_FORMATION, - 'tot_trav': Teacher.MAX_ENS_PERIODS + Teacher.MAX_FORMATION + 8 - 10, - 'tot_paye': Teacher.MAX_ENS_PERIODS + Teacher.MAX_FORMATION, + 'tot_ens': settings.MAX_ENS_PERIODS - 10, + 'tot_formation': settings.MAX_ENS_FORMATION, + 'tot_trav': settings.MAX_ENS_PERIODS + settings.MAX_ENS_FORMATION + 8 - 10, + 'tot_paye': settings.MAX_ENS_PERIODS + settings.MAX_ENS_FORMATION, 'report': -2, }) self.assertEqual(self.teacher.next_report, -2)