new view portal.homeview.HomeView that replaces former login_user
authorThierry Parmentelat <thierry.parmentelat@inria.fr>
Fri, 6 Sep 2013 08:09:06 +0000 (10:09 +0200)
committerThierry Parmentelat <thierry.parmentelat@inria.fr>
Fri, 6 Sep 2013 08:09:06 +0000 (10:09 +0200)
made a bit nicer (no login widget is already logged in)
also the slice urls are now /portal/slice/<slicename> since the slice view sits in portal/

auth/views.py
myslice/urls.py
myslice/viewutils.py
plugins/lists/static/js/simplelist.js
portal/homeview.py [new file with mode: 0644]
portal/templates/home-view.html [moved from views/templates/view-login.html with 97% similarity]
portal/urls.py

index 6380cf2..104d11c 100644 (file)
@@ -1,52 +1,12 @@
-# Create your views here.
-from django.core.context_processors import csrf
-from django.template import RequestContext
-from django.shortcuts import render_to_response
-from django.contrib.auth import authenticate, login, logout
+from django.contrib.auth import logout
 from django.http import HttpResponseRedirect
 
-from myslice.viewutils import topmenu_items, the_user
-from myslice.config import Config
-
-def login_user(request):
-    state = "Please log in below..."
-    username = password = ''
-    env={
-        'manifold_url':Config.manifold_url,
-        }
-
-    if request.POST:
-        username = request.POST.get('username')
-        password = request.POST.get('password')
-        
-        # pass request within the token, so manifold session key could be attached to the request session.
-        token = {'username': username, 'password': password, 'request': request}    
-
-        user = authenticate(token=token)
-        if user is not None:
-            if user.is_active:
-                login(request, user)
-                #state = "You're successfully logged in!"
-                return HttpResponseRedirect ('/portal/dashboard')
-                #return HttpResponseRedirect ('/login-ok')
-            else:
-                env['state'] = "Your account is not active, please contact the site admin."
-                return render_to_response('view-login.html',env, context_instance=RequestContext(request))
-        else:
-            env['state'] = "Your username and/or password were incorrect."
-            return render_to_response('view-login.html',env, context_instance=RequestContext(request))
-    else:
-        state='' #Welcome to MySlice'
-        env['state']=state
-        env['username']=the_user(request)
-        env['topmenu_items'] = topmenu_items('', request)
-        return render_to_response('view-login.html',env, context_instance=RequestContext(request))
-
 # hard question : where should we redirect requests to logout if user is not logged in ?
 def logout_user (request):
     # check that we're indeed logged in
     if not request.user.is_authenticated():
         return HttpResponseRedirect ('/')
+    print "LOGGING OUT"
     logout(request)
     return HttpResponseRedirect ('/')
         
index 79a808d..21bc8bd 100644 (file)
@@ -9,17 +9,24 @@ from django.conf      import settings
 from django.template.loader import add_to_builtins
 add_to_builtins('insert_above.templatetags.insert_tags')
 
-import portal.sliceview
 import portal.platformsview
 import portal.dashboardview
+import portal.homeview
 
+home_view=portal.homeview.HomeView.as_view()
+dashboard_view=portal.dashboardview.DashboardView.as_view()
+platforms_view=portal.platformsview.PlatformsView.as_view()
+
+#### high level choices
 # main entry point (set to the / URL)
-## beware before adopting this one
-# if anything goes wrong in this page you end up in an endless cycle
-#default_view=portal.platformsview.PlatformsView.as_view()
-default_view='auth.views.login_user'
+# beware that if this view is broken you end up in an endless cycle...
+# maybe platforms_view would be best on the longer run
+the_default_view=home_view
 # where to be redirected after login
