Merge branch 'jordan' of ssh://git.onelab.eu/git/myslice into jordan
authorYasin <mohammed-yasin.rahman@lip6.fr>
Fri, 2 Aug 2013 15:49:35 +0000 (17:49 +0200)
committerYasin <mohammed-yasin.rahman@lip6.fr>
Fri, 2 Aug 2013 15:49:35 +0000 (17:49 +0200)
1  2 
portal/views.py

diff --combined portal/views.py
@@@ -27,7 -27,13 +27,13 @@@ from django.contrib              impor
  from django.views.generic        import View
  from django.views.generic.base   import TemplateView
  from django.shortcuts            import render
  from plugins.lists.simplelist    import SimpleList
+ from plugins.pres_view           import PresView
+ from portal.event import Event
+ import json
  from portal                      import signals
  from portal.forms                import UserRegisterForm, SliceRequestForm, ContactForm
  from portal.util                 import RegistrationView, ActivationView
@@@ -36,13 -42,13 +42,14 @@@ from manifold.core.query         impor
  from unfold.page                 import Page
  from myslice.viewutils           import topmenu_items, the_user
  from django.http                 import HttpResponseRedirect, HttpResponse
 +import os.path, re
  
  class DashboardView(TemplateView):
      template_name = "dashboard.html"
  
      def get_context_data(self, **kwargs):
          user_hrn = 'ple.upmc.jordan_auge'
+         #user_hrn = 'iotlab.auge'
  
          #messages.info(self.request, 'You have logged in')
          page = Page(self.request)
@@@ -466,8 -472,6 +473,8 @@@ def my_account(request)
  
  #my_acc form value processing
  def acc_process(request):
 +    # getting the user_id from the session [now hardcoded]
 +    get_user = PendingUser.objects.get(id='1') # here we will get the id/email from session e.g., person.email
      if 'submit_name' in request.POST:
          edited_first_name =  request.POST['fname']
          edited_last_name =  request.POST['lname']
          
          # select and update [will be used throughout this view]
          # select the logged in user [for the moment hard coded]
 -        get_user = PendingUser.objects.get(id='1') # here we will get the id/email from session e.g., person.email
 +        #get_user = PendingUser.objects.get(id='1') # here we will get the id/email from session e.g., person.email
          # update first and last name
          get_user.first_name = edited_first_name
          get_user.last_name = edited_last_name
      elif 'submit_pass' in request.POST:
          edited_password = request.POST['password']
          # select the logged in user [for the moment hard coded]
 -        get_user = PendingUser.objects.get(id='1') # here we will get the id/email from session e.g., person.email
 +        #get_user = PendingUser.objects.get(id='1') # here we will get the id/email from session e.g., person.email
          # update password
          get_user.password = edited_password
          get_user.save()
          a =2
          message = 'Here will generate ssh-rsa keys :D %d' %a
          return HttpResponse(message)
 +    elif 'upload_key' in request.POST:
 +        up_file = request.FILES['pubkey']
 +        file_content =  up_file.read()
 +        file_name = up_file.name
 +        file_extension = os.path.splitext(file_name)[1] 
 +        allowed_extension =  ['.pub','.txt']
 +        if file_extension in allowed_extension:
 +            file_content = '{user_public_key:'+ file_content +'}'
 +            file_content = re.sub("\r", "", file_content)
 +            file_content = re.sub("\n", "\\n",file_content)
 +            get_user.keypair = file_content
 +            get_user.save()
 +            return HttpResponse('Success: Publickey uploaded! Old records overwritten')
 +        else:
 +            return HttpResponse('Please upload a valid public key.')    
 +        
      else:
          message = 'You submitted an empty form.'
          return HttpResponse(message)
@@@ -594,3 -582,175 +601,175 @@@ def slice_request(request)
          'username': the_user (request) 
      })
  
+ class PresViewView(TemplateView):
+     template_name = "view-unfold1.html"
+     def get_context_data(self, **kwargs):
+         page = Page(self.request)
+         pres_view = PresView(page = page)
+         context = super(PresViewView, self).get_context_data(**kwargs)
+         #context['ALL_STATIC'] = "all_static"
+         context['unfold1_main'] = pres_view.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('PresView', self.request)
+         # so we can sho who is logged
+         context['username'] = the_user(self.request)
+         prelude_env = page.prelude_env()
+         context.update(prelude_env)
+         return context
+ def json_me(config_file,type):
+     json_answer = ''
+     for ligne in config_file:
+         if not ligne.startswith('#'):
+             args = ligne.split(';')
+             json_answer += str('{ "name": "' + args[0] + '" ,"id":"' + args[1]  + '" ,"descriptif":"' + args[2]+'"')
+             if type!="dynamic":
+                 json_answer += str(',"contraints":')
+                 if args[3]=="":
+                     json_answer += str('""')
+                 else:
+                     json_answer += str(args[3])
+             json_answer += str('},')
+     return json_answer[:-1]
+ DIR = '/var/myslice/'
+ STATIC = '%s/config_method_static' % DIR
+ DYNAMIC = '%s/config_method_dynamic' % DIR
+ ANIMATION = '%s/config_method_animation' % DIR
+ def pres_view_methods(request, type):
+     if type ==None:
+         return 0
+     elif type =="static":
+         config = open(STATIC, "r")
+         json_answer = str('{ "options": [')
+         json_answer += str(json_me(config,"static"))
+         json_answer += str('] }')
+         config.close()
+     elif type =="dynamic":
+         config = open(DYNAMIC, "r")
+         json_answer = str('{ "options": [')
+         json_answer += str(json_me(config,"dynamic"))
+         json_answer += str('] }')
+         config.close()
+     elif type =="animation":
+         config = open(ANIMATION, "r")
+         json_answer = str('{ "options": [')
+         json_answer += str(json_me(config,"animation"))
+         json_answer += str('] }')
+         config.close()
+     elif type =="all":
+         config = open(STATIC, "r")
+         json_answer = str('{ "static": [')
+         json_answer += str(json_me(config,"static"))
+         json_answer += str('],')
+         json_answer += str('"dynamic": [')
+         config.close()
+         config = open(DYNAMIC, "r")
+         json_answer += str(json_me(config,"dynamic"))
+         json_answer += str('],')
+         json_answer += str('"animation": [')
+         config.close()
+         config = open(ANIMATION, "r")
+         json_answer += str(json_me(config,"animation"))
+         json_answer += str('] }')
+         config.close()
+     else:
+         return 0
+     return HttpResponse (json_answer, mimetype="application/json")
+ def pres_view_animation(request, constraints, id):
+ # sites crees depuis 2008
+ # static.py?contraints=']date_created':1262325600&id='name_id"'
+     # method = request.getvalue('method') #ex : GetSites
+     #constraints = "']date_created':1262325600"
+     #id = "2"
+     if id == None:
+         return 0
+     # method = 'GetSites'#request.getvalue('method') #ex : GetSites
+     # constraints = {}#request.getvalue('constraints') // nul = {}
+     # response_field = "'site_id','name','date_created'"#request.getvalue('response_field')
+     config_file = open(ANIMATION, "r")
+     for ligne in config_file:
+         if not ligne.startswith('#'):
+             ligne = ligne.split('\n')
+             first = ligne[0].split(';')
+             if (str(first[1]) == str(id)):
+                 save = first
+     config_file.close()
+     #Les print_method, print_option sont definis par le client (js)
+     #Les animations acceptent que les connexions anonymous
+     # args = "postmsg;animation;;;anonymous;https://www.planet-lab.eu/PLCAPI/;"
+     args = ";;"+str(save[8])+";"+str(save[9])+";anonymous;"+str(save[5])+";"+str(save[6])+";{"+str(constraints)+"};"+str(save[7])+";"
+     #Creation d'un objet event
+     event = Event(args)
+     cmd = [{"params": {
+             "data": {
+                 "print_options": event.print_options,
+                 "print_method": event.print_method,
+                 "message": event.data
+             }
+         }
+     }]
+     json_answer = json.dumps(cmd)
+     return HttpResponse (json_answer, mimetype="application/json")
+ def pres_view_static(request, constraints, id):
+     #constraints = "']date_created':1262325600"
+     #id = "2"
+     # method = 'GetSites'#request.getvalue('method') #ex : GetSites
+     # constraints = {}#request.getvalue('constraints') // nul = {}
+     # response_field = "'site_id','name','date_created'"#request.getvalue('response_field')
+     config_file = open(STATIC, "r")
+     for ligne in config_file:
+         if not ligne.startswith('#'):
+             ligne = ligne.split('\n')
+             first = ligne[0].split(';')
+             if (str(first[1]) == str(id)):
+                 save = first
+     config_file.close()
+     #Les print_method, print_option sont definis par le client (js)
+     #Les animations acceptent que les connexions anonymous
+     # args = "postmsg;animation;;;anonymous;https://www.planet-lab.eu/PLCAPI/;"
+     args = ";;"+str(save[8])+";"+str(save[9])+";anonymous;"+str(save[5])+";"+str(save[6])+";{"+str(constraints)+"};"+str(save[7])+";"
+     #Creation d'un objet event
+     event = Event(args)
+     cmd = [{"params": {
+             "data": {
+                 "print_options": event.print_options,
+                 "print_method": event.print_method,
+                 "message": event.data
+             }
+         }
+     }]
+     json_answer = json.dumps(cmd)
+     return HttpResponse (json_answer, mimetype="application/json")