# HG changeset patch # User ymh # Date 1495550117 -7200 # Node ID 2d9660ad4a94a4f304fe688888ff41592df23da8 # Parent 63a7f61554fea0661fcc430862eef04cbd1ef46b correct slug regexp for username diff -r 63a7f61554fe -r 2d9660ad4a94 src/iconolab/templates/iconolab/home.html --- a/src/iconolab/templates/iconolab/home.html Mon May 22 17:25:40 2017 +0200 +++ b/src/iconolab/templates/iconolab/home.html Tue May 23 16:35:17 2017 +0200 @@ -77,7 +77,7 @@

{% for contributor in annotation.stats.contributors %} - {{ contributor.username }} + {{ contributor.username }} {% endfor %}

{{ annotation.current_revision.description }}

diff -r 63a7f61554fe -r 2d9660ad4a94 src/iconolab/urls.py --- a/src/iconolab/urls.py Mon May 22 17:25:40 2017 +0200 +++ b/src/iconolab/urls.py Tue May 23 16:35:17 2017 +0200 @@ -31,33 +31,33 @@ url(r'^$', django_views.generic.RedirectView.as_view(url=reverse_lazy("home"))), url(r'^admin/', admin.site.urls), url(r'^home$', views.objects.GlobalHomepageView.as_view(), name="home"), - url(r'^collections/(?P[a-z0-9\-]+)$', views.objects.CollectionHomepageView.as_view(), name='collection_home'), # Home fond - url(r'^collections/(?P[a-z0-9\-]+)/items/(?P[^/]+)$', views.objects.ShowItemView.as_view(), name='item_detail'), - url(r'^collections/(?P[a-z0-9\-]+)/items/?$', django_views.generic.RedirectView.as_view(pattern_name="collection_home")), - url(r'^collections/(?P[a-z0-9\-]+)/images/?$', django_views.generic.RedirectView.as_view(pattern_name="collection_home")), - url(r'^collections/(?P[a-z0-9\-]+)/images/(?P[^/]+)$', views.objects.ShowImageView.as_view(), name='image_detail'), - url(r'^collections/(?P[a-z0-9\-]+)/images/(?P[^/]+)/bookmark/?$', views.objects.BookmarkImageView.as_view(), name='image_bookmark'), - url(r'^collections/(?P[a-z0-9\-]+)/images/(?P[^/]+)/annotations/?$', django_views.generic.RedirectView.as_view(pattern_name="image_detail")), - url(r'^collections/(?P[a-z0-9\-]+)/images/(?P[^/]+)/annotations/create$', login_required(views.objects.CreateAnnotationView.as_view()), name='annotation_create'), - url(r'^collections/(?P[a-z0-9\-]+)/images/(?P[^/]+)/annotations/(?P[^/]+)/?$', views.objects.ShowAnnotationView.as_view(), name='annotation_detail'), - url(r'^collections/(?P[a-z0-9\-]+)/images/(?P[^/]+)/annotations/(?P[^/]+)/detail$', views.objects.ShowAnnotationViewOld.as_view(), name='annotation_detail_old'), - url(r'^collections/(?P[a-z0-9\-]+)/images/(?P[^/]+)/annotations/(?P[^/]+)/readonly$', views.objects.ReadonlyAnnotationView.as_view(), name='annotation_readonly'), - url(r'^collections/(?P[a-z0-9\-]+)/images/(?P[^/]+)/annotations/(?P[^/]+)/edit$', login_required(views.objects.EditAnnotationView.as_view()), name='annotation_edit'), - url(r'^collections/(?P[a-z0-9\-]+)/images/(?P[^/]+)/annotations/(?P[^/]+)/revisions/?$', views.objects.ShowRevisionsView.as_view(), name='annotation_revisions'), - url(r'^collections/(?P[a-z0-9\-]+)/images/(?P[^/]+)/annotations/(?P[^/]+)/revisions/(?P[^/]+)/detail', views.objects.ShowRevisionView.as_view(), name='revision_detail'), - url(r'^collections/(?P[a-z0-9\-]+)/images/(?P[^/]+)/annotations/(?P[^/]+)/revisions/(?P[^/]+)/merge$', login_required(views.objects.MergeProposalView.as_view()), name='annotation_merge'), + url(r'^collections/(?P[a-zA-Z0-9\-]+)$', views.objects.CollectionHomepageView.as_view(), name='collection_home'), # Home fond + url(r'^collections/(?P[a-zA-Z0-9\-]+)/items/(?P[^/]+)$', views.objects.ShowItemView.as_view(), name='item_detail'), + url(r'^collections/(?P[a-zA-Z0-9\-]+)/items/?$', django_views.generic.RedirectView.as_view(pattern_name="collection_home")), + url(r'^collections/(?P[a-zA-Z0-9\-]+)/images/?$', django_views.generic.RedirectView.as_view(pattern_name="collection_home")), + url(r'^collections/(?P[a-zA-Z0-9\-]+)/images/(?P[^/]+)$', views.objects.ShowImageView.as_view(), name='image_detail'), + url(r'^collections/(?P[a-zA-Z0-9\-]+)/images/(?P[^/]+)/bookmark/?$', views.objects.BookmarkImageView.as_view(), name='image_bookmark'), + url(r'^collections/(?P[a-zA-Z0-9\-]+)/images/(?P[^/]+)/annotations/?$', django_views.generic.RedirectView.as_view(pattern_name="image_detail")), + url(r'^collections/(?P[a-zA-Z0-9\-]+)/images/(?P[^/]+)/annotations/create$', login_required(views.objects.CreateAnnotationView.as_view()), name='annotation_create'), + url(r'^collections/(?P[a-zA-Z0-9\-]+)/images/(?P[^/]+)/annotations/(?P[^/]+)/?$', views.objects.ShowAnnotationView.as_view(), name='annotation_detail'), + url(r'^collections/(?P[a-zA-Z0-9\-]+)/images/(?P[^/]+)/annotations/(?P[^/]+)/detail$', views.objects.ShowAnnotationViewOld.as_view(), name='annotation_detail_old'), + url(r'^collections/(?P[a-zA-Z0-9\-]+)/images/(?P[^/]+)/annotations/(?P[^/]+)/readonly$', views.objects.ReadonlyAnnotationView.as_view(), name='annotation_readonly'), + url(r'^collections/(?P[a-zA-Z0-9\-]+)/images/(?P[^/]+)/annotations/(?P[^/]+)/edit$', login_required(views.objects.EditAnnotationView.as_view()), name='annotation_edit'), + url(r'^collections/(?P[a-zA-Z0-9\-]+)/images/(?P[^/]+)/annotations/(?P[^/]+)/revisions/?$', views.objects.ShowRevisionsView.as_view(), name='annotation_revisions'), + url(r'^collections/(?P[a-zA-Z0-9\-]+)/images/(?P[^/]+)/annotations/(?P[^/]+)/revisions/(?P[^/]+)/detail', views.objects.ShowRevisionView.as_view(), name='revision_detail'), + url(r'^collections/(?P[a-zA-Z0-9\-]+)/images/(?P[^/]+)/annotations/(?P[^/]+)/revisions/(?P[^/]+)/merge$', login_required(views.objects.MergeProposalView.as_view()), name='annotation_merge'), url(r'^user/settings/?$', login_required(views.userpages.UserSettingsView.as_view()), name="user_settings"), url(r'^user/collections/?$', login_required(views.userpages.UserCollectionsView.as_view()), name="user_collections"), url(r'^user/notifications/', include(notifications.urls, namespace='notifications')), - url(r'^user/(?P[a-z0-9\-]+)/?$', views.userpages.UserHomeView.as_view(), name="user_home"), - url(r'^user/(?P[a-z0-9\-]+)/commented/?$', views.userpages.UserCommentedView.as_view(), name="user_commented"), - url(r'^user/(?P[a-z0-9\-]+)/contributed/?$', views.userpages.UserContributedView.as_view(), name="user_contributed"), - url(r'^user/(?P[a-z0-9\-]+)/annotations/?$', views.userpages.UserAnnotationsView.as_view(), name="user_annotations"), - url(r'^user/(?P[a-z0-9\-]+)/bookmarks/?$', views.userpages.UserBookmarksView.as_view(), name="user_bookmarks"), + url(r'^user/(?P[\w.@+-]+)/?$', views.userpages.UserHomeView.as_view(), name="user_home"), + url(r'^user/(?P[\w.@+-]+)/commented/?$', views.userpages.UserCommentedView.as_view(), name="user_commented"), + url(r'^user/(?P[\w.@+-]+)/contributed/?$', views.userpages.UserContributedView.as_view(), name="user_contributed"), + url(r'^user/(?P[\w.@+-]+)/annotations/?$', views.userpages.UserAnnotationsView.as_view(), name="user_annotations"), + url(r'^user/(?P[\w.@+-]+)/bookmarks/?$', views.userpages.UserBookmarksView.as_view(), name="user_bookmarks"), url(r'^bookmarks/(?P[0-9]+)/delete/?$', views.userpages.BookmarkDeleteView.as_view(), name="bookmark_delete"), url(r'^bookmarks/(?P[0-9]+)/edit/?$', views.userpages.BookmarkEditView.as_view(), name="bookmark_edit"), - url(r'^user/adminpanel/(?P[a-z0-9\-]+)/$', views.userpages.UserCollectionAdminView.as_view(), name="user_admin_panel"), + url(r'^user/adminpanel/(?P[a-zA-Z0-9\-]+)/$', views.userpages.UserCollectionAdminView.as_view(), name="user_admin_panel"), url(r'^user/notifications/all/?$', login_required(views.userpages.UserNotificationsView.as_view()), name="user_notifications"), url(r'^errors/404', views.misc.NotFoundErrorView.as_view(), name="404error"),