Fix: merge conflict def def account_process(): in views.py
authorYasin <mohammed-yasin.rahman@lip6.fr>
Wed, 4 Sep 2013 13:49:21 +0000 (15:49 +0200)
committerYasin <mohammed-yasin.rahman@lip6.fr>
Wed, 4 Sep 2013 13:49:21 +0000 (15:49 +0200)
README
debug_platform/urls.py
portal/dashboardview.py [new file with mode: 0644]
portal/platformsview.py [new file with mode: 0644]
portal/sliceview.py
portal/templates/my_account.html
portal/templateviews.py
portal/urls.py
portal/views.py

diff --git a/README b/README
index 5ababdb..a38c08b 100644 (file)
--- a/README
+++ b/README
@@ -1,5 +1,7 @@
 This file documents the contents of this module
 
+Last update 4 sept. 2013
+
 See the devel/ subdir for more devel-oriented doc.
 
 ==================== 1 minute howto
@@ -8,12 +10,9 @@ See the devel/ subdir for more devel-oriented doc.
 ** should be straightforward
 ** see devel/django-install.txt in case of trouble
 
-* git clone git://git.onelab.eu/myslice-django.git
+* git clone git://git.onelab.eu/myslice.git
 -- or --
-* git clone ssh://yourlogin@git.onelab.eu/git/myslice-django.git
-
-* edit myslice/settings.py and
-** change the location of your backend API (not yet supported)
+* git clone ssh://yourlogin@git.onelab.eu/git/myslice.git
 
 * edit myslice/config.py and enter the details of your manifold backend
 
@@ -22,6 +21,8 @@ $ manage.py syncdb
 
 * gather static files
 $ ./manage.py collectstatic (formerly, we used make static, which is deprecated)
+-- or --
+$ ./manage.py collectstatic --noinput
 
 * run a local server:
 $ manage.py runserver 0.0.0.0:8000
@@ -32,20 +33,22 @@ when you just need to hit ^C yourself when your static files need to be refreshe
 * use it from your browser 
 (See more notes on using the development server below)
 
-* install dependencies
+* install dependencies 
 $ pip install -r path/to/requirements/file.txt
+Note. not quite sure what this is about, I could not spot this file..
 
 ==================== Status
 
 *** Authentication ***
 
-Although there still are a few hard-coded accounts in the system, you
-will only be able to see some static views and won't be able to send
-real queries if you use these, so you'd better use a real account (one
-that your manifold backend knows about).
+Should be mostly fine
+Not quite sure if/how the user gets proper notifications when
+. his session has expired (i.e. his frontend is not logged into the backend any longer)
+. his credentials have expired (i.e. the uploaded credentials, e.g. SFA delegated cred)
+  expired and she needs to run e.g. sfi myslice again
+
+Hard-coded accounts (from a very early stage) are gone
 
-For logging out: click on 'logged as *jean*', this shows a
-confirmation page for logging out. this is intended to be temporary.
 
 *** Packaging ***
 
@@ -56,35 +59,9 @@ It seems like our app won't work on f14 as is because Django is only 1.3.1 on f1
 Plan is to target f18 but I lack a test machine.
 Also of course I'll try to tackle debian/ubunti at some point.
 
-*** Features ***
-
-We have a basic model for asynchroneous queries (referring to manifold
-queries) and for plugins (in the most general sense a plugin is just a
-piece of the output that may be connected to a query)
-
-Right now the UI has a handful of demo views only; as of this writing
-only the list of slices actually comes from the manifold backend in an
-asynchroneous way.
-
-Also all the views are gathered in the trash/ locations for now, being
-that they're only for assessment purposes.
-
-* dahsboard : has one async. query and 2 plugins that share that
-  query; the intent was to demo a different layout in both cases,
-  although the datatables one won't work yet at this point.
+There also is a working packaging for debian(s) and ubuntu(s) that we use 
+on an almost daily basis to upgrade manifold.pl.sophia.inria.fr
 
-* the 'Plugin' view demonstrates most of the available plugins.
-
-* slice view : only demonstrates how to use URLs to pass arguments along
-
-* scroll view : mostly it only illustrates that some pages can be made
-  public (no need to login)
-
-* tab view : a hand-made tab widget
-
-Not much effort has yet been put into coming up with a nice layout,
-feel free to tweak that but it's probably still way too early for
-this.
 
 ==================== 
 
@@ -94,35 +71,46 @@ Third party tools shipped:
 * datatables
 * spin
 * bootstrap
-* and others are added as we build the system when they become needed
 
-I've tried to keep track of the version I picked and to have an easy upgrade path.
+Others are added as we build the system when they become needed
+Look in third-party/ for a more detailed list
+
+As a rule of thumb, please try to keep in mind that these will need to
+be upgraded over time I've tried to keep track of the version I picked
+and to have an easy upgrade path (depending on the way the original
+package is published)
 
 ==================== Contents: 1st level subdirs
 
 ========== code from git
-* myslice: 
+
+* myslice/
   this is the django 'project', where to look for
   . settings.py
   . urls.py
 
-* manifold:
+* manifold/
   the code for dealing with queries, sending them to the backend, and offering the /manifold/proxy/ URL
 
-* unfold:
+* unfold/
   the code for building / rendering plugins 
 
-* plugins:
+* plugins/
   the actual code for plugins
 
-* auth: 
+* auth/ 
   a django 'app' that deals with authentication; see especially
   auth.backend.MyCustomBackend 
   for how to use a separate authentication system, 
   as well as settings.py for how to enable it
 
+* portal/
+  this is where the first implementation of myslice, with complete
+  user-management including registration, is taking place
+
 * trash/
-  rough/preliminary views in here - as the name suggests this is temporary
+  rough/preliminary scaffolding views are in here
+  as the name suggests this is temporary
 
 * views/
   will receive actual views over time 
@@ -147,6 +135,8 @@ I've tried to keep track of the version I picked and to have an easy upgrade pat
   $ make static 
   $ make clean-static 
 
+* django-static
+
 * myslice.sqlite3
   this is where django stores its own stuff, as per settings.py
 
@@ -164,8 +154,8 @@ I've tried to keep track of the version I picked and to have an easy upgrade pat
       plugins/templates/plugins.html,
       plugins/static/js/simplelist.js 
       plugins/static/css/simplelist.css
-   which I have tried doing for a while but I found mmyself just hopping around in the file tree all
-   day long, wasting cycles all along
+   which I have tried doing for a while but I found myself just hopping around in the file tree all
+   day long, wasting cycles big time
 
 .. as that does not make sense IMHO, I've rewritten the tool for gathering these pieces (this is in
    the Makefile). Bottom line is we can essentially store this wherever we want.
index 3e4398c..15063d1 100644 (file)
@@ -20,9 +20,9 @@
 # this program; see the file COPYING.  If not, write to the Free Software
 # Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 
-from django.conf.urls import patterns, include, url
-from debug_platform.views      import PlatformView
-from portal.views import DashboardView
+from django.conf.urls           import patterns, include, url
+from debug_platform.views       import PlatformView
+from portal.dashboardview       import DashboardView
 
 urlpatterns = patterns('',
     #(r'platform/(?P<platform_name>[\w\.]+)/?$', 'debug.platform'),
diff --git a/portal/dashboardview.py b/portal/dashboardview.py
new file mode 100644 (file)
index 0000000..961b7dc
--- /dev/null
@@ -0,0 +1,65 @@
+from manifold.core.query        import Query
+from unfold.page                import Page
+
+from plugins.lists.simplelist    import SimpleList
+
+from portal.templateviews       import LoginRequiredAutoLogoutView
+
+from myslice.viewutils           import topmenu_items, the_user
+
+#This view requires login 
+class DashboardView (LoginRequiredAutoLogoutView):
+
+    template_name = "dashboard.html"
+    
+    def get_context_data(self, **kwargs):
+        # We might have slices on different registries with different user accounts 
+        # We note that this portal could be specific to a given registry, to which we register users, but i'm not sure that simplifies things
+        # Different registries mean different identities, unless we identify via SFA HRN or have associated the user email to a single hrn
+
+        #messages.info(self.request, 'You have logged in')
+        page = Page(self.request)
+
+        # Slow...
+        #slice_query = Query().get('slice').filter_by('user.user_hrn', 'contains', user_hrn).select('slice_hrn')
+        slice_query = Query().get('user').filter_by('user_hrn', '==', '$user_hrn').select('user_hrn', 'slice.slice_hrn')
+        auth_query  = Query().get('network').select('network_hrn')
+        print "AUTH QUERY =====================", auth_query
+        print "filter", auth_query.filters
+        page.enqueue_query(slice_query)
+        page.enqueue_query(auth_query)
+
+        page.expose_js_metadata()
+        page.expose_queries()
+
+        slicelist = SimpleList(
+            title = None,
+            page  = page,
+            key   = 'slice.slice_hrn',
+            query = slice_query,
+        )
+         
+        authlist = SimpleList(
+            title = None,
+            page  = page,
+            key   = 'network_hrn',
+            query = auth_query,
+        )
+
+        context = super(DashboardView, self).get_context_data(**kwargs)
+        context['person']   = self.request.user
+        context['networks'] = authlist.render(self.request) 
+        context['slices']   = slicelist.render(self.request)
+
+        # XXX This is repeated in all pages
+        # more general variables expected in the template
+        context['title'] = 'Test view that combines various plugins'
+        # the menu items on the top
+        context['topmenu_items'] = topmenu_items('Dashboard', self.request) 
+        # so we can sho who is logged
+        context['username'] = the_user(self.request) 
+
+        context.update(page.prelude_env())
+
+        return context
+
diff --git a/portal/platformsview.py b/portal/platformsview.py
new file mode 100644 (file)
index 0000000..7c83d94
--- /dev/null
@@ -0,0 +1,61 @@
+from django.views.generic.base   import TemplateView
+
+from manifold.core.query         import Query
+from unfold.page                 import Page
+
+from myslice.viewutils           import topmenu_items, the_user
+
+from plugins.hazelnut            import Hazelnut
+
+# View for platforms
+class PlatformsView(TemplateView):
+    template_name = "platforms.html"
+
+    def get_context_data(self, **kwargs):
+        page = Page(self.request)
+
+        #network_query  = Query().get('local:platform').filter_by('disabled', '==', '0').select('platform','platform_longname','gateway_type')
+        network_query  = Query().get('local:platform').select('platform','platform_longname','gateway_type')
+        page.enqueue_query(network_query)
+
+        page.expose_js_metadata()
+        page.expose_queries()
+        networklist = Hazelnut(
+            page  = page,
+            title = 'List',
+            domid = 'checkboxes',
+            # this is the query at the core of the slice list
+            query = network_query,
+            query_all = network_query,
+            checkboxes = False,
+            datatables_options = {
+            # for now we turn off sorting on the checkboxes columns this way
+            # this of course should be automatic in hazelnut
+            'aoColumns'      : [None, None, None, None, {'bSortable': False}],
+            'iDisplayLength' : 25,
+            'bLengthChange'  : True,
+            },
+        )
+#
+#        networklist = SimpleList(
+#            title = None,
+#            page  = page,
+#            key   = 'platform',
+#            query = network_query,
+#        )
+
+        context = super(PlatformsView, self).get_context_data(**kwargs)
+        context['person']   = self.request.user
+        context['networks'] = networklist.render(self.request)
+
+        # XXX This is repeated in all pages
+        # more general variables expected in the template
+        context['title'] = 'Platforms connected to MySlice'
+        # the menu items on the top
+        context['topmenu_items'] = topmenu_items('Platforms', self.request)
+        # so we can sho who is logged
+        context['username'] = the_user(self.request)
+
+        context.update(page.prelude_env())
+
+        return context
index d233c43..bc76aca 100644 (file)
@@ -2,9 +2,8 @@
 
 from django.template                 import RequestContext
 from django.shortcuts                import render_to_response
-from django.contrib.auth.decorators  import login_required
 
-from portal.templateviews            import LoginRequiredView,LogoutOnManifoldExceptionView
+from portal.templateviews            import LoginRequiredAutoLogoutView
 
 from unfold.page                     import Page
 from manifold.core.query             import Query, AnalyzedQuery
@@ -31,12 +30,12 @@ from plugins.messages.messages       import Messages
 tmp_default_slice='ple.upmc.myslicedemo'
 debug = True
 
-class SliceView (LoginRequiredView, LogoutOnManifoldExceptionView):
+class SliceView (LoginRequiredAutoLogoutView):
 
 #    def __init__ (self, slicename=None):
 #        self.slicename = slicename or tmp_default_slice
 
-    def get_or_logout (self,request, slicename=tmp_default_slice):
+    def get (self,request, slicename=tmp_default_slice):
     
         page = Page(request)
         page.expose_js_metadata()
index 1d5f2e2..75cb11f 100644 (file)
@@ -40,7 +40,7 @@
   <div class='ms-dashboard-content' id='tophat__list__user_hrn'>
     <div id="main">
       <div id="middle" align="center">
-       <form id="editForm"  method="POST" action="acc_process" enctype="multipart/form-data">
+       <form id="editForm"  method="POST" action="account_process" enctype="multipart/form-data">
          {% csrf_token %}
          <table class="profile">          
            <tr class="odd">
index 0d76fcd..0f46ff7 100644 (file)
@@ -10,8 +10,8 @@ from manifold.manifoldresult            import ManifoldException
 class LoginRequiredView (TemplateView):
 
     @method_decorator(login_required)
-    def dispatch(self, *args, **kwargs):
-        return super(LoginRequiredView, self).dispatch(*args, **kwargs)
+    def dispatch(self, request, *args, **kwargs):
+        return super(LoginRequiredView, self).dispatch(request, *args, **kwargs)
 
 
 ########## the base class for views that need to protect against ManifoldException
@@ -24,10 +24,11 @@ class LoginRequiredView (TemplateView):
 # it is often a good idea for a view to monitor these exceptions
 # and to take this opportunity to logout people 
 
-def logout_on_manifold_exception (view_as_a_function):
+def logout_on_manifold_exception (fun_that_returns_httpresponse):
     def wrapped (request, *args, **kwds):
+        print 'wrapped by logout_on_manifold_exception'
         try:
-            return view_as_a_function(request,*args, **kwds)
+            return fun_that_returns_httpresponse(request,*args, **kwds)
         except ManifoldException, manifold_result:
             # xxx we need a means to display this message to user...
             from django.contrib.auth import logout
@@ -42,11 +43,11 @@ def logout_on_manifold_exception (view_as_a_function):
     return wrapped
 
 # at first sight this matters only for views that require login
-# however we prefer this to be explicit
-# i.e. a user class has to inherit both LoginRequiredView and LogoutOnManifoldExceptionView
-
-class LogoutOnManifoldExceptionView (TemplateView):
+# so for now we expose a single class that behaves like 
+# login_required + logout_on_manifold_exception
+class LoginRequiredAutoLogoutView (TemplateView):
 
     @logout_on_manifold_exception
-    def get (self, request, *args, **kwds):
-        return self.get_or_logout (request, *args, **kwds)
+    @method_decorator(login_required)
+    def dispatch (self, request, *args, **kwds):
+        return super(LoginRequiredAutoLogoutView,self).dispatch(request,*args,**kwds)
index c5c270f..47a75f5 100644 (file)
 # this program; see the file COPYING.  If not, write to the Free Software
 # Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 
-from django.conf.urls import patterns, include, url
-from portal           import views
-from portal.views     import DashboardView, PresViewView, PlatformsView, PlatformView, ValidatePendingView, AccountView # UserRegisterView, UserValidateView
-from portal.util      import TemplateView
+from django.conf.urls           import patterns, include, url
+from portal                     import views
+from portal.views               import PresViewView, PlatformView, ValidatePendingView, AccountView # UserRegisterView, UserValidateView
+from portal.platformsview       import PlatformsView
+from portal.dashboardview       import DashboardView
+from portal.util                import TemplateView
 
 # DEPRECATED #named_register_forms = (
 # DEPRECATED #    ("step1", RegisterUserForm),
@@ -47,7 +49,7 @@ urlpatterns = patterns('',
     url(r'^platforms/?$', PlatformsView.as_view(), name='platforms'),
     #url(r'^portal/platform/?$', PlatformView.platform_view(), name='platform'),
     url(r'^platform/(?P<platformname>[\w\.]+)/?$', PlatformView.as_view(), name='platform'),
-    url(r'^account/acc_process/?$', views.acc_process),
+    url(r'^account/account_process/?$', views.account_process),
     url(r'^register/?$', views.register_4m_f4f),
     #url(r'^reg_process/?$', views.reg_4m_f4f_process),
     url(r'^contact/?$', views.contact),
index 1fe771c..9980729 100644 (file)
@@ -43,8 +43,8 @@ from portal.forms                import SliceRequestForm, ContactForm
 from portal.util                 import RegistrationView, ActivationView
 from portal.models               import PendingUser, PendingSlice
 from portal.actions              import authority_get_pi_emails, get_request_by_authority, manifold_add_user, manifold_update_user
-from manifold.core.query         import Query
 from manifold.manifoldapi        import execute_query
+from manifold.core.query         import Query
 from unfold.page                 import Page
 from myslice.viewutils           import topmenu_items, the_user
 from django.http                 import HttpResponseRedirect, HttpResponse
@@ -52,491 +52,6 @@ from django.http                 import HttpResponseRedirect, HttpResponse
 from M2Crypto                    import Rand, RSA, BIO
 import os, re
 
-class DashboardView(TemplateView):
-    template_name = "dashboard.html"
-    
-    #This view requires login 
-    @method_decorator(login_required)
-    def dispatch(self, *args, **kwargs):
-        return super(DashboardView, self).dispatch(*args, **kwargs)
-
-    def get_context_data(self, **kwargs):
-        # We might have slices on different registries with different user accounts 
-        # We note that this portal could be specific to a given registry, to which we register users, but i'm not sure that simplifies things
-        # Different registries mean different identities, unless we identify via SFA HRN or have associated the user email to a single hrn
-
-        #messages.info(self.request, 'You have logged in')
-        page = Page(self.request)
-
-        # Slow...
-        #slice_query = Query().get('slice').filter_by('user.user_hrn', 'contains', user_hrn).select('slice_hrn')
-        slice_query = Query().get('user').filter_by('user_hrn', '==', '$user_hrn').select('user_hrn', 'slice.slice_hrn')
-        auth_query  = Query().get('network').select('network_hrn')
-        print "AUTH QUERY =====================", auth_query
-        print "filter", auth_query.filters
-        page.enqueue_query(slice_query)
-        page.enqueue_query(auth_query)
-
-        page.expose_js_metadata()
-        page.expose_queries()
-
-        slicelist = SimpleList(
-            title = None,
-            page  = page,
-            key   = 'slice.slice_hrn',
-            query = slice_query,
-        )
-         
-        authlist = SimpleList(
-            title = None,
-            page  = page,
-            key   = 'network_hrn',
-            query = auth_query,
-        )
-
-        context = super(DashboardView, self).get_context_data(**kwargs)
-        context['person']   = self.request.user
-        context['networks'] = authlist.render(self.request) 
-        context['slices']   = slicelist.render(self.request)
-
-        # XXX This is repeated in all pages
-        # more general variables expected in the template
-        context['title'] = 'Test view that combines various plugins'
-        # the menu items on the top
-        context['topmenu_items'] = topmenu_items('Dashboard', self.request) 
-        # so we can sho who is logged
-        context['username'] = the_user(self.request) 
-
-        context.update(page.prelude_env())
-
-        return context
-
-# DEPRECATED #class UserRegisterView(RegistrationView):
-# DEPRECATED #    """
-# DEPRECATED #    A registration backend which follows a simple workflow:
-# DEPRECATED #
-# DEPRECATED #    1. User signs up, inactive account is created.
-# DEPRECATED #
-# DEPRECATED #    2. Email is sent to user with activation link.
-# DEPRECATED #
-# DEPRECATED #    3. User clicks activation link, account is now active.
-# DEPRECATED #
-# DEPRECATED #    Using this backend requires that
-# DEPRECATED #
-# DEPRECATED #    * ``registration`` be listed in the ``INSTALLED_APPS`` setting
-# DEPRECATED #      (since this backend makes use of models defined in this
-# DEPRECATED #      application).
-# DEPRECATED #
-# DEPRECATED #    * The setting ``ACCOUNT_ACTIVATION_DAYS`` be supplied, specifying
-# DEPRECATED #      (as an integer) the number of days from registration during
-# DEPRECATED #      which a user may activate their account (after that period
-# DEPRECATED #      expires, activation will be disallowed).
-# DEPRECATED #
-# DEPRECATED #    * The creation of the templates
-# DEPRECATED #      ``registration/activation_email_subject.txt`` and
-# DEPRECATED #      ``registration/activation_email.txt``, which will be used for
-# DEPRECATED #      the activation email. See the notes for this backends
-# DEPRECATED #      ``register`` method for details regarding these templates.
-# DEPRECATED #
-# DEPRECATED #    Additionally, registration can be temporarily closed by adding the
-# DEPRECATED #    setting ``REGISTRATION_OPEN`` and setting it to
-# DEPRECATED #    ``False``. Omitting this setting, or setting it to ``True``, will
-# DEPRECATED #    be interpreted as meaning that registration is currently open and
-# DEPRECATED #    permitt ed.
-# DEPRECATED #
-# DEPRECATED #    Internally, this is accomplished via storing an activation key in
-# DEPRECATED #    an instance of ``registration.models.RegistrationProfile``. See
-# DEPRECATED #    that model and its custom manager for full documentation of its
-# DEPRECATED #    fields and supported operations.
-# DEPRECATED #    
-# DEPRECATED #    """
-# DEPRECATED ## DEPRECATED #    form_class = UserRegisterForm
-# DEPRECATED #    
-# DEPRECATED #    def register(self, request, **cleaned_data):
-# DEPRECATED #        """
-# DEPRECATED #        Given a username, email address and password, register a new
-# DEPRECATED #        user account, which will initially be inactive.
-# DEPRECATED #
-# DEPRECATED #        Along with the new ``User`` object, a new
-# DEPRECATED #        ``registration.models.RegistrationProfile`` will be created,
-# DEPRECATED #        tied to that ``User``, containing the activation key which
-# DEPRECATED #        will be used for this account.
-# DEPRECATED #
-# DEPRECATED #        An email will be sent to the supplied email address; this
-# DEPRECATED #        email should contain an activation link. The email will be
-# DEPRECATED #        rendered using two templates. See the documentation for
-# DEPRECATED #        ``RegistrationProfile.send_activation_email()`` for
-# DEPRECATED #        information about these templates and the contexts provided to
-# DEPRECATED #        them.
-# DEPRECATED #
-# DEPRECATED #        After the ``User`` and ``RegistrationProfile`` are created and
-# DEPRECATED #        the activation email is sent, the signal
-# DEPRECATED #        ``registration.signals.user_registered`` will be sent, with
-# DEPRECATED #        the new ``User`` as the keyword argument ``user`` and the
-# DEPRECATED #        class of this backend as the sender.
-# DEPRECATED #
-# DEPRECATED #        """
-# DEPRECATED #        first_name = cleaned_data['first_name']
-# DEPRECATED #        last_name  = cleaned_data['last_name']
-# DEPRECATED #        affiliation= cleaned_data['affiliation']
-# DEPRECATED #        email      = cleaned_data['email']
-# DEPRECATED #        password   = cleaned_data['password1']
-# DEPRECATED #        
-# DEPRECATED #        #password2  = cleaned_data['password2']
-# DEPRECATED #        keypair    = cleaned_data['keypair']
-# DEPRECATED #
-# DEPRECATED #        #if Site._meta.installed:
-# DEPRECATED #        #    site = Site.objects.get_current()
-# DEPRECATED #        #else:
-# DEPRECATED #        #    site = RequestSite(request) 
-# DEPRECATED #        site = None
-# DEPRECATED #
-# DEPRECATED #        new_user = PendingUser.objects.create_inactive_user(first_name, last_name, email, password, site)
-# DEPRECATED #        signals.user_registered.send(sender=self.__class__,
-# DEPRECATED #                                     user=new_user,
-# DEPRECATED #                                     request=request)
-# DEPRECATED #        return new_user
-# DEPRECATED #
-# DEPRECATED #    def get_context_data(self, **kwargs):
-# DEPRECATED #        context = super(UserRegisterView, self).get_context_data(**kwargs)
-# DEPRECATED #        context['topmenu_items'] = topmenu_items('Register', self.request)
-# DEPRECATED #        context['username'] = the_user (self.request)
-# DEPRECATED #        return context
-# DEPRECATED #
-# DEPRECATED #    def registration_allowed(self, request):
-# DEPRECATED #        """
-# DEPRECATED #        Indicate whether account registration is currently permitted,
-# DEPRECATED #        based on the value of the setting ``REGISTRATION_OPEN``. This
-# DEPRECATED #        is determined as follows:
-# DEPRECATED #
-# DEPRECATED #        * If ``REGISTRATION_OPEN`` is not specified in settings, or is
-# DEPRECATED #          set to ``True``, registration is permitted.
-# DEPRECATED #
-# DEPRECATED #        * If ``REGISTRATION_OPEN`` is both specified and set to
-# DEPRECATED #          ``False``, registration is not permitted.
-# DEPRECATED #        
-# DEPRECATED #        """
-# DEPRECATED #        return getattr(settings, 'REGISTRATION_OPEN', True)
-# DEPRECATED #
-# DEPRECATED #    def get_success_url(self, request, user):
-# DEPRECATED #        """
-# DEPRECATED #        Return the name of the URL to redirect to after successful
-# DEPRECATED #        user registration.
-# DEPRECATED #        
-# DEPRECATED #        """
-# DEPRECATED #        return ('user_register_complete', (), {})
-# DEPRECATED #
-# DEPRECATED #
-# DEPRECATED #class UserValidateView(ActivationView):
-# DEPRECATED #    def activate(self, request, activation_key):
-# DEPRECATED #        """
-# DEPRECATED #        Given an an activation key, look up and activate the user
-# DEPRECATED #        account corresponding to that key (if possible).
-# DEPRECATED #
-# DEPRECATED #        After successful activation, the signal
-# DEPRECATED #        ``registration.signals.user_activated`` will be sent, with the
-# DEPRECATED #        newly activated ``User`` as the keyword argument ``user`` and
-# DEPRECATED #        the class of this backend as the sender.
-# DEPRECATED #        
-# DEPRECATED #        """
-# DEPRECATED #        activated_user = RegistrationProfile.objects.activate_user(activation_key)
-# DEPRECATED #        if activated_user:
-# DEPRECATED #            signals.user_activated.send(sender=self.__class__,
-# DEPRECATED #                                        user=activated_user,
-# DEPRECATED #                                        request=request)
-# DEPRECATED #        return activated_user
-# DEPRECATED #
-# DEPRECATED #    def get_success_url(self, request, user):
-# DEPRECATED #        return ('registration_activation_complete', (), {})
-# DEPRECATED #
-# DEPRECATED #
-# DEPRECATED #from portal.portalpage  import PortalPage
-# DEPRECATED #from plugins.wizard     import Wizard
-# DEPRECATED #from plugins.form       import CreateForm
-# DEPRECATED #from plugins.raw.raw    import Raw          # XXX
-# DEPRECATED #
-# DEPRECATED #from myslice.viewutils  import the_user
-# DEPRECATED #
-# DEPRECATED #from django.template.loader import render_to_string
-# DEPRECATED #from django.template import RequestContext
-# DEPRECATED #from django.views import generic
-# DEPRECATED #
-# DEPRECATED #from django.contrib.formtools.wizard.views import NamedUrlSessionWizardView
-# DEPRECATED ##from django.core.files.storage import FileSystemStorage
-# DEPRECATED #from django.core.files.storage import default_storage
-# DEPRECATED #
-# DEPRECATED ##class MerlinWizard(NamedUrlSessionWizardView):
-# DEPRECATED ##
-# DEPRECATED ##    ...
-# DEPRECATED ##    ...
-# DEPRECATED ##
-# DEPRECATED ##    @classonlymethod
-# DEPRECATED ##    def as_view(cls, *args, **kwargs):
-# DEPRECATED ##        kwargs.update({
-# DEPRECATED ##            'form_list': [
-# DEPRECATED ##                NameForm,
-# DEPRECATED ##                QuestForm,
-# DEPRECATED ##                ColorForm,
-# DEPRECATED ##            ],
-# DEPRECATED ##            'url_name': 'merlin_wizard'
-# DEPRECATED ##        })
-# DEPRECATED ##        return super(MerlinWizard, cls).as_view(*args, **kwargs)
-# DEPRECATED #
-# DEPRECATED #class UserRegisterWizardView(NamedUrlSessionWizardView):
-# DEPRECATED ##class UserRegisterWizardView(LoginRequiredMixin, NamedUrlSessionWizardView):
-# DEPRECATED #    # Notice that I specify a file storage instance. If you don't specify this,
-# DEPRECATED #    # and you need to support FileField or ImageField in your forms, you'll get
-# DEPRECATED #    # errors from Django. This is something else I think could be handled by
-# DEPRECATED #    # the views better. Seems to me that it should just use whatever the
-# DEPRECATED #    # default/specified storage is for the rest of your project/application.
-# DEPRECATED #    file_storage = default_storage # FileSystemStorage()
-# DEPRECATED #    template_name = "register_user_wizard.html"
-# DEPRECATED #
-# DEPRECATED #    def done(self, form_list, **kwargs):
-# DEPRECATED #        step1_form = form_list[0]
-# DEPRECATED #        step2_form = form_list[1]
-# DEPRECATED #
-# DEPRECATED #        productext = self.create_product(product_form)
-# DEPRECATED #        shippings = self.create_shippings(productext, shipping_forms)
-# DEPRECATED #        images = self.create_images(productext, image_forms)
-# DEPRECATED #
-# DEPRECATED #        if all([productext, shippings, images]):
-# DEPRECATED #            del self.request.session["wizard_product_wizard_view"]
-# DEPRECATED #
-# DEPRECATED #            messages.success(self.request,
-# DEPRECATED #                _("Your product has been created."))
-# DEPRECATED #            return HttpResponseRedirect(self.get_success_url(productext))
-# DEPRECATED #
-# DEPRECATED #        messages.error(self.request, _("Something went wrong creating your "
-# DEPRECATED #            "product. Please try again or contact support."))
-# DEPRECATED #        return HttpResponseRedirect(reverse("register_wizard"))
-# DEPRECATED #
-# DEPRECATED #    #def get_form_kwargs(self, step):
-# DEPRECATED #    #    if step == "product":
-# DEPRECATED #    #        return {"user": self.request.user}
-# DEPRECATED #    #    return {}
-# DEPRECATED #
-# DEPRECATED ## The portal should hook the slice and user creation pages
-# DEPRECATED #
-# DEPRECATED #def register_user(request):
-# DEPRECATED #    
-# DEPRECATED #    if request.method == 'POST':
-# DEPRECATED #        form = UserRegisterForm(request.POST) # Nous reprenons les données
-# DEPRECATED #        if form.is_valid():
-# DEPRECATED #            first_name = form.cleaned_data['first_name']
-# DEPRECATED #            last_name  = form.cleaned_data['last_name']
-# DEPRECATED #            email      = form.cleaned_data['email']
-# DEPRECATED #            password   = form.cleaned_data['password']
-# DEPRECATED #            password2  = form.cleaned_data['password2']
-# DEPRECATED #            keypair    = form.cleaned_data['keypair']
-# DEPRECATED #            ## Ici nous pouvons traiter les données du formulaire
-# DEPRECATED #            #sujet = form.cleaned_data['sujet']
-# DEPRECATED #            #message = form.cleaned_data['message']
-# DEPRECATED #            #envoyeur = form.cleaned_data['envoyeur']
-# DEPRECATED #            #renvoi = form.cleaned_data['renvoi']
-# DEPRECATED #            ## Nous pourrions ici envoyer l'e-mail grâce aux données que nous venons de récupérer
-# DEPRECATED #            #envoi = True
-# DEPRECATED #    else:
-# DEPRECATED #        form = UserRegisterForm()
-# DEPRECATED #    return render(request, 'register_user.html', locals())
-# DEPRECATED #
-# DEPRECATED #def index(request):
-# DEPRECATED #
-# DEPRECATED #    WIZARD_TITLE = 'User registration'
-# DEPRECATED #    STEP1_TITLE  = 'Enter your details'
-# DEPRECATED #    STEP2_TITLE  = 'Select your institution'
-# DEPRECATED #    STEP3_TITLE  = 'Authentication'
-# DEPRECATED #    STEP4_TITLE  = 'Request a slice (optional)'
-# DEPRECATED #    STEP5_TITLE  = 'Waiting for validation'
-# DEPRECATED #    STEP6_TITLE  = 'Account validated'
-# DEPRECATED #
-# DEPRECATED #    STEP0 = render_to_string('account_validated.html', context_instance=RequestContext(request))
-# DEPRECATED #    STEP2_HTML   = """
-# DEPRECATED #    coucou
-# DEPRECATED #    """
-# DEPRECATED #    STEP4 = """
-# DEPRECATED #    mede
-# DEPRECATED #    """
-# DEPRECATED #    STEP5 = render_to_string('account_validated.html', context_instance=RequestContext(request))
-# DEPRECATED #
-# DEPRECATED #    p = PortalPage(request)
-# DEPRECATED #
-# DEPRECATED #    # This is redundant with the Wizard title
-# DEPRECATED #    p << "<h3>User registration</h3>"
-# DEPRECATED #
-# DEPRECATED #    sons = []
-# DEPRECATED #    start_step = 1
-# DEPRECATED #
-# DEPRECATED #    # STEP 1
-# DEPRECATED #    # If the user already exists (is logged), let's display a summary of his account details
-# DEPRECATED #    # Otherwise propose a form to fill in
-# DEPRECATED #    if the_user(request):
-# DEPRECATED #        # Fill a disabled form with user info
-# DEPRECATED #        # Please logout to register another user
-# DEPRECATED #        sons.append(Raw(page=p, title=STEP1_TITLE, togglable=False, html=STEP0))
-# DEPRECATED #        start_step += 1
-# DEPRECATED #    else:
-# DEPRECATED #        # We could pass a list of fields also, instead of retrieving them from metadata
-# DEPRECATED #        # Otherwise we need some heuristics to display nice forms
-# DEPRECATED #        # XXX Could we log the user in after the form is validated ?
-# DEPRECATED #        # XXX Explain the password is for XXX
-# DEPRECATED #        field_list = [{
-# DEPRECATED #            'name'        : 'First name',
-# DEPRECATED #            'field'       : 'firstname',
-# DEPRECATED #            'type'        : 'text',
-# DEPRECATED #            'validate_rx' : '^[a-zA-Z -]+$',
-# DEPRECATED #            'validate_err': 'Your first name must be comprised of letters only',
-# DEPRECATED #            'description' : 'Enter your first name',
-# DEPRECATED #        }, {
-# DEPRECATED #            'name'        : 'Last name',
-# DEPRECATED #            'field'       : 'lastname',
-# DEPRECATED #            'type'        : 'text',
-# DEPRECATED #            'validate_rx' : '^[a-zA-Z -]+$',
-# DEPRECATED #            'validate_err': 'Your last name must be comprised of letters only',
-# DEPRECATED #            'description' : 'Enter your last name',
-# DEPRECATED #        }, { 
-# DEPRECATED #            'name'        : 'Email',
-# DEPRECATED #            'field'       : 'email',
-# DEPRECATED #            'type'        : 'text',
-# DEPRECATED #            'description' : 'Enter your email address',
-# DEPRECATED #        }, {
-# DEPRECATED #            'name'        : 'Password',
-# DEPRECATED #            'field'       : 'password',
-# DEPRECATED #            'type'        : 'password',
-# DEPRECATED #            'description' : 'Enter your password',
-# DEPRECATED #        }, {
-# DEPRECATED #            'name'        : 'Confirm password',
-# DEPRECATED #            'field'       : 'password2',
-# DEPRECATED #            'type'        : 'password',
-# DEPRECATED #            'description' : 'Enter your password again',
-# DEPRECATED #        }]
-# DEPRECATED #        sons.append(CreateForm(page = p, title = STEP1_TITLE, togglable = False, object = 'local:user', fields = field_list))
-# DEPRECATED #
-# DEPRECATED #    # STEP 2
-# DEPRECATED #    # If the user already exists (is logged), let's display a summary of its institution
-# DEPRECATED #    # Otherwise propose a form to fill in (we should base our selection on the email)
-# DEPRECATED #    if the_user(request):
-# DEPRECATED #        # Fill a disabled form with institution
-# DEPRECATED #        # Please logout to register another user
-# DEPRECATED #        sons.append(Raw(page=p, title=STEP2_TITLE, togglable=False, html="User created"))
-# DEPRECATED #        start_step += 1
-# DEPRECATED #    else:
-# DEPRECATED #        sons.append(CreateForm(page = p, title = STEP2_TITLE, togglable = False, object = 'slice')) #institution'))
-# DEPRECATED #
-# DEPRECATED #    # STEP3
-# DEPRECATED #    # Please should your prefered authentication method
-# DEPRECATED #    # This step should allow the user to either choose the user or managed mode in MySlice
-# DEPRECATED #    sons.append(Raw(page = p, title = STEP3_TITLE, togglable = False, html = STEP2_HTML))
-# DEPRECATED #
-# DEPRECATED #    # Step 4: Request a slice (optional)
-# DEPRECATED #    sons.append(CreateForm(page = p, title = STEP4_TITLE, togglable = False, object = 'slice'))
-# DEPRECATED #
-# DEPRECATED #    # Step 5: Your request is waiting for validation
-# DEPRECATED #    # Periodic refresh
-# DEPRECATED #    sons.append(Raw(page = p, title = STEP5_TITLE, togglable = False, html = STEP4))
-# DEPRECATED #
-# DEPRECATED #    # Step 6: Account validation  = welcome for newly validated users
-# DEPRECATED #    # . delegation
-# DEPRECATED #    # . platforms
-# DEPRECATED #    # . slice
-# DEPRECATED #    # . pointers
-# DEPRECATED #    sons.append(Raw(page = p, title = STEP6_TITLE, togglable = False, html = STEP5))
-# DEPRECATED #
-# DEPRECATED #    wizard = Wizard(
-# DEPRECATED #        page       = p,
-# DEPRECATED #        title      = WIZARD_TITLE,
-# DEPRECATED #        togglable  = False,
-# DEPRECATED #        sons       = sons,
-# DEPRECATED #        start_step = start_step,
-# DEPRECATED #    )
-# DEPRECATED #
-# DEPRECATED #    p << wizard.render(request) # in portal page if possible
-# DEPRECATED #
-# DEPRECATED #    return p.render()
-
-
-# DEPRECATED ## view for my_account
-# DEPRECATED # class MyAccountView(TemplateView):
-# DEPRECATED #    template_name = "my_account.html"
-# DEPRECATED #    
-# DEPRECATED #    def from_process(self, request, **cleaned_data): 
-# DEPRECATED #        #if request.method == 'POST':
-# DEPRECATED #         #       if request.POST['submit_name']:
-# DEPRECATED #        if 'fname' in request.POST:            
-# DEPRECATED #                messsag= "Got Name"
-# DEPRECATED #                #return render(request, 'portal/my_account.html')
-# DEPRECATED #                #response = HttpResponse("Here's the text of the Web page.")    
-# DEPRECATED #                return HttpResponse(message)
-# DEPRECATED #            
-# DEPRECATED #    def get_context_data(self, **kwargs):
-# DEPRECATED #        page = Page(self.request)
-# DEPRECATED #        context = super(MyAccountView, self).get_context_data(**kwargs)
-# DEPRECATED #        context['person']   = self.request.user
-# DEPRECATED #        # XXX This is repeated in all pages
-# DEPRECATED #        # more general variables expected in the template
-# DEPRECATED #        context['title'] = 'User Profile Page'
-# DEPRECATED #        # the menu items on the top
-# DEPRECATED #        context['topmenu_items'] = topmenu_items('my_account', self.request)
-# DEPRECATED #        # so we can sho who is logged
-# DEPRECATED #        context['username'] = the_user(self.request)
-# DEPRECATED #        context.update(page.prelude_env())
-# DEPRECATED #        return context
-
-# View for platforms
-class PlatformsView(TemplateView):
-    template_name = "platforms.html"
-
-    def get_context_data(self, **kwargs):
-        page = Page(self.request)
-
-        #network_query  = Query().get('local:platform').filter_by('disabled', '==', '0').select('platform','platform_longname','gateway_type')
-        network_query  = Query().get('local:platform').select('platform','platform_longname','gateway_type')
-        page.enqueue_query(network_query)
-
-        page.expose_js_metadata()
-        page.expose_queries()
-        networklist = Hazelnut(
-            page  = page,
-            title = 'List',
-            domid = 'checkboxes',
-            # this is the query at the core of the slice list
-            query = network_query,
-            query_all = network_query,
-            checkboxes = False,
-            datatables_options = {
-            # for now we turn off sorting on the checkboxes columns this way
-            # this of course should be automatic in hazelnut
-            'aoColumns'      : [None, None, None, None, {'bSortable': False}],
-            'iDisplayLength' : 25,
-            'bLengthChange'  : True,
-            },
-        )
-#
-#        networklist = SimpleList(
-#            title = None,
-#            page  = page,
-#            key   = 'platform',
-#            query = network_query,
-#        )
-
-        context = super(PlatformsView, self).get_context_data(**kwargs)
-        context['person']   = self.request.user
-        context['networks'] = networklist.render(self.request)
-
-        # XXX This is repeated in all pages
-        # more general variables expected in the template
-        context['title'] = 'Platforms connected to MySlice'
-        # the menu items on the top
-        context['topmenu_items'] = topmenu_items('Platforms', self.request)
-        # so we can sho who is logged
-        context['username'] = the_user(self.request)
-
-        context.update(page.prelude_env())
-
-        return context
-
-
-
 # View for 1 platform and its details
 class PlatformView(TemplateView):
     template_name = "platform.html"
@@ -673,14 +188,12 @@ class AccountView(TemplateView):
         #context.update(page.prelude_env())
         return context
 
-#my_acc form value processing
 @login_required
-def acc_process(request):
-    
+#my_acc form value processing
+def account_process(request):
     user_query  = Query().get('local:user').select('password','config')
     user_details = execute_query(request, user_query)
 
-
     if 'submit_name' in request.POST:
         edited_first_name =  request.POST['fname']
         edited_last_name =  request.POST['lname']