Merge branch 'jordan' of ssh://git.onelab.eu/git/myslice into jordan
authorLoic Baron <loic.baron@lip6.fr>
Fri, 23 Aug 2013 09:10:12 +0000 (11:10 +0200)
committerLoic Baron <loic.baron@lip6.fr>
Fri, 23 Aug 2013 09:10:12 +0000 (11:10 +0200)
Conflicts:
myslice/viewutils.py

1  2 
myslice/viewutils.py
portal/views.py

diff --combined myslice/viewutils.py
@@@ -20,12 -20,13 +20,12 @@@ def topmenu_items (current,request=None
          result=deepcopy(standard_topmenu_items)
          result.append({'label':'My Account', 'href': '/portal/account/'})
          result.append({ 'label':'Request a slice', 'href': '/portal/slice_request/'})
 -        result.append({'label':'Contact Support', 'href': '/portal/contact/'})
      else:
          result = []
          result.append({'label':'Home', 'href': '/login'})
-         result.append({ 'label':'Register', 'href': '/portal/user/register/'})
+         result.append({ 'label':'Register', 'href': '/portal/register/'})
 -        result.append({'label':'Contact Support', 'href': '/portal/contact/'})
      result.append({'label':'Platforms', 'href': '/portal/platforms/'})
 +    result.append({'label':'Contact Support', 'href': '/portal/contact/'})
      for d in result:
          #if d['label'].lower()find(current)>=0: d['is_active']=True
          if d['label'] == current: d['is_active']=True
diff --combined portal/views.py
@@@ -35,7 -35,7 +35,7 @@@ from portal.event import Even
  import json
  
  from portal                      import signals
- from portal.forms                import UserRegisterForm, SliceRequestForm, ContactForm
+ from portal.forms                import SliceRequestForm, ContactForm
  from portal.util                 import RegistrationView, ActivationView
  from portal.models               import PendingUser, PendingSlice
  from manifold.core.query         import Query
@@@ -98,145 -98,145 +98,145 @@@ class DashboardView(TemplateView)
  
          return context
  
- class UserRegisterView(RegistrationView):
-     """
-     A registration backend which follows a simple workflow:
-     1. User signs up, inactive account is created.
-     2. Email is sent to user with activation link.
-     3. User clicks activation link, account is now active.
-     Using this backend requires that
-     * ``registration`` be listed in the ``INSTALLED_APPS`` setting
-       (since this backend makes use of models defined in this
-       application).
-     * The setting ``ACCOUNT_ACTIVATION_DAYS`` be supplied, specifying
-       (as an integer) the number of days from registration during
-       which a user may activate their account (after that period
-       expires, activation will be disallowed).
-     * The creation of the templates
-       ``registration/activation_email_subject.txt`` and
-       ``registration/activation_email.txt``, which will be used for
-       the activation email. See the notes for this backends
-       ``register`` method for details regarding these templates.
-     Additionally, registration can be temporarily closed by adding the
-     setting ``REGISTRATION_OPEN`` and setting it to
-     ``False``. Omitting this setting, or setting it to ``True``, will
-     be interpreted as meaning that registration is currently open and
-     permitt ed.
-     Internally, this is accomplished via storing an activation key in
-     an instance of ``registration.models.RegistrationProfile``. See
-     that model and its custom manager for full documentation of its
-     fields and supported operations.
-     
-     """
-     form_class = UserRegisterForm
-     
-     def register(self, request, **cleaned_data):
-         """
-         Given a username, email address and password, register a new
-         user account, which will initially be inactive.
-         Along with the new ``User`` object, a new
-         ``registration.models.RegistrationProfile`` will be created,
-         tied to that ``User``, containing the activation key which
-         will be used for this account.
-         An email will be sent to the supplied email address; this
-         email should contain an activation link. The email will be
-         rendered using two templates. See the documentation for
-         ``RegistrationProfile.send_activation_email()`` for
-         information about these templates and the contexts provided to
-         them.
-         After the ``User`` and ``RegistrationProfile`` are created and
-         the activation email is sent, the signal
-         ``registration.signals.user_registered`` will be sent, with
-         the new ``User`` as the keyword argument ``user`` and the
-         class of this backend as the sender.
-         """
-         first_name = cleaned_data['first_name']
-         last_name  = cleaned_data['last_name']
-         affiliation= cleaned_data['affiliation']
-         email      = cleaned_data['email']
-         password   = cleaned_data['password1']
-         
-         #password2  = cleaned_data['password2']
-         keypair    = cleaned_data['keypair']
-         #if Site._meta.installed:
-         #    site = Site.objects.get_current()
-         #else:
-         #    site = RequestSite(request) 
-         site = None
-         new_user = PendingUser.objects.create_inactive_user(first_name, last_name, email, password, site)
-         signals.user_registered.send(sender=self.__class__,
-                                      user=new_user,
-                                      request=request)
-         return new_user
-     def get_context_data(self, **kwargs):
-         context = super(UserRegisterView, self).get_context_data(**kwargs)
-         context['topmenu_items'] = topmenu_items('Register', self.request)
-         context['username'] = the_user (self.request)
-         return context
-     def registration_allowed(self, request):
-         """
-         Indicate whether account registration is currently permitted,
-         based on the value of the setting ``REGISTRATION_OPEN``. This
-         is determined as follows:
-         * If ``REGISTRATION_OPEN`` is not specified in settings, or is
-           set to ``True``, registration is permitted.
-         * If ``REGISTRATION_OPEN`` is both specified and set to
-           ``False``, registration is not permitted.
-         
-         """
-         return getattr(settings, 'REGISTRATION_OPEN', True)
-     def get_success_url(self, request, user):
-         """
-         Return the name of the URL to redirect to after successful
-         user registration.
-         
-         """
-         return ('user_register_complete', (), {})
- class UserValidateView(ActivationView):
-     def activate(self, request, activation_key):
-         """
-         Given an an activation key, look up and activate the user
-         account corresponding to that key (if possible).
-         After successful activation, the signal
-         ``registration.signals.user_activated`` will be sent, with the
-         newly activated ``User`` as the keyword argument ``user`` and
-         the class of this backend as the sender.
-         
-         """
-         activated_user = RegistrationProfile.objects.activate_user(activation_key)
-         if activated_user:
-             signals.user_activated.send(sender=self.__class__,
-                                         user=activated_user,
-                                         request=request)
-         return activated_user
-     def get_success_url(self, request, user):
-         return ('registration_activation_complete', (), {})
# 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
@@@ -486,7 -486,7 +486,7 @@@ class PlatformsView(TemplateView)
      def get_context_data(self, **kwargs):
          page = Page(self.request)
  
 -        network_query  = Query().get('local:platform').select('platform','platform_longname','gateway_type')
 +        network_query  = Query().get('local:platform').filter_by('disabled', '==', '0').select('platform','platform_longname','gateway_type')
          page.enqueue_query(network_query)
  
          page.expose_js_metadata()
@@@ -623,33 -623,31 +623,31 @@@ def acc_process(request)
          return HttpResponse(message)
  
  def register_4m_f4f(request):
-     #return render(request, 'register_4m_f4f.html')
- #def reg_4m_f4f_process(request):
-     if 'submit' in request.POST:
+     errors = []
+     if request.method == 'POST':
          #get_email = PendingUser.objects.get(email)
-         reg_fname = request.POST['firstname']
-         reg_lname = request.POST['lastname']
-         reg_aff = request.POST['affiliation']
-         reg_email = request.POST['email'].lower()
+         reg_fname = request.POST.get('firstname', '')
+         reg_lname = request.POST.get('lastname', '')
+         reg_aff = request.POST.get('affiliation','')
+         reg_email = request.POST.get('email','').lower()
          
          #POST value validation  
          if (re.search(r'^[\w+\s.@+-]+$', reg_fname)==None):
-             messages.error(request, 'First Name may contain only letters, numbers, spaces and @/./+/-/_ characters.')
+             errors.append('First Name may contain only letters, numbers, spaces and @/./+/-/_ characters.')
              #return HttpResponse("Only Letters, Numbers, - and _ allowd in First Name")
-             return render(request, 'register_4m_f4f.html')
+             #return render(request, 'register_4m_f4f.html')
          if (re.search(r'^[\w+\s.@+-]+$', reg_lname) == None):
-             messages.error(request, 'Last Name may contain only letters, numbers, spaces and @/./+/-/_ characters.')
+             errors.append('Last Name may contain only letters, numbers, spaces and @/./+/-/_ characters.')
              #return HttpResponse("Only Letters, Numbers, - and _ is allowed in Last name")
-             return render(request, 'register_4m_f4f.html')
+             #return render(request, 'register_4m_f4f.html')
          if (re.search(r'^[\w+\s.@+-]+$', reg_aff) == None):
-             messages.error(request, 'Affiliation may contain only letters, numbers, spaces and @/./+/-/_ characters.')
+             errors.append('Affiliation may contain only letters, numbers, spaces and @/./+/-/_ characters.')
              #return HttpResponse("Only Letters, Numbers and _ is allowed in Affiliation")
-             return render(request, 'register_4m_f4f.html')
+             #return render(request, 'register_4m_f4f.html')
          if PendingUser.objects.filter(email__iexact=reg_email):
-             messages.error(request, 'Email already registered.Please provide a new email address.')
+             errors.append('Email already registered.Please provide a new email address.')
              #return HttpResponse("Email Already exists")
-             return render(request, 'register_4m_f4f.html')
+             #return render(request, 'register_4m_f4f.html')
          if 'generate' in request.POST['question']:
              #import os
              #from M2Crypto import Rand, RSA, BIO
                  keypair = re.sub("\n", "\\n",keypair)
                  keypair = ''.join(keypair.split())
              else:
-                 return HttpResponse('Please upload a valid RSA public key [.txt or .pub].')
+                 errors.append('Please upload a valid RSA public key [.txt or .pub].')
  
-         b = PendingUser(first_name=reg_fname, last_name=reg_lname, affiliation=reg_aff, 
-                         email=reg_email, password=request.POST['password'], keypair=keypair)
-         b.save()
-         return render(request, 'user_register_complete.html')
-     return render(request, 'register_4m_f4f.html')        
+         #b = PendingUser(first_name=reg_fname, last_name=reg_lname, affiliation=reg_aff, 
+         #                email=reg_email, password=request.POST['password'], keypair=keypair)
+         #b.save()
+         if not errors:
+             b = PendingUser(first_name=reg_fname, last_name=reg_lname, affiliation=reg_aff,
+                             email=reg_email, password=request.POST['password'], keypair=keypair)
+             b.save()
+             return render(request, 'user_register_complete.html')
+     return render(request, 'register_4m_f4f.html',{
+         'topmenu_items': topmenu_items('Register', request),
+         'errors': errors,
+         'firstname': request.POST.get('firstname', ''),
+         'lastname': request.POST.get('lastname', ''),
+         'affiliation': request.POST.get('affiliation', ''),
+         'email': request.POST.get('email', ''),
+         'password': request.POST.get('password', ''),           
+     })        
      
  
  # view for contact form