From: Thierry Parmentelat Date: Fri, 6 Sep 2013 08:09:06 +0000 (+0200) Subject: new view portal.homeview.HomeView that replaces former login_user X-Git-Tag: myslice-0.2-1~7 X-Git-Url: http://git.onelab.eu/?p=myslice.git;a=commitdiff_plain;h=e11594d82379b519df0968cc3c6a21628b270b27 new view portal.homeview.HomeView that replaces former login_user made a bit nicer (no login widget is already logged in) also the slice urls are now /portal/slice/ since the slice view sits in portal/ --- diff --git a/auth/views.py b/auth/views.py index 6380cf2d..104d11c9 100644 --- a/auth/views.py +++ b/auth/views.py @@ -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 ('/') diff --git a/myslice/urls.py b/myslice/urls.py index 79a808d3..21bc8bd9 100644 --- a/myslice/urls.py +++ b/myslice/urls.py @@ -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\w+)/?$', 'manifold.manifoldproxy.proxy'), - # - # the slice view - # - (r'^slice/?$', portal.sliceview.SliceView.as_view()), - (r'^slice/(?P[\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.*)$', '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'), ) diff --git a/myslice/viewutils.py b/myslice/viewutils.py index 7fbdc77f..eaa2dcb5 100644 --- a/myslice/viewutils.py +++ b/myslice/viewutils.py @@ -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 diff --git a/plugins/lists/static/js/simplelist.js b/plugins/lists/static/js/simplelist.js index aed62177..545c04cd 100644 --- a/plugins/lists/static/js/simplelist.js +++ b/plugins/lists/static/js/simplelist.js @@ -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 "" + value + ""; + return "" + value + ""; } else if (key == 'network_hrn') { return "" + value + ""; } else { diff --git a/portal/homeview.py b/portal/homeview.py new file mode 100644 index 00000000..f5735ab4 --- /dev/null +++ b/portal/homeview.py @@ -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)) + diff --git a/views/templates/view-login.html b/portal/templates/home-view.html similarity index 97% rename from views/templates/view-login.html rename to portal/templates/home-view.html index b28f13cd..42265a59 100644 --- a/views/templates/view-login.html +++ b/portal/templates/home-view.html @@ -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 %} diff --git a/portal/urls.py b/portal/urls.py index 68309c98..6e733483 100644 --- a/portal/urls.py +++ b/portal/urls.py @@ -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[\w\.]+)/?$', PlatformView.as_view(), name='platform'), + url(r'^slice/?$',SliceView.as_view(),name='slice'), + url(r'^slice/(?P[\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'),