From 90414449f9f74b675d3793c2c48a796f9bfe4b29 Mon Sep 17 00:00:00 2001
From: Alban Gruin
Date: Mon, 27 Nov 2017 17:14:14 +0100
Subject: Adaptation de la commande de mise à jour des emplois du temps aux
changements effectués sur la structure de la base de données
---
management/commands/_private.py | 16 ++++++++--------
1 file changed, 8 insertions(+), 8 deletions(-)
(limited to 'management/commands/_private.py')
diff --git a/management/commands/_private.py b/management/commands/_private.py
index 4dd9262..171b6e9 100644
--- a/management/commands/_private.py
+++ b/management/commands/_private.py
@@ -19,7 +19,7 @@ import re
from bs4 import BeautifulSoup
from django.utils import timezone
-from edt.models import Group, Room, Course
+from edt.models import Course, Group, Room
from edt.utils import get_week
import requests
@@ -30,10 +30,10 @@ def add_time(date, time):
delta = datetime.timedelta(hours=ptime.hour, minutes=ptime.minute)
return date + delta
-def delete_courses_in_week(timetable, year, week, today):
+def delete_courses_in_week(source, year, week, today):
start, end = get_week(year, week)
Course.objects.filter(begin__gte=max(start, today), begin__lt=end,
- timetable=timetable).delete()
+ source=source).delete()
def get_from_db_or_create(cls, **kwargs):
obj = cls.objects.all().filter(**kwargs)
@@ -45,7 +45,7 @@ def get_from_db_or_create(cls, **kwargs):
return obj
-def get_event(timetable, event, event_week, today):
+def get_event(source, event, event_week, today):
"""Renvoie une classe Course à partir d’un événement récupéré par BS4"""
# On récupère la date de l’évènement à partir de la semaine
# et de la semaine référencée, puis l’heure de début et de fin
@@ -58,10 +58,10 @@ def get_event(timetable, event, event_week, today):
return
# Création de l’objet cours
- course = Course.objects.create(timetable=timetable, begin=begin, end=end)
+ course = Course.objects.create(source=source, begin=begin, end=end)
# On récupère les groupes concernés par les cours
- groups = [get_from_db_or_create(Group, timetable=timetable,
+ groups = [get_from_db_or_create(Group, source=source,
celcat_name=item.text)
for item in event.resources.group.find_all("item")]
course.groups.add(*groups)
@@ -96,7 +96,7 @@ def get_event(timetable, event, event_week, today):
return course
-def get_events(timetable, soup, weeks_in_soup, today, year=None, week=None):
+def get_events(source, soup, weeks_in_soup, today, year=None, week=None):
"""Récupère tous les cours disponibles dans l’emploi du temps Celcat.
Le traîtement se limitera à la semaine indiquée si il y en a une."""
for event in soup.find_all("event"):
@@ -110,7 +110,7 @@ def get_events(timetable, soup, weeks_in_soup, today, year=None, week=None):
year is None or week is None) and \
event.resources.group is not None and \
event.starttime is not None and event.endtime is not None:
- course = get_event(timetable, event, event_week, today)
+ course = get_event(source, event, event_week, today)
# On renvoie le cours si il n’est pas nul
if course is not None:
--
cgit v1.2.1
From 81cb9b8c6a96fa8529c6d7f6ca55dfd56a1f2e5d Mon Sep 17 00:00:00 2001
From: Alban Gruin
Date: Thu, 11 Jan 2018 14:09:33 +0100
Subject: On remplace les
dans le champ remarque par des retours à la
ligne lors du parsage, puis on les remplace à nouveau par des
lors du
rendu des templates.
---
management/commands/_private.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
(limited to 'management/commands/_private.py')
diff --git a/management/commands/_private.py b/management/commands/_private.py
index 171b6e9..0a3d5fb 100644
--- a/management/commands/_private.py
+++ b/management/commands/_private.py
@@ -68,7 +68,7 @@ def get_event(source, event, event_week, today):
# On récupère le champ « remarque »
if event.notes is not None:
- course.notes = event.notes.text
+ course.notes = "\n".join(event.notes.find_all(text=True))
# On récupère le champ « nom »
if event.resources.module is not None:
--
cgit v1.2.1
From 76fef8f3e0b3ad77f632a9e4d2c048607a1cf21b Mon Sep 17 00:00:00 2001
From: Alban Gruin
Date: Thu, 18 Jan 2018 13:42:49 +0100
Subject: Mise à jour des copyrights
---
management/commands/_private.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
(limited to 'management/commands/_private.py')
diff --git a/management/commands/_private.py b/management/commands/_private.py
index 0a3d5fb..e78c3c2 100644
--- a/management/commands/_private.py
+++ b/management/commands/_private.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2017 Alban Gruin
+# Copyright (C) 2017-2018 Alban Gruin
#
# celcatsanitizer is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published
--
cgit v1.2.1
From c9388e29b2f9ee18a9e190683a8a33fb710684c5 Mon Sep 17 00:00:00 2001
From: Alban Gruin
Date: Sat, 27 Jan 2018 17:56:45 +0100
Subject: PEP8
---
management/commands/_private.py | 14 +++++++++++---
1 file changed, 11 insertions(+), 3 deletions(-)
(limited to 'management/commands/_private.py')
diff --git a/management/commands/_private.py b/management/commands/_private.py
index e78c3c2..bac749b 100644
--- a/management/commands/_private.py
+++ b/management/commands/_private.py
@@ -25,16 +25,19 @@ from edt.utils import get_week
import requests
import edt
+
def add_time(date, time):
ptime = datetime.datetime.strptime(time, "%H:%M")
delta = datetime.timedelta(hours=ptime.hour, minutes=ptime.minute)
return date + delta
+
def delete_courses_in_week(source, year, week, today):
start, end = get_week(year, week)
Course.objects.filter(begin__gte=max(start, today), begin__lt=end,
source=source).delete()
+
def get_from_db_or_create(cls, **kwargs):
obj = cls.objects.all().filter(**kwargs)
@@ -45,6 +48,7 @@ def get_from_db_or_create(cls, **kwargs):
return obj
+
def get_event(source, event, event_week, today):
"""Renvoie une classe Course à partir d’un événement récupéré par BS4"""
# On récupère la date de l’évènement à partir de la semaine
@@ -96,17 +100,18 @@ def get_event(source, event, event_week, today):
return course
+
def get_events(source, soup, weeks_in_soup, today, year=None, week=None):
"""Récupère tous les cours disponibles dans l’emploi du temps Celcat.
Le traîtement se limitera à la semaine indiquée si il y en a une."""
for event in soup.find_all("event"):
event_week = weeks_in_soup[event.rawweeks.text]
- event_week_num = event_week.isocalendar()[1] # Numéro de semaine
+ event_week_num = event_week.isocalendar()[1] # Numéro de semaine
# On passe le traitement si la semaine de l’événement ne correspond pas
# à la semaine passée, ou qu’il ne contient pas de groupe ou n’a pas de
# date de début ou de fin.
- if (event_week_num == week and event_week.year == year or \
+ if (event_week_num == week and event_week.year == year or
year is None or week is None) and \
event.resources.group is not None and \
event.starttime is not None and event.endtime is not None:
@@ -116,6 +121,7 @@ def get_events(source, soup, weeks_in_soup, today, year=None, week=None):
if course is not None:
yield course
+
def get_update_date(soup):
# Explication de la regex
#
@@ -140,6 +146,7 @@ def get_update_date(soup):
date = datetime.datetime(year, month, day, hour, minute, second)
return timezone.make_aware(date)
+
def get_weeks(soup):
# Les semaines sont référencées de manière assez… exotique
# En gros, il y a une liste d’éléments span qui contiennent une sorte d’ID
@@ -151,13 +158,14 @@ def get_weeks(soup):
# Un cours contient donc un ID de semaine, puis le nombre de jours après le
# début de cette semaine.
weeks = {}
- for span in soup.find_all("span"): # Liste de toutes les semaines définies
+ for span in soup.find_all("span"): # Liste de toutes les semaines définies
# On parse la date et on la fait correspondre à l’ID
weeks[span.alleventweeks.text] = timezone.make_aware(
datetime.datetime.strptime(span["date"], "%d/%m/%Y"))
return weeks
+
def get_xml(url):
user_agent = "celcatsanitizer/" + edt.VERSION
req = requests.get(url, headers={"User-Agent": user_agent})
--
cgit v1.2.1
From aab8372b27c27becbdf875d6c30fa49ea218abf4 Mon Sep 17 00:00:00 2001
From: Alban Gruin
Date: Sun, 28 Jan 2018 11:20:49 +0100
Subject: Remplacement de la fonction get_from_db_or_create() par
objects.get_or_create()
---
management/commands/_private.py | 17 +++--------------
1 file changed, 3 insertions(+), 14 deletions(-)
(limited to 'management/commands/_private.py')
diff --git a/management/commands/_private.py b/management/commands/_private.py
index bac749b..0f87179 100644
--- a/management/commands/_private.py
+++ b/management/commands/_private.py
@@ -38,17 +38,6 @@ def delete_courses_in_week(source, year, week, today):
source=source).delete()
-def get_from_db_or_create(cls, **kwargs):
- obj = cls.objects.all().filter(**kwargs)
-
- obj = obj.first()
- if obj is None:
- obj = cls(**kwargs)
- obj.save()
-
- return obj
-
-
def get_event(source, event, event_week, today):
"""Renvoie une classe Course à partir d’un événement récupéré par BS4"""
# On récupère la date de l’évènement à partir de la semaine
@@ -65,8 +54,8 @@ def get_event(source, event, event_week, today):
course = Course.objects.create(source=source, begin=begin, end=end)
# On récupère les groupes concernés par les cours
- groups = [get_from_db_or_create(Group, source=source,
- celcat_name=item.text)
+ groups = [Group.objects.get_or_create(source=source,
+ celcat_name=item.text)[0]
for item in event.resources.group.find_all("item")]
course.groups.add(*groups)
@@ -94,7 +83,7 @@ def get_event(source, event, event_week, today):
# en ait pas… qui sont ils, leurs réseaux, tout ça…), on les insère
# dans la base de données, et on les ajoute dans l’objet cours
if event.resources.room is not None:
- rooms = [get_from_db_or_create(Room, name=item.text)
+ rooms = [Room.objects.get_or_create(name=item.text)[0]
for item in event.resources.room.find_all("item")]
course.rooms.add(*rooms)
--
cgit v1.2.1
From 37d80d84d8ce6cb0a17a0e4179e4c7a453f7fcc2 Mon Sep 17 00:00:00 2001
From: Alban Gruin
Date: Sun, 28 Jan 2018 11:26:56 +0100
Subject: Remplacement de l’arithmétique de date et heure par
datetime.combine()
---
management/commands/_private.py | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
(limited to 'management/commands/_private.py')
diff --git a/management/commands/_private.py b/management/commands/_private.py
index 0f87179..4e35990 100644
--- a/management/commands/_private.py
+++ b/management/commands/_private.py
@@ -28,8 +28,7 @@ import edt
def add_time(date, time):
ptime = datetime.datetime.strptime(time, "%H:%M")
- delta = datetime.timedelta(hours=ptime.hour, minutes=ptime.minute)
- return date + delta
+ return datetime.datetime.combine(date, ptime)
def delete_courses_in_week(source, year, week, today):
--
cgit v1.2.1
From ca745d43066dcc1b9f8abd9e242f6af164630b94 Mon Sep 17 00:00:00 2001
From: Alban Gruin
Date: Sun, 28 Jan 2018 11:54:06 +0100
Subject: Revert "Remplacement de l’arithmétique de date et heure par
datetime.combine()"
This reverts commit 37d80d84d8ce6cb0a17a0e4179e4c7a453f7fcc2.
---
management/commands/_private.py | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
(limited to 'management/commands/_private.py')
diff --git a/management/commands/_private.py b/management/commands/_private.py
index 4e35990..0f87179 100644
--- a/management/commands/_private.py
+++ b/management/commands/_private.py
@@ -28,7 +28,8 @@ import edt
def add_time(date, time):
ptime = datetime.datetime.strptime(time, "%H:%M")
- return datetime.datetime.combine(date, ptime)
+ delta = datetime.timedelta(hours=ptime.hour, minutes=ptime.minute)
+ return date + delta
def delete_courses_in_week(source, year, week, today):
--
cgit v1.2.1
From 9b312281e0f2a9668ab90d77f212c9618daec7db Mon Sep 17 00:00:00 2001
From: Alban Gruin
Date: Sat, 10 Feb 2018 15:13:20 +0100
Subject: Correction des imports
---
management/commands/_private.py | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
(limited to 'management/commands/_private.py')
diff --git a/management/commands/_private.py b/management/commands/_private.py
index 0f87179..94c1918 100644
--- a/management/commands/_private.py
+++ b/management/commands/_private.py
@@ -19,8 +19,8 @@ import re
from bs4 import BeautifulSoup
from django.utils import timezone
-from edt.models import Course, Group, Room
-from edt.utils import get_week
+from ...models import Course, Group, Room
+from ...utils import get_week
import requests
import edt
--
cgit v1.2.1