Skip to content
Snippets Groups Projects
Commit 834fe513 authored by florimondmanca's avatar florimondmanca
Browse files

make tutoring session times configurable, define settings per-app

parent 8ccd99ee
Branches
No related tags found
No related merge requests found
...@@ -127,11 +127,6 @@ AUTH_PASSWORD_VALIDATORS = [ ...@@ -127,11 +127,6 @@ AUTH_PASSWORD_VALIDATORS = [
# LOGIN_REDIRECT_URL = '/' # LOGIN_REDIRECT_URL = '/'
# LOGOUT_REDIRECT_URL = '/' # LOGOUT_REDIRECT_URL = '/'
# Promotion settings
NUMBER_OF_PROMOTIONS = 10
NEW_PROMOTION_ARRIVAL_MONTH = 9
NEW_PROMOTION_ARRIVAL_DAY = 1
# Internationalization # Internationalization
# https://docs.djangoproject.com/en/1.11/topics/i18n/ # https://docs.djangoproject.com/en/1.11/topics/i18n/
......
"""Persons settings."""
from django.conf import settings
from utils import setdefault
# Tutor.promotion field settings
setdefault(settings, 'NUMBER_OF_PROMOTIONS', 10)
setdefault(settings, 'NEW_PROMOTION_ARRIVAL_MONTH', 9)
setdefault(settings, 'NEW_PROMOTION_ARRIVAL_DAY', 1)
"""Users utilities.""" """Users utilities."""
import datetime import datetime
from django.conf import settings from .conf import settings
def get_promotion_range(date=None): def get_promotion_range(date=None):
......
"""Tutoring settings."""
from django.conf import settings
from utils import setdefault
setdefault(settings, 'DEFAULT_SESSION_START_TIME', (17, 0)) # (h, m)
setdefault(settings, 'DEFAULT_SESSION_END_TIME', (19, 0)) # (h, m)
...@@ -4,6 +4,8 @@ from datetime import datetime, timedelta ...@@ -4,6 +4,8 @@ from datetime import datetime, timedelta
from django.db import models from django.db import models
from django.shortcuts import reverse from django.shortcuts import reverse
from django.template.defaulttags import date as date_tag from django.template.defaulttags import date as date_tag
from .conf import settings
from .validators import uai_code_validator from .validators import uai_code_validator
# Create your models here. # Create your models here.
...@@ -126,14 +128,18 @@ class School(models.Model): ...@@ -126,14 +128,18 @@ class School(models.Model):
def default_start_time(): def default_start_time():
"""Return the default tutoring session start time."""
h, m = settings.DEFAULT_SESSION_START_TIME
now = datetime.now() now = datetime.now()
start = now.replace(hour=17, minute=0, second=0, microsecond=0) start = now.replace(hour=h, minute=m, second=0, microsecond=0)
return (start if start > now else start + timedelta(days=1)).time() return (start if start > now else start + timedelta(days=1)).time()
def default_end_time(): def default_end_time():
"""Return the default tutoring session end time."""
h, m = settings.DEFAULT_SESSION_END_TIME
now = datetime.now() now = datetime.now()
end = now.replace(hour=19, minute=0, second=0, microsecond=0) end = now.replace(hour=h, minute=m, second=0, microsecond=0)
return (end if end > now else end + timedelta(days=1)).time() return (end if end > now else end + timedelta(days=1)).time()
......
...@@ -22,3 +22,14 @@ def modify_fields(**kwargs): ...@@ -22,3 +22,14 @@ def modify_fields(**kwargs):
setattr(cls._meta.get_field(field), prop, val) setattr(cls._meta.get_field(field), prop, val)
return cls return cls
return wrap return wrap
def setdefault(d, attr, default):
"""Set an attribute of an object if not present.
Equivalent of dict's setdefault() but for objects.
Typically used for configuring app settings.
"""
if not hasattr(d, attr):
setattr(d, attr, default)
return d
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment