Move computing of start of semester to core/utils

Signed-off-by: Skia <skia@libskia.so>
This commit is contained in:
Skia 2017-06-12 22:53:25 +02:00
parent a96efafc8e
commit 5df9be9188
2 changed files with 30 additions and 13 deletions

View File

@ -27,11 +27,38 @@ import re
# Image utils
from io import BytesIO
from datetime import datetime, timezone, date
from PIL import Image, ExifTags
# from exceptions import IOError
import PIL
from django.conf import settings
from django.core.files.base import ContentFile
def get_start_of_semester(d=date.today()):
"""
This function computes the start date of the semester with respect to the given date (default is today),
and the start date given in settings.SITH_START_DATE.
It takes the nearest past start date.
Exemples: with SITH_START_DATE = (8, 15)
Today -> Start date
2015-03-17 -> 2015-02-15
2015-01-11 -> 2014-08-15
"""
today = d
year = today.year
start = date(year, settings.SITH_START_DATE[0], settings.SITH_START_DATE[1])
start2 = start.replace(month=(start.month+6)%12)
if start > start2:
start, start2 = start2, start
if today < start:
return start2.replace(year=year-1)
elif today < start2:
return start
else:
return start2
def scale_dimension(width, height, long_edge):
if width > height:
ratio = long_edge * 1. / width

View File

@ -32,6 +32,7 @@ from django.core.urlresolvers import reverse
from django.contrib.auth.forms import PasswordResetForm
from core.models import User
from core.utils import get_start_of_semester
@ -147,18 +148,7 @@ class Subscription(models.Model):
"""
if duration <= 2: # Sliding subscriptions for 1 or 2 semesters
return d
today = d
year = today.year
start = date(year, settings.SITH_START_DATE[0], settings.SITH_START_DATE[1])
start2 = start.replace(month=(start.month+6)%12)
if start > start2:
start, start2 = start2, start
if today < start:
return start2.replace(year=year-1)
elif today < start2:
return start
else:
return start2
return get_start_of_semester(d)
@staticmethod
def compute_end(duration, start=None):