use proper collection name in breadcrumbs + fixed 404 errors and added redirections for urlbar navigation
authordurandn
Fri, 12 Aug 2016 15:34:43 +0200
changeset 121 1264552829f8
parent 120 340a63d12201
child 122 4fab4a909915
use proper collection name in breadcrumbs + fixed 404 errors and added redirections for urlbar navigation
src/iconolab/templates/errors/404error.html
src/iconolab/templates/partials/header_breadcrumbs.html
src/iconolab/urls.py
src/iconolab/views/iconolab.py
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/iconolab/templates/errors/404error.html	Fri Aug 12 15:34:43 2016 +0200
@@ -0,0 +1,7 @@
+{% extends 'iconolab_base.html' %}
+
+{% block content %}
+
+<h1>Erreur 404: <small>le contenu que vous essayez d'atteindre n'a pas été trouvé</small></h1>
+
+{% endblock %}
\ No newline at end of file
--- a/src/iconolab/templates/partials/header_breadcrumbs.html	Fri Aug 12 14:50:23 2016 +0200
+++ b/src/iconolab/templates/partials/header_breadcrumbs.html	Fri Aug 12 15:34:43 2016 +0200
@@ -2,9 +2,9 @@
 <ol class="breadcrumb">
   <li><a href="{% url 'home' %}">Liste fonds</a></li>
   {% if not image and not item %}
-    <li>Fond {{collection.name}}</li>
+    <li>Fond {{collection.verbose_name}}</li>
   {% else %}
-    <li><a href="{% url 'collection_home' collection.name %}">Fond {{collection.name}}</a></li>
+    <li><a href="{% url 'collection_home' collection.name %}">Fond {{collection.verbose_name}}</a></li>
     {% if not annotation %}
       <li class="active">Objet</li>
     {% else %}
--- a/src/iconolab/urls.py	Fri Aug 12 14:50:23 2016 +0200
+++ b/src/iconolab/urls.py	Fri Aug 12 15:34:43 2016 +0200
@@ -16,6 +16,7 @@
 from django.core.urlresolvers import reverse_lazy
 from django.conf.urls import url, include
 from django.contrib import admin
+from django import views as django_views
 from iconolab import views
 from iconolab.search_indexes.views import IconolabSearchView
 from . import settings
@@ -26,15 +27,19 @@
 import notifications.urls
 
 urlpatterns = [
-    url(r'^$', views.iconolab.RedirectView.as_view(url=reverse_lazy("home"))),
+    url(r'^$', django_views.generic.RedirectView.as_view(url=reverse_lazy("home"))),
     url(r'^admin/', admin.site.urls),
     url(r'^home$', views.iconolab.GlobalHomepageView.as_view(), name="home"),
     url(r'^collections/(?P<collection_name>[a-z0-9\-]+)$', views.iconolab.CollectionHomepageView.as_view(), name='collection_home'), # Home fond
     url(r'^collections/(?P<collection_name>[a-z0-9\-]+)/items/(?P<item_guid>[^/]+)$', views.iconolab.ShowItemView.as_view(), name='item_detail'),
+    url(r'^collections/(?P<collection_name>[a-z0-9\-]+)/items/?$', django_views.generic.RedirectView.as_view(pattern_name="collection_home")),
+    url(r'^collections/(?P<collection_name>[a-z0-9\-]+)/images/?$', django_views.generic.RedirectView.as_view(pattern_name="collection_home")),
     url(r'^collections/(?P<collection_name>[a-z0-9\-]+)/images/(?P<image_guid>[^/]+)$', views.iconolab.ShowImageView.as_view(), name='image_detail'),
+    url(r'^collections/(?P<collection_name>[a-z0-9\-]+)/images/(?P<image_guid>[^/]+)/annotations/?$', django_views.generic.RedirectView.as_view(pattern_name="image_detail")),
     url(r'^collections/(?P<collection_name>[a-z0-9\-]+)/images/(?P<image_guid>[^/]+)/annotations/create$', login_required(views.iconolab.CreateAnnotationView.as_view()), name='annotation_create'),
     url(r'^collections/(?P<collection_name>[a-z0-9\-]+)/images/(?P<image_guid>[^/]+)/annotations/(?P<annotation_guid>[^/]+)/detail$', views.iconolab.ShowAnnotationView.as_view(), name='annotation_detail'),
     url(r'^collections/(?P<collection_name>[a-z0-9\-]+)/images/(?P<image_guid>[^/]+)/annotations/(?P<annotation_guid>[^/]+)/edit$', login_required(views.iconolab.EditAnnotationView.as_view()), name='annotation_edit'),
+    url(r'^collections/(?P<collection_name>[a-z0-9\-]+)/images/(?P<image_guid>[^/]+)/annotations/(?P<annotation_guid>[^/]+)/revisions/?$', django_views.generic.RedirectView.as_view(pattern_name="annotation_detail")),
     url(r'^collections/(?P<collection_name>[a-z0-9\-]+)/images/(?P<image_guid>[^/]+)/annotations/(?P<annotation_guid>[^/]+)/revisions/(?P<revision_guid>[^/]+)/detail', views.iconolab.ShowRevisionView.as_view(), name='revision_detail'),
     url(r'^collections/(?P<collection_name>[a-z0-9\-]+)/images/(?P<image_guid>[^/]+)/annotations/(?P<annotation_guid>[^/]+)/revisions/(?P<revision_guid>[^/]+)/merge$', login_required(views.iconolab.MergeProposalView.as_view()), name='annotation_merge'),
     url(r'^user/(?P<slug>[a-z0-9\-]+)/home/?$', views.iconolab.UserHomeView.as_view(), name="user_home"),
--- a/src/iconolab/views/iconolab.py	Fri Aug 12 14:50:23 2016 +0200
+++ b/src/iconolab/views/iconolab.py	Fri Aug 12 15:34:43 2016 +0200
@@ -2,7 +2,7 @@
 from django.http import Http404
 from django.contrib.auth.decorators import login_required
 from django.contrib.auth.models import User
-from django.views.generic import View, DetailView, RedirectView
+from django.views.generic import View, DetailView, RedirectView, TemplateView
 from django.views.generic.base import ContextMixin
 from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
 from django.core.urlresolvers import reverse
@@ -80,7 +80,7 @@
     def check_kwargs(self, kwargs):
         try:
             collection = Collection.objects.prefetch_related("items", "items__images").get(name=kwargs.get('collection_name'))
-        except Collection.DoesNotExist:
+        except (ValueError, Collection.DoesNotExist):
             return False, RedirectView.as_view(url=reverse('404error'))
         return True, (collection)
     
@@ -102,11 +102,11 @@
     def check_kwargs(self, kwargs):
         try:
             collection = Collection.objects.prefetch_related("items", "items__images").get(name=kwargs.get('collection_name'))
-        except Collection.DoesNotExist:
+        except (ValueError, Collection.DoesNotExist):
             return False, RedirectView.as_view(url=reverse('404error'))
         try:
             item = Item.objects.prefetch_related("images").get(item_guid=kwargs.get('item_guid'))
-        except Item.DoesNotExist:
+        except (ValueError, Item.DoesNotExist):
             return False, RedirectView.as_view(url=reverse('404error'))
         return True, (collection, item)
     
@@ -131,11 +131,11 @@
     def check_kwargs(self, kwargs):
         try:
             collection = Collection.objects.prefetch_related("items", "items__images").get(name=kwargs.get('collection_name'))
-        except Collection.DoesNotExist:
+        except (ValueError, Collection.DoesNotExist):
             return False, RedirectView.as_view(url=reverse('404error'))
         try:
             image = Image.objects.prefetch_related("annotations").get(image_guid=kwargs.get('image_guid'))
-        except Image.DoesNotExist:
+        except (ValueError, Image.DoesNotExist):
             return False, RedirectView.as_view(url=reverse('404error'))
         return True, (collection, image)
     
@@ -163,11 +163,11 @@
     def check_kwargs(self, kwargs):
         try:
             collection = Collection.objects.prefetch_related("items", "items__images").get(name=kwargs.get('collection_name'))
-        except Collection.DoesNotExist:
+        except (ValueError, Collection.DoesNotExist):
             return False, RedirectView.as_view(url=reverse('404error'))
         try:
             image = Image.objects.prefetch_related("annotations").get(image_guid=kwargs.get('image_guid'))
-        except Image.DoesNotExist:
+        except (ValueError, Image.DoesNotExist):
             return False, RedirectView.as_view(url=reverse('404error'))
         return True, (collection, image)
     
@@ -230,15 +230,15 @@
     def check_kwargs(self, kwargs):
         try:
             collection = Collection.objects.prefetch_related("items", "items__images").get(name=kwargs.get('collection_name'))
-        except Collection.DoesNotExist:
+        except (ValueError, Collection.DoesNotExist):
             return False, RedirectView.as_view(url=reverse('404error'))
         try:
             image = Image.objects.prefetch_related("annotations").get(image_guid=kwargs.get('image_guid'))
-        except Image.DoesNotExist:
+        except (ValueError, Image.DoesNotExist):
             return False, RedirectView.as_view(url=reverse('404error'))
         try:
             annotation = Annotation.objects.select_related('current_revision').get(annotation_guid=kwargs.get('annotation_guid'))
-        except Annotation.DoesNotExist:
+        except (ValueError, Annotation.DoesNotExist):
             return False, RedirectView.as_view(url=reverse('404error'))
         return True, (collection, image, annotation)
     
@@ -300,15 +300,15 @@
     def check_kwargs(self, kwargs):
         try:
             collection = Collection.objects.prefetch_related("items", "items__images").get(name=kwargs.get('collection_name'))
-        except Collection.DoesNotExist:
+        except (ValueError, Collection.DoesNotExist):
             return False, RedirectView.as_view(url=reverse('404error'))
         try:
             image = Image.objects.prefetch_related("annotations").get(image_guid=kwargs.get('image_guid'))
-        except Image.DoesNotExist:
+        except (ValueError, Image.DoesNotExist):
             return False, RedirectView.as_view(url=reverse('404error'))
         try:
             annotation = Annotation.objects.select_related('current_revision').get(annotation_guid=kwargs.get('annotation_guid'))
-        except Annotation.DoesNotExist:
+        except (ValueError, Annotation.DoesNotExist):
             return False, RedirectView.as_view(url=reverse('404error'))
         return True, (collection, image, annotation)
     
@@ -376,19 +376,19 @@
     def check_kwargs(self, kwargs):
         try:
             collection = Collection.objects.prefetch_related("items", "items__images").get(name=kwargs.get('collection_name'))
-        except Collection.DoesNotExist:
+        except (ValueError, Collection.DoesNotExist):
             return False, RedirectView.as_view(url=reverse('404error'))
         try:
             image = Image.objects.prefetch_related("annotations").get(image_guid=kwargs.get('image_guid'))
-        except Image.DoesNotExist:
+        except (ValueError, Image.DoesNotExist):
             return False, RedirectView.as_view(url=reverse('404error'))
         try:
             annotation = Annotation.objects.select_related('current_revision').get(annotation_guid=kwargs.get('annotation_guid'))
-        except Annotation.DoesNotExist:
+        except (ValueError, Annotation.DoesNotExist):
             return False, RedirectView.as_view(url=reverse('404error'))
         try:
             revision = AnnotationRevision.objects.select_related('parent_revision').get(revision_guid=kwargs.get('revision_guid'))
-        except AnnotationRevision.DoesNotExist:
+        except (ValueError, AnnotationRevision.DoesNotExist):
             return False, RedirectView.as_view(url=reverse('404error'))
         return True, (collection, image, annotation, revision)
     
@@ -434,19 +434,19 @@
     def check_kwargs(self, kwargs):
         try:
             collection = Collection.objects.prefetch_related("items", "items__images").get(name=kwargs.get('collection_name'))
-        except Collection.DoesNotExist:
+        except (ValueError, Collection.DoesNotExist):
             return False, RedirectView.as_view(url=reverse('404error'))
         try:
             image = Image.objects.prefetch_related("annotations").get(image_guid=kwargs.get('image_guid'))
-        except Image.DoesNotExist:
+        except (ValueError, Image.DoesNotExist):
             return False, RedirectView.as_view(url=reverse('404error'))
         try:
             annotation = Annotation.objects.select_related('current_revision').get(annotation_guid=kwargs.get('annotation_guid'))
-        except Annotation.DoesNotExist:
+        except (ValueError, Annotation.DoesNotExist):
             return False, RedirectView.as_view(url=reverse('404error'))
         try:
             revision = AnnotationRevision.objects.select_related('parent_revision').get(revision_guid=kwargs.get('revision_guid'))
-        except AnnotationRevision.DoesNotExist:
+        except (ValueError, AnnotationRevision.DoesNotExist):
             return False, RedirectView.as_view(url=reverse('404error'))
         return True, (collection, image, annotation, revision)
     
@@ -564,7 +564,5 @@
         return render(request, 'iconolab/merge_revision.html', context)
     
     
-class NotFoundErrorView(View):
-    def get(self, request, *args, **kwargs):
-        # Handle image display here
-        pass
\ No newline at end of file
+class NotFoundErrorView(TemplateView):
+    template_name="errors/404error.html"
\ No newline at end of file