diff --git a/app/interface/urls.py b/app/interface/urls.py index 9a3cda0..c7515a0 100644 --- a/app/interface/urls.py +++ b/app/interface/urls.py @@ -5,33 +5,76 @@ from django.views.generic.base import RedirectView from . import views urlpatterns = [ - - path('', RedirectView.as_view(url='projects', permanent=False), name='home'), - - path('login', auth_views.LoginView.as_view(), name='login'), - path('logout', auth_views.LogoutView.as_view(), name='logout'), - path('forget//', views.ForgetResourceView.as_view(), name="forget_resource"), - - path('ensembles', views.EnsembleListView.as_view(), name="ensemble_list"), - path('ensembles/', views.EnsembleDetailView.as_view(), name='ensemble_detail'), - path('ensembles//new-project', views.ProjectCreateView.as_view(), name="project_create"), - - path('projects', views.ProjectListView.as_view(), name="project_list"), - path('projects/', views.ProjectDetailView.as_view(), name="project_detail"), - path('projects//edit', views.ProjectUpdateView.as_view(), name="project_edit"), - #path('projects//submissions.mk', views.ProjectMakefileView.as_view(), name="project_makefile"), - - path('projects//page/create', views.WikiCreateView.as_view(), name="wiki_create"), - path('projects//page/', views.WikiView.as_view(), name="wiki"), - path('projects//page//edit', views.WikiEditView.as_view(), name="wiki_edit"), - - path('projects//resources', views.ResourceListView.as_view(), name="resource_list"), - path('projects//resources/add', views.ResourceCreateView.as_view(), name="resource_create"), - path('projects//resources//upload', views.ResourceUploadView.as_view(), name="resource_upload"), - path('projects//resources//edit', views.ResourceEditView.as_view(), name="resource_edit"), + path("", RedirectView.as_view(url="projects", permanent=False), name="home"), + path("login", auth_views.LoginView.as_view(), name="login"), + path("logout", views.logout_view, name="logout"), + path( + "forget//", + views.ForgetResourceView.as_view(), + name="forget_resource", + ), + path("ensembles", views.EnsembleListView.as_view(), name="ensemble_list"), + path( + "ensembles/", + views.EnsembleDetailView.as_view(), + name="ensemble_detail", + ), + path( + "ensembles//new-project", + views.ProjectCreateView.as_view(), + name="project_create", + ), + path("projects", views.ProjectListView.as_view(), name="project_list"), + path( + "projects/", + views.ProjectDetailView.as_view(), + name="project_detail", + ), + path( + "projects//edit", + views.ProjectUpdateView.as_view(), + name="project_edit", + ), + # path('projects//submissions.mk', views.ProjectMakefileView.as_view(), name="project_makefile"), + path( + "projects//page/create", + views.WikiCreateView.as_view(), + name="wiki_create", + ), + path("projects//page/", views.WikiView.as_view(), name="wiki"), + path( + "projects//page//edit", + views.WikiEditView.as_view(), + name="wiki_edit", + ), + path( + "projects//resources", + views.ResourceListView.as_view(), + name="resource_list", + ), + path( + "projects//resources/add", + views.ResourceCreateView.as_view(), + name="resource_create", + ), + path( + "projects//resources//upload", + views.ResourceUploadView.as_view(), + name="resource_upload", + ), + path( + "projects//resources//edit", + views.ResourceEditView.as_view(), + name="resource_edit", + ), ] from django.conf import settings + if settings.DEBUG: from django.views.static import serve - urlpatterns.append(path('local_storage/', serve, {'document_root': 'local_storage'})) \ No newline at end of file + + urlpatterns.append( + path("local_storage/", serve, {"document_root": "local_storage"}) + ) + diff --git a/app/interface/views.py b/app/interface/views.py index 12b438b..2cf0180 100644 --- a/app/interface/views.py +++ b/app/interface/views.py @@ -10,6 +10,7 @@ from django.views.generic.edit import CreateView, UpdateView from django.core.exceptions import SuspiciousOperation from django.http import Http404, HttpResponseRedirect from django.http.request import HttpRequest +from django.contrib.auth import logout from markdown2 import markdown @@ -108,6 +109,11 @@ class AuthorizedResourceMixin(object): # TODO: RevokeResourceView - increment nonce +def logout_view(request): + logout(request) + return redirect("/") + + class ForgetResourceView(AuthorizedResourceMixin, RedirectView): def is_authorized(self): return True