-after_login_view=portal.dashboardview.DashboardView.as_view()
+the_after_login_view=home_view #dashboard_view
+# where to redirect when login is required
+# might need another one ?
+the_login_view=home_view
 
 urlpatterns = patterns(
     '',
@@ -33,31 +40,20 @@ urlpatterns = patterns(
     #
     # default / view
     #
-    (r'^/?$', default_view),
+    (r'^/?$', the_default_view),
     #
     # login / logout
     #
-    (r'^login-ok/?$', after_login_view),
+    (r'^login-ok/?$', the_after_login_view, {'state': 'Welcome to MySlice'} ),
     # seems to be what login_required uses to redirect ...
-    (r'^accounts/login/$', 'auth.views.login_user'),
-    (r'^login/?$', 'auth.views.login_user'),
+    (r'^accounts/login/$', the_login_view),
+    (r'^login/?$', the_login_view),
     (r'^logout/?$', 'auth.views.logout_user'),
     #
     # the manifold proxy
     #
     (r'^manifold/proxy/(?P<format>\w+)/?$', 'manifold.manifoldproxy.proxy'),
-    # 
-    # the slice view
-    #
-    (r'^slice/?$',                        portal.sliceview.SliceView.as_view()),
-    (r'^slice/(?P<slicename>[\w\.]+)/?$', portal.sliceview.SliceView.as_view()),
     #
-    # various trash views
-    #
-    (r'^tab/?$',                          'trash.sampleviews.tab_view'),
-    (r'^scroll/?$',                       'trash.sampleviews.scroll_view'),
-    (r'^plugin/?$',                       'trash.pluginview.test_plugin_view'),
-    (r'^dashboard/?$',                    'trash.dashboard.dashboard_view'),
     # Portal
     url(r'^portal/', include('portal.urls')),
     # Portal
@@ -66,6 +62,12 @@ urlpatterns = patterns(
     url(r'^debug/', include('debug_platform.urls')),
     # Static files
     (r'^static/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.STATIC_ROOT}),
-
+    #
+    # various trash views - bound to go away 
+    #
+    (r'^tab/?$',                          'trash.sampleviews.tab_view'),
+    (r'^scroll/?$',                       'trash.sampleviews.scroll_view'),
+    (r'^plugin/?$',                       'trash.pluginview.test_plugin_view'),
+    (r'^dashboard/?$',                    'trash.dashboard.dashboard_view'),
 
 )
index 7fbdc77..eaa2dcb 100644 (file)
@@ -23,9 +23,8 @@ def topmenu_items (current,request=None):
     return result
 
 def the_user (request):
-    "This code below is broken"
+    "retrieves logged in user's email, or empty string"
     if not request.user.is_authenticated (): 
-#        print 'void user!'
         return ''
     else: 
         return request.user.email
index aed6217..545c04c 100644 (file)
@@ -94,7 +94,7 @@
     // hard-wire a separate presentation depending on the key being used....
     function cell(key, value) {
         if (key == 'slice.slice_hrn') {
-            return "<i class='icon-play-circle'></i><a href='/slice/" + value + "'>" + value + "</a>";
+            return "<i class='icon-play-circle'></i><a href='/portal/slice/" + value + "'>" + value + "</a>";
         } else if (key == 'network_hrn') {
             return "<i class='icon-play-circle'></i><a href='/portal/platform/" + value + "'>" + value + "</a>";
         } else {
diff --git a/portal/homeview.py b/portal/homeview.py
new file mode 100644 (file)
index 0000000..f5735ab
--- /dev/null
@@ -0,0 +1,48 @@
+# this somehow is not used anymore - should it not be ?
+from django.views.generic import View
+from django.core.context_processors import csrf
+from django.http import HttpResponseRedirect
+from django.contrib.auth import authenticate, login, logout
+from django.template import RequestContext
+from django.shortcuts import render_to_response
+
+from myslice.viewutils import topmenu_items, the_user
+from myslice.config import Config
+
+class HomeView (View):
+
+    def default_env (self):
+        return { 
+                 'manifold_url':Config.manifold_url,
+                 }
+
+    def post (self,request):
+        env = self.default_env()
+        username = request.POST.get('username')
+        password = request.POST.get('password')
+        
+        # pass request within the token, so manifold session key can be attached to the request session.
+        token = {'username': username, 'password': password, 'request': request}    
+
+        user = authenticate(token=token)
+        if user is not None:
+            if user.is_active:
+                print "LOGGING IN"
+                login(request, user)
+                return HttpResponseRedirect ('/login-ok')
+            else:
+                env['state'] = "Your account is not active, please contact the site admin."
+                return render_to_response('home-view.html',env, context_instance=RequestContext(request))
+        else:
+            env['state'] = "Your username and/or password were incorrect."
+            return render_to_response('home-view.html',env, context_instance=RequestContext(request))
+
+    # login-ok sets state="Welcome to MySlice" in urls.py
+    def get (self, request, state=None):
+        env = self.default_env()
+        env['username']=the_user(request)
+        env['topmenu_items'] = topmenu_items('', request)
+        if state: env['state'] = state
+        elif not env['username']: env['state'] = "Please log in below..."
+        return render_to_response('home-view.html',env, context_instance=RequestContext(request))
+
similarity index 97%
rename from views/templates/view-login.html
rename to portal/templates/home-view.html
index b28f13c..42265a5 100644 (file)
@@ -1,7 +1,9 @@
 {% extends 'layout-unfold2.html' %}
 
 {% block unfold2_margin %}
+{% if not username %}
 {% include 'widget-login.html' %}
+{% endif %}
 {% endblock unfold2_margin %}
 
 {% block unfold2_main %}
index 68309c9..6e73348 100644 (file)
@@ -30,6 +30,8 @@ from portal.accountview         import AccountView, account_process
 from portal.contactview         import ContactView
 from portal.slicerequestview    import SliceRequestView
 from portal.registrationview    import RegistrationView
+from portal.sliceview           import SliceView
+
 # hopefully these should move in dedicated source files too
 from portal.views               import PresViewView, pres_view_static, pres_view_methods, pres_view_animation
 from portal.views               import ValidatePendingView
@@ -56,6 +58,8 @@ urlpatterns = patterns('',
     url(r'^account/?$', AccountView.as_view(), name='account'),
     url(r'^platforms/?$', PlatformsView.as_view(), name='platforms'),
     url(r'^platform/(?P<platformname>[\w\.]+)/?$', PlatformView.as_view(), name='platform'),
+    url(r'^slice/?$',SliceView.as_view(),name='slice'),
+    url(r'^slice/(?P<slicename>[\w\.]+)/?$', SliceView.as_view(),name='slice'),
     url(r'^account/account_process/?$', account_process),
     url(r'^register/?$', RegistrationView.as_view(), name='registration'),
     url(r'^contact/?$', ContactView.as_view(), name='contact'),