SliceRequest: Slicename should only be letter, number and underscore + bugfix
authorYasin <mohammed-yasin.rahman@lip6.fr>
Tue, 15 Jul 2014 13:53:16 +0000 (15:53 +0200)
committerYasin <mohammed-yasin.rahman@lip6.fr>
Tue, 15 Jul 2014 13:53:16 +0000 (15:53 +0200)
portal/actions.py
portal/registrationview.py
portal/slicerequestview.py
portal/templates/onelab/onelab_slicerequest_view.html
portal/templates/slice_request_email.html
portal/templates/slice_request_email.txt

index baf4cca..e218126 100644 (file)
@@ -402,7 +402,7 @@ def create_pending_slice(wsgi_request, request, email):
         slice_name      = request['slice_name'],
         user_hrn        = request['user_hrn'],
         authority_hrn   = request['authority_hrn'],
-        number_of_nodes = request['number_of_nodes'],
+        number_of_nodes = request['exp_url'],
         purpose         = request['purpose'],
     )
     s.save()
index 6a8322d..7967a91 100644 (file)
@@ -89,9 +89,9 @@ class RegistrationView (FreeAccessView, ThemeView):
             # Validate input
             UserModel = get_user_model()
             if (re.search(r'^[\w+\s.@+-]+$', user_request['first_name']) == None):
-                errors.append('First Name may contain only letters, numbers, spaces and @/./+/-/_ characters.')
+                errors.append('First name may contain only letters, numbers, spaces and @/./+/-/_ characters.')
             if (re.search(r'^[\w+\s.@+-]+$', user_request['last_name']) == None):
-                errors.append('Last Name may contain only letters, numbers, spaces and @/./+/-/_ characters.')
+                errors.append('Last name may contain only letters, numbers, spaces and @/./+/-/_ characters.')
             # checking in django_db !!
             if PendingUser.objects.filter(email__iexact = user_request['email']):
                 errors.append('Email is pending for validation. Please provide a new email address.')
index 8cd0af4..734ac9c 100644 (file)
@@ -14,7 +14,7 @@ from ui.topmenu                 import topmenu_items_live, the_user
 
 from myslice.theme import ThemeView
 
-import json, time
+import json, time, re
 
 class SliceRequestView (LoginRequiredAutoLogoutView, ThemeView):
     template_name = 'slicerequest_view.html'
@@ -31,7 +31,9 @@ class SliceRequestView (LoginRequiredAutoLogoutView, ThemeView):
         """
         """
         errors = []
-
+        slice_name =''
+        purpose=''
+        exp_url=''
         # Retrieve the list of authorities
         authorities_query = Query.get('authority').select('name', 'authority_hrn')
         authorities = execute_admin_query(wsgi_request, authorities_query)
@@ -105,11 +107,13 @@ class SliceRequestView (LoginRequiredAutoLogoutView, ThemeView):
                 'authority_hrn'     : authority_hrn,
                 'organization'      : wsgi_request.POST.get('org_name', ''),
                 'slice_name'        : wsgi_request.POST.get('slice_name', ''),
-                'number_of_nodes'   : wsgi_request.POST.get('number_of_nodes', ''),
+                'exp_url'           : wsgi_request.POST.get('exp_url', ''),
                 'purpose'           : wsgi_request.POST.get('purpose', ''),
                 'current_site'      : current_site
             }
             
+            exp_url = slice_request['exp_url']
+           
             authority_hrn = slice_request['authority_hrn']
             if (authority_hrn is None or authority_hrn == ''):
                 errors.append('Please, select an authority')
@@ -117,7 +121,11 @@ class SliceRequestView (LoginRequiredAutoLogoutView, ThemeView):
             # What kind of slice name is valid?
             slice_name = slice_request['slice_name']
             if (slice_name is None or slice_name == ''):
-                errors.append('Slice Name is mandatory')
+                errors.append('Slice name is mandatory')
+            
+            if (re.search(r'^[A-Za-z0-9_]*$', slice_name) == None):
+                errors.append('Slice name may contain only letters, numbers, and underscore.')
+
     
             purpose = slice_request['purpose']
             if (purpose is None or purpose == ''):
@@ -141,8 +149,11 @@ class SliceRequestView (LoginRequiredAutoLogoutView, ThemeView):
             'username': wsgi_request.user.email,
             'topmenu_items': topmenu_items_live('Request a slice', page),
             'errors': errors,
+            'slice_name': slice_name,
+            'purpose': purpose,
             'email': user_email,
             'user_hrn': user_hrn,
+            'exp_url': exp_url,
             'pi': pi,
             'authority_name': authority_name,        
             'cc_myself': True,
index 3c38346..82ccd16 100644 (file)
@@ -30,7 +30,7 @@
                            <input type="email" class="form-control" id="email" style="width:300px" value="{{ email }}" readonly="readonly">
                          </div>
                          <div class="form-group">
-                           <input type="text" class="form-control" name="slice_name" id="slice_name" style="width:300px" placeholder="Slice Name
+                           <input type="text" class="form-control" name="slice_name" id="slice_name" style="width:300px" placeholder="Slice name" value="{{slice_name}}
                                title="Please enter a name for your slice"required="required">
                          </div>
                          <div class="form-group">
@@ -43,8 +43,8 @@
                                {%endif%}
                          </div>
                          <div class="form-group">
-                           <input type="text" class="form-control" name="number_of_nodes" id="number_of_nodes" style="width:300px" placeholder="Experiment URL (if one exists)"
-                               title="Please provide the url of your experiment if you have one.">
+                           <input type="text" class="form-control" name="exp_url" id="exp_url" style="width:300px" placeholder="Experiment URL (if one exists)"
+                               title="Please provide the url of your experiment if you have one." value="{{exp_url}}">
                          </div>
                          <div class="form-group">
                                <textarea id="purpose" name="purpose" class="form-control" rows="6" placeholder="Experiment Purpose" style="width:300px" 
index 417a8bd..8306c2b 100644 (file)
@@ -2,10 +2,10 @@
 <br>
 <h1>NEW SLICE REQUEST</h1>
 <br>
-<b>slice name      :</b> {{slice_name}}</br>
-<b>number of nodes :</b> {{number_of_nodes}}</br>
-<b>purpose         :</b> {{purpose}}</br>
-<b>organization           :</b> {{organization}}
-<b>email           :</b> {{email}}</br>
+<b>Slice name      :</b> {{slice_name}}</br>
+<b>URL                            :</b> {{exp_url}}</br>
+<b>Purpose         :</b> {{purpose}}</br>
+<b>Organization           :</b> {{organization}}</br>
+<b>Email           :</b> {{email}}</br>
 <b>Portal url     :</b> {{current_site}}</br> 
 
index 6cd5a2d..c8a51b5 100644 (file)
@@ -1,9 +1,9 @@
 NEW SLICE REQUEST
 
-slice name      : {{slice_name}}
-number of nodes : {{number_of_nodes}}
-purpose         : {{purpose}}
-email           : {{email}}
-organization   : {{organization}}
+Slice name      : {{slice_name}}
+URL                    : {{exp_url}}
+Purpose         : {{purpose}}
+Email           : {{email}}
+Organization   : {{organization}}
 Portal url             : {{current_site}}