aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlban Gruin2018-04-15 19:30:52 +0200
committerAlban Gruin2018-04-15 19:30:52 +0200
commited1abe16a35d5ea5cea1106f97c6dc08bfd5265c (patch)
tree7ea3334fed81a46e5113d16c63991d072b364048
parent305902a22e82cf68cd6b84e4f58ae42bdbb24b83 (diff)
urls: utilisation de la nouvelle syntaxe path de Django
Mise à jour de la doc, nouvelles protections dans timetable_common()
-rw-r--r--README.md12
-rw-r--r--urls.py32
-rw-r--r--views.py5
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 <http://www.gnu.org/licenses/>.
-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<room_slug>[-\w]+)/$", views.room_timetable, name="room-timetable"),
- url(r"^salles/(?P<room_slug>[-\w]+)/(?P<year>[0-9]{4})/(?P<week>[0-4]?[0-9]|5[0-3])$", views.room_timetable, name="room-timetable"),
- url(r"^(?P<year_slug>[-\w]+)/$", views.mention_list, name="mentions"),
- url(r"^(?P<year_slug>[-\w]+)/(?P<timetable_slug>[-\w]+)/$", views.group_list, name="groups"),
- url(r"^(?P<year_slug>[-\w]+)/(?P<timetable_slug>[-\w]+)/(?P<group_slug>[-\w]+)/$", views.timetable, name="timetable"),
- url(r"^(?P<year_slug>[-\w]+)/(?P<timetable_slug>[-\w]+)/(?P<group_slug>[-\w]+)/calendars", views.calendars, name="calendars"),
- url(r"^(?P<year_slug>[-\w]+)/(?P<timetable_slug>[-\w]+)/(?P<group_slug>[-\w]+)/calendar.ics$", feeds.IcalFeed(), name="ics"),
- url(r"^(?P<year_slug>[-\w]+)/(?P<timetable_slug>[-\w]+)/(?P<group_slug>[-\w]+)/calendar-group.ics$", feeds.IcalOnlyOneFeed(), name="ics-group"),
- url(r"^(?P<year_slug>[-\w]+)/(?P<timetable_slug>[-\w]+)/(?P<group_slug>[-\w]+)/feed.atom$", feeds.AtomFeed(), name="atom"),
- url(r"^(?P<year_slug>[-\w]+)/(?P<timetable_slug>[-\w]+)/(?P<group_slug>[-\w]+)/feed.rss$", feeds.RSSFeed(), name="rss"),
- url(r"^(?P<year_slug>[-\w]+)/(?P<timetable_slug>[-\w]+)/(?P<group_slug>[-\w]+)/(?P<year>[0-9]{4})/(?P<week>[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/<slug:room_slug>/", views.room_timetable, name="room-timetable"),
+ path("salles/<slug:room_slug>/<int:year>/<int:week>", views.room_timetable, name="room-timetable"),
+ path("<slug:year_slug>/", views.mention_list, name="mentions"),
+ path("<slug:year_slug>/<slug:timetable_slug>/", views.group_list, name="groups"),
+ path("<slug:year_slug>/<slug:timetable_slug>/<slug:group_slug>/", views.timetable, name="timetable"),
+ path("<slug:year_slug>/<slug:timetable_slug>/<slug:group_slug>/calendars", views.calendars, name="calendars"),
+ path("<slug:year_slug>/<slug:timetable_slug>/<slug:group_slug>/calendar.ics", feeds.IcalFeed(), name="ics"),
+ path("<slug:year_slug>/<slug:timetable_slug>/<slug:group_slug>/calendar-group.ics", feeds.IcalOnlyOneFeed(), name="ics-group"),
+ path("<slug:year_slug>/<slug:timetable_slug>/<slug:group_slug>/feed.atom", feeds.AtomFeed(), name="atom"),
+ path("<slug:year_slug>/<slug:timetable_slug>/<slug:group_slug>/feed.rss", feeds.RSSFeed(), name="rss"),
+ path("<slug:year_slug>/<slug:timetable_slug>/<slug:group_slug>/<int:year>/<int:week>/", 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: