added a page to list the platforms plugged into MySlice, need to be improved...
[myslice.git] / portal / views.py
index 3b8da85..abbb36e 100644 (file)
@@ -473,7 +473,47 @@ class UserValidateView(ActivationView):
 
 # View for my_account form
 def my_account(request):
-    return render(request, 'my_account.html')
+    return render(request, 'my_account.html', {
+        #'form': form,
+        'topmenu_items': topmenu_items('My Account', request),
+        'username': the_user (request)
+    })
+
+# 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').select('platform')
+        page.enqueue_query(network_query)
+
+        page.expose_js_metadata()
+        page.expose_queries()
+
+        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
 
 #my_acc form value processing
 def acc_process(request):
@@ -551,7 +591,7 @@ def acc_process(request):
         file_name = up_file.name
         file_extension = os.path.splitext(file_name)[1] 
         allowed_extension =  ['.pub','.txt']
-        if file_extension in allowed_extension:
+        if file_extension in allowed_extension and re.search(r'ssh-rsa',file_content):
             file_content = '{"user_public_key":"'+ file_content +'"}'
             file_content = re.sub("\r", "", file_content)
             file_content = re.sub("\n", "\\n",file_content)
@@ -560,16 +600,16 @@ def acc_process(request):
             get_user.save()
             return HttpResponse('Success: Publickey uploaded! Old records overwritten')
         else:
-            return HttpResponse('Please upload a valid public key [.txt or .pub].')    
+            return HttpResponse('Please upload a valid RSA public key [.txt or .pub].')    
         
     else:
         message = 'You submitted an empty form.'
         return HttpResponse(message)
 
 def register_4m_f4f(request):
-    return render(request, 'register_4m_f4f.html')
+    #return render(request, 'register_4m_f4f.html')
 
-def reg_4m_f4f_process(request):
+#def reg_4m_f4f_process(request):
     if 'submit' in request.POST:
         #get_email = PendingUser.objects.get(email)
         reg_fname = request.POST['firstname']
@@ -579,13 +619,21 @@ def reg_4m_f4f_process(request):
         
         #POST value validation  
         if (re.search(r'^[\w+\s.@+-]+$', reg_fname)==None):
-            return HttpResponse("Only Letters, Numbers, - and _ allowd in First Name")
+            messages.error(request, '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')
         if (re.search(r'^[\w+\s.@+-]+$', reg_lname) == None):
-            return HttpResponse("Only Letters, Numbers, - and _ is allowed in Last name")
+            messages.error(request, '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')
         if (re.search(r'^[\w+\s.@+-]+$', reg_aff) == None):
-            return HttpResponse("Only Letters, Numbers and _ is allowed in Affiliation")
+            messages.error(request, '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')
         if PendingUser.objects.filter(email__iexact=reg_email):
-            return HttpResponse("Email Already exists")
+            messages.error(request, 'Email already registered.Please provide a new email address.')
+            #return HttpResponse("Email Already exists")
+            return render(request, 'register_4m_f4f.html')
         if 'generate' in request.POST['question']:
             #import os
             #from M2Crypto import Rand, RSA, BIO
@@ -622,20 +670,20 @@ def reg_4m_f4f_process(request):
             file_name = up_file.name
             file_extension = os.path.splitext(file_name)[1]
             allowed_extension =  ['.pub','.txt']
-            if file_extension in allowed_extension:
+            if file_extension in allowed_extension and re.search(r'ssh-rsa',file_content):
                 keypair = '{"user_public_key":"'+ file_content +'"}'
                 keypair = re.sub("\r", "", keypair)
                 keypair = re.sub("\n", "\\n",keypair)
                 keypair = ''.join(keypair.split())
             else:
-                return HttpResponse('Please upload a valid public key [.txt or .pub].')
+                return HttpResponse('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 HttpResponse('Registration Successful. Please wait for account validation.')
-        
+        return render(request, 'user_register_complete.html')
+    return render(request, 'register_4m_f4f.html')        
     
 
 # view for contact form
@@ -661,9 +709,12 @@ def contact(request):
             return render(request,'contact_sent.html') # Redirect after POST
     else:
         form = ContactForm() # An unbound form
-
+    
     return render(request, 'contact.html', {
         'form': form,
+        'topmenu_items': topmenu_items('Contact Us', request),
+        'username': the_user (request)
+
     })