From ed1abe16a35d5ea5cea1106f97c6dc08bfd5265c Mon Sep 17 00:00:00 2001
From: Alban Gruin
Date: Sun, 15 Apr 2018 19:30:52 +0200
Subject: urls: utilisation de la nouvelle syntaxe path de Django
Mise à jour de la doc, nouvelles protections dans timetable_common()
---
README.md | 12 ++++++------
urls.py | 32 ++++++++++++++++----------------
views.py | 5 ++++-
3 files changed, 26 insertions(+), 23 deletions(-)
diff --git a/README.md b/README.md
index f94cbed..b940b9b 100644
--- a/README.md
+++ b/README.md
@@ -10,7 +10,7 @@ d’informations affichées.
## Comment faire tourner celcatsanitizer chez moi ?
celcatsanitizer est écrit en Python 3. Il dépend des bibliothèques
suivantes :
- * [Django 1.11](https://www.djangoproject.com/)
+ * [Django 2.0](https://www.djangoproject.com/)
* [requests](http://docs.python-requests.org/en/master/)
* [BeautifulSoup4](https://www.crummy.com/software/BeautifulSoup/bs4/doc/)
* [icalendar](https://icalendar.readthedocs.io/en/latest/)
@@ -92,19 +92,19 @@ plusieurs informations.
##### Configuration des administrateurs
[Vous pouvez retrouver la documentation de la variable ADMIN sur le
site de
-Django.](https://docs.djangoproject.com/fr/1.11/ref/settings/#admins)
+Django.](https://docs.djangoproject.com/fr/2.0/ref/settings/#admins)
Cette variable est obligatoire.
##### Configuration de l’internationalisation
Ce passage n’est pas obligatoire. [Vous pouvez retrouver la
documentation de l’internationalisation sur le site de
-Django.](https://docs.djangoproject.com/fr/1.11/topics/i18n/)
+Django.](https://docs.djangoproject.com/fr/2.0/topics/i18n/)
##### Configuration de la base de données
[Vous pouvez retrouver la documentation de la base de données sur le
site de
-Django.](https://docs.djangoproject.com/fr/1.11/ref/settings/#databases)
+Django.](https://docs.djangoproject.com/fr/2.0/ref/settings/#databases)
##### Configuration du mode de Django
Si jamais vous utiliser Django en production, vous **devez** mettre la
@@ -118,7 +118,7 @@ INSTALLED_APPS.
celcatsanitizer utilise les flatpages pour rendre les pages
« contact » et « à propos ». Vous pouvez retrouver le guide
d’installation sur [le site de
-Django](https://docs.djangoproject.com/fr/1.11/ref/contrib/flatpages/#installation). Effectuez
+Django](https://docs.djangoproject.com/fr/2.0/ref/contrib/flatpages/#installation). Effectuez
uniquement les deux premières étapes, celcatsanitizer enregistre déjà
une route pour les pages statiques, et la commande de l’étape 4 sera
effectuée plus loin.
@@ -145,7 +145,7 @@ $ ./manage.py migrate
##### Gestion des fichiers statiques
Si vous êtes en production, vous devez renseigner l’emplacement de vos
fichiers statiques dans la variable
-[STATIC_ROOT](https://docs.djangoproject.com/fr/1.11/ref/settings/#std:setting-STATIC_ROOT)
+[STATIC_ROOT](https://docs.djangoproject.com/fr/2.0/ref/settings/#std:setting-STATIC_ROOT)
de la configuration de Django, puis exécuter la commande suivante :
```bash
diff --git a/urls.py b/urls.py
index f24bbba..b61bbbe 100644
--- a/urls.py
+++ b/urls.py
@@ -13,23 +13,23 @@
# You should have received a copy of the GNU Affero General Public License
# along with celcatsanitizer. If not, see .
-from django.conf.urls import include, url
+from django.urls import include, path
from . import feeds, views
urlpatterns = [
- url(r"^$", views.index, name="index"),
- url(r"^pages/", include("django.contrib.flatpages.urls")),
- url(r"^salles/$", views.rooms, name="rooms"),
- url(r"^salles/qsjps$", views.qsjps, name="qsjps"),
- url(r"^salles/(?P[-\w]+)/$", views.room_timetable, name="room-timetable"),
- url(r"^salles/(?P[-\w]+)/(?P[0-9]{4})/(?P[0-4]?[0-9]|5[0-3])$", views.room_timetable, name="room-timetable"),
- url(r"^(?P[-\w]+)/$", views.mention_list, name="mentions"),
- url(r"^(?P[-\w]+)/(?P[-\w]+)/$", views.group_list, name="groups"),
- url(r"^(?P[-\w]+)/(?P[-\w]+)/(?P[-\w]+)/$", views.timetable, name="timetable"),
- url(r"^(?P[-\w]+)/(?P[-\w]+)/(?P[-\w]+)/calendars", views.calendars, name="calendars"),
- url(r"^(?P[-\w]+)/(?P[-\w]+)/(?P[-\w]+)/calendar.ics$", feeds.IcalFeed(), name="ics"),
- url(r"^(?P[-\w]+)/(?P[-\w]+)/(?P[-\w]+)/calendar-group.ics$", feeds.IcalOnlyOneFeed(), name="ics-group"),
- url(r"^(?P[-\w]+)/(?P[-\w]+)/(?P[-\w]+)/feed.atom$", feeds.AtomFeed(), name="atom"),
- url(r"^(?P[-\w]+)/(?P[-\w]+)/(?P[-\w]+)/feed.rss$", feeds.RSSFeed(), name="rss"),
- url(r"^(?P[-\w]+)/(?P[-\w]+)/(?P[-\w]+)/(?P[0-9]{4})/(?P[0-4]?[0-9]|5[0-3])/$", views.timetable, name="timetable"),
+ path("", views.index, name="index"),
+ path("pages/", include("django.contrib.flatpages.urls")),
+ path("salles/", views.rooms, name="rooms"),
+ path("salles/qsjps", views.qsjps, name="qsjps"),
+ path("salles//", views.room_timetable, name="room-timetable"),
+ path("salles///", views.room_timetable, name="room-timetable"),
+ path("/", views.mention_list, name="mentions"),
+ path("//", views.group_list, name="groups"),
+ path("///", views.timetable, name="timetable"),
+ path("///calendars", views.calendars, name="calendars"),
+ path("///calendar.ics", feeds.IcalFeed(), name="ics"),
+ path("///calendar-group.ics", feeds.IcalOnlyOneFeed(), name="ics-group"),
+ path("///feed.atom", feeds.AtomFeed(), name="atom"),
+ path("///feed.rss", feeds.RSSFeed(), name="rss"),
+ path("/////", views.timetable, name="timetable"),
]
diff --git a/views.py b/views.py
index de510a3..ebcf4ff 100644
--- a/views.py
+++ b/views.py
@@ -86,7 +86,10 @@ def timetable_common(request, obj, year=None, week=None, timetable=None):
elif (int(year), int(week)) < (current_year, current_week):
is_old_timetable = True
- start, end = get_week(year, week)
+ try:
+ start, end = get_week(year, week)
+ except ValueError:
+ raise Http404
courses = Course.objects.get_courses(obj, begin__gte=start, begin__lt=end)
if not courses.exists() and provided_week:
--
cgit v1.2.1