From 7855fc164a16e0303f3d9aa7ee5c2ee9c719b4de Mon Sep 17 00:00:00 2001 From: Alban Gruin Date: Wed, 18 Jan 2017 22:22:22 +0100 Subject: Ajout de la commande pour charger et enregistrer les données --- management/commands/timetables.py | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 management/commands/timetables.py (limited to 'management/commands/timetables.py') diff --git a/management/commands/timetables.py b/management/commands/timetables.py new file mode 100644 index 0000000..58897a1 --- /dev/null +++ b/management/commands/timetables.py @@ -0,0 +1,38 @@ +from django.core.management.base import BaseCommand, CommandError +from django.utils import timezone +from edt.models import Group, Room, Course + +from bs4 import BeautifulSoup + +from ._private import get_events, get_weeks, get_xml, Week + +import datetime +import requests + +class Command(BaseCommand): + help = "Fetches the specified celcat timetable" + + def add_arguments(self, parser): + parser.add_argument("url", type=str) + + def handle(self, *args, **options): + url = options["url"] + + _, week, day = timezone.now().isocalendar() + if day >= 6: + _, week, _ = (timezone.now() + datetime.timedelta(weeks=1)).isocalendar() + + soup = get_xml(url) + weeks = get_weeks(soup) + + for name, type_, groups, rooms, begin, end in get_events(soup, weeks, week): + + course = Course.objects.create(begin=begin, end=end) + + course.name = name + course.type = type_ + course.groups.add(*groups) + course.rooms.add(*rooms) + course.save() + + self.stdout.write(self.style.SUCCESS("Done.")) -- cgit v1.2.1