--- /dev/null
+# !/usr/bin/python
+# -*-coding: utf-8-*-
+
+import pickle
+import os.path
+import xmlrpclib
+import ast
+import time
+
+class Event:
+ def __init__(self, structure):
+ self.srv=""
+ self.structure = structure
+ self.authType = ""
+ self.server = ""
+ self.methode = ""
+ self.parameters = {}
+ self.return_fields = []
+
+ self.auth = {}
+ self.print_method=""
+ self.print_options=""
+ self.geo_methode=""
+ self.id=""
+
+ ##APE###
+ self.raw = ""
+ self.channel = ""
+ #######
+
+
+
+
+ self.data = self.make_data()
+
+
+ def split(self):
+ args = self.structure.split(";");
+ self.raw = args[0]
+ self.channel = args[1]
+ self.print_method = args[2]
+ self.print_options = ast.literal_eval(args[3])
+ self.authType = args[4]
+ self.server = ast.literal_eval(args[5])
+ self.server = self.server["server"]
+ self.methode = args[6]
+ self.parameters = ast.literal_eval(args[7])
+ self.return_fields = eval(args[8])
+
+ def makeAuth(self):
+ if self.authType=="anonymous":
+ self.auth["AuthMethod"] = "anonymous"
+ elif type=="password":
+ self.auth["AuthMethod"] = "password"
+ self.auth["Username"] = "XXX"
+ self.auth["AuthString"] = "XXX"
+ elif self.authType=="session":
+ self.auth["AuthMethod"] = "session"
+ self.auth["session"] = "XXX"
+ elif self.authType=="gpg":
+ self.auth["AuthMethod"] = "gpg"
+ self.auth["name"] = "XXX"
+ self.auth["signature"] = "XXX"
+
+ def include_geoposition(self, data):
+ list=[]
+ if len(data)<8:
+ for i in data:
+ i["ape_position"] = self.get_geoposition(i)
+ list.append(i)
+ return list
+ else:
+ try:
+ sites_id = self.srv.GetSites(self.auth,{},["site_id","latitude","longitude"])
+ except :
+ return 45
+ try:
+ for i in data:
+ for j in sites_id:
+ if i["site_id"]==j["site_id"]:
+ try:
+ pos=[{"latitude": j["latitude"], "longitude": j["longitude"]}]
+ except:
+ return 83
+ #
+ i["ape_position"] = pos
+ list.append(i)
+
+ except:
+ return 82
+ return list
+
+ def get_geoposition(self,i):
+ if self.geo_methode == "site_id":
+ id = i["site_id"]
+ try:
+ geo_pos = self.srv.GetSites(self.auth, {"site_id": id}, ["latitude","longitude"])
+ except:
+ geo_pos = 43
+ return geo_pos
+ else:
+ return 42
+
+
+ def get_event_list_from_xmlrpc(self):
+ self.srv = xmlrpclib.Server(self.server, allow_none = 1)
+ if self.methode=="GetSites":
+ self.geo_methode="site_id";
+ try :
+ if len(self.return_fields)==0:
+ return self.srv.GetSites(self.auth, self.parameters)
+ else :
+ return self.srv.GetSites(self.auth, self.parameters, self.return_fields)
+ except:
+ return 0
+ else:
+ return 0
+
+ def make_data(self):
+ try :
+ self.split()
+ self.makeAuth()
+ except:
+ return 43
+ try :
+ rototo = self.get_event_list_from_xmlrpc()
+ except:
+ return 44
+ try:
+
+ return self.include_geoposition(rototo)
+ except:
+ return 47
+
+
from django.conf.urls import patterns, include, url
from portal import views
-from portal.views import UserRegisterView, UserValidateView, DashboardView
+from portal.views import UserRegisterView, UserValidateView, DashboardView, PresViewView
from portal.util import TemplateView
# DEPRECATED #named_register_forms = (
url(r'^contact/?$', views.contact),
# Slice request
url(r'^slice_request/?$', views.slice_request),
+
+ url(r'^pres_view/?$', PresViewView.as_view(), name='pres_view'),
+ (r'^methods/(?P<type>\w+)/?$', 'portal.views.pres_view_methods'),
+ (r'^animation/(?P<constraints>[^/]+)/(?P<id>\w+)/?$', 'portal.views.pres_view_animation'),
+ (r'^static/(?P<constraints>[^/]+)/(?P<id>\w+)/?$', 'portal.views.pres_view_static'),
#url(r'^slice/request/?$', views.slice_request, name='slice_request'),
# Slice confirmation
#url(r'^slice/validate/?$', views.slice_validate, name='slice_validate'),
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
'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")