Make it so the login link redirects you back to the page you were looking at.
authorDiane Trout <diane@caltech.edu>
Thu, 8 Sep 2011 00:35:34 +0000 (17:35 -0700)
committerDiane Trout <diane@caltech.edu>
Thu, 8 Sep 2011 00:35:34 +0000 (17:35 -0700)
I did this by adding a processing instruction to add a thispage
variable to RequestContext.

htsworkflow/frontend/templates/base.html
htsworkflow/frontend/thispage.py [new file with mode: 0644]
htsworkflow/frontend/urls.py
htsworkflow/settings.py

index a2e3919f7cb38e9435efcf0ad217a0624593d03f..7691c58aba2861c457c7e88e04689f2fe6e4f9ec 100644 (file)
 <body>
 <!-- Container -->
     {% if not is_popup %}
-    
+
     <div id="header">
         <div id="branding">
         {% block branding %}{% endblock %}
         </div>
         <div id="user-tools">
         {% if user.is_authenticated %}
-        {% trans 'Welcome,' %} <strong>{% firstof user.first_name user.username %}</strong>. {% block userlinks %}{% url django-admindocs-docroot as docsroot %}{% if docsroot %}<a href="{{ docsroot }}">{% trans 'Documentation' %}</a> / {% endif %}<a href="/admin/password_change/">{% trans 'Change password' %}</a> / <a href="/admin/logout/">{% trans 'Log out' %}</a>{% endblock %} 
+        {% trans 'Welcome,' %}
+        <strong>{% firstof user.first_name user.username %}</strong>.
+        {% block userlinks %}
+            {% url django-admindocs-docroot as docsroot %}
+            {% if docsroot %}
+                <a href="{{ docsroot }}">{% trans 'Documentation' %}</a> /
+            {% endif %}
+            <a href="{{root_path}}/accounts/password_change/">{% trans 'Change password' %}</a> /
+            <a href="{{root_path}}/accounts/logout/">{% trans 'Log out' %}</a>
+        {% endblock %}
         {% else %}
-        <a href="/admin/login/">{% trans 'Log in' %}</a>
+            <a href="{{root_path}}/accounts/login/?next={{thispage}}">{% trans 'Log in' %}</a>
         {% endif %}
         </div>
         {% block nav-global %}{% endblock %}
@@ -46,7 +55,7 @@
     {% if messages %}
         <ul class="messagelist">{% for message in messages %}<li>{{ message }}</li>{% endfor %}</ul>
     {% endif %}
-        
+
     <!-- Content -->
     <div id="content" class="{% block coltype %}colM{% endblock %}">
         {% block pretitle %}{% endblock %}
diff --git a/htsworkflow/frontend/thispage.py b/htsworkflow/frontend/thispage.py
new file mode 100644 (file)
index 0000000..f0ea3fb
--- /dev/null
@@ -0,0 +1,2 @@
+def thispage(request):
+    return {'thispage': request.get_full_path()}
index 23423dbd5c64bd654985fedf452d8b966f09fe4a..ccba072b8395365b64c4e3149a6d29f2e54de77a 100644 (file)
@@ -16,8 +16,8 @@ urlpatterns = patterns('',
     ('^accounts/login/$', 'django.contrib.auth.views.login'),
     ('^accounts/logout/$', 'django.contrib.auth.views.logout'),
     ('^accounts/logout_then_login/$', 'django.contrib.auth.views.logout_then_login'),
-    ('^accounts/pwchange/$', 'django.contrib.auth.views.password_change'),
-    ('^accounts/pwchange_done/$', 'django.contrib.auth.views.password_change_done'),
+    ('^accounts/password_change/$', 'django.contrib.auth.views.password_change'),
+    ('^accounts/password_change_done/$', 'django.contrib.auth.views.password_change_done'),
     ('^accounts/profile/$', 'htsworkflow.frontend.samples.views.user_profile'),
     # Base:
     (r'^eland_config/', include('htsworkflow.frontend.eland_config.urls')),
@@ -38,7 +38,7 @@ urlpatterns = patterns('',
     (r'^reports/', include('htsworkflow.frontend.reports.urls')),
     # Library browser
     (r'^library/$', 'htsworkflow.frontend.samples.views.library'),
-    (r'^library/(?P<lib_id>\w+)/$', 
+    (r'^library/(?P<lib_id>\w+)/$',
       'htsworkflow.frontend.samples.views.library_to_flowcells'),
     (r'^lanes_for/$', 'htsworkflow.frontend.samples.views.lanes_for'),
     (r'^lanes_for/(?P<username>\w+)', 'htsworkflow.frontend.samples.views.lanes_for'),
@@ -46,7 +46,7 @@ urlpatterns = patterns('',
     (r'^library_id_to_admin_url/(?P<lib_id>\w+)/$',
      'htsworkflow.frontend.samples.views.library_id_to_admin_url'),
     # sample / library information
-    (r'^samples/', include('htsworkflow.frontend.samples.urls')),                   
+    (r'^samples/', include('htsworkflow.frontend.samples.urls')),
     # Raw result files
     (r'^results/(?P<flowcell_id>\w+)/(?P<cnm>C[0-9]+-[0-9]+)/summary/',
       'htsworkflow.frontend.samples.views.summaryhtm_fc_cnm'),
@@ -57,7 +57,7 @@ urlpatterns = patterns('',
     (r'^results/(?P<fc_id>\w+)/(?P<cnm>C[1-9]-[0-9]+)/bedfile/(?P<lane>[1-8])',
       'htsworkflow.frontend.samples.views.bedfile_fc_cnm_eland_lane'),
     (r'^bcmagic/', include('htsworkflow.frontend.bcmagic.urls')),
-    
+
     # databrowser
     #(r'^databrowse/(.*)', databrowse.site.root)
 )
@@ -65,11 +65,11 @@ urlpatterns = patterns('',
 # Allow admin
 if hasattr(admin.site, 'urls'):
   urlpatterns += patterns('', (r'^admin/', include(admin.site.urls)))
-else:                          
+else:
   urlpatterns += patterns('', (r'^admin/(.*)', admin.site.root))
 
 if settings.DEBUG:
   urlpatterns += patterns('',
-      (r'^static/(?P<path>.*)$', 'django.views.static.serve', 
+      (r'^static/(?P<path>.*)$', 'django.views.static.serve',
         {'document_root': settings.MEDIA_ROOT}),
   )
index 55bc54c35ffaa40d901b32d35a96c8ff0682c0e1..d3cabf912bceea92db355f2f436f577ffca119ae 100644 (file)
@@ -29,6 +29,7 @@ import os
 import shlex
 import htsworkflow
 import django
+from django.conf import global_settings
 
 HTSWORKFLOW_ROOT = os.path.abspath(os.path.split(htsworkflow.__file__)[0])
 
@@ -172,18 +173,17 @@ TEMPLATE_LOADERS = (
 #     'django.template.loaders.eggs.load_template_source',
 )
 
-MIDDLEWARE_CLASSES = [
+MIDDLEWARE_CLASSES = (
+    'django.contrib.csrf.middleware.CsrfMiddleware',
     'django.middleware.common.CommonMiddleware',
     'django.contrib.sessions.middleware.SessionMiddleware',
     'django.contrib.auth.middleware.AuthenticationMiddleware',
     'django.middleware.doc.XViewMiddleware',
-]
-# be forgiving for django 1.1 which doesn't have csrf protection
-# TODO remove this when we upgrade to django 1.2
-if django.VERSION[0] == 1 and django.VERSION[1] > 1:
-    MIDDLEWARE_CLASSES.insert(0, 'django.middleware.csrf.CsrfViewMiddleware')
-
+)
 
+TEMPLATE_CONTEXT_PROCESSORS = global_settings.TEMPLATE_CONTEXT_PROCESSORS + (
+    'htsworkflow.frontend.thispage.thispage',
+)
 ROOT_URLCONF = 'htsworkflow.frontend.urls'
 
 TEMPLATE_DIRS = (