From 64c9f6a817a402720d18ea7bf6cd80f07ca767ec Mon Sep 17 00:00:00 2001 From: =?utf8?q?Jordan=20Aug=C3=A9?= Date: Fri, 2 Aug 2013 12:35:13 +0200 Subject: [PATCH] plugins: added pres_view + small fixes --- plugins/code_editor/code_editor.js | 2 +- plugins/googlemap/googlemap.js | 8 +- plugins/pres_view | 1 + portal/event.py | 135 ++++++++++++++++++++++ portal/static/experiments.png | Bin 0 -> 2827 bytes portal/static/testbeds.png | Bin 0 -> 2940 bytes portal/static/user.png | Bin 0 -> 1786 bytes portal/urls.py | 7 +- portal/views.py | 178 +++++++++++++++++++++++++++++ unfold/templates/plugin-init.js | 2 +- 10 files changed, 327 insertions(+), 6 deletions(-) create mode 160000 plugins/pres_view create mode 100644 portal/event.py create mode 100644 portal/static/experiments.png create mode 100644 portal/static/testbeds.png create mode 100644 portal/static/user.png diff --git a/plugins/code_editor/code_editor.js b/plugins/code_editor/code_editor.js index 5e88873d..664bbdc7 100644 --- a/plugins/code_editor/code_editor.js +++ b/plugins/code_editor/code_editor.js @@ -427,7 +427,7 @@ this.initialize(); // END CONSTRUCTOR - } // function DebugPlatform + } // function CodeEditor })( jQuery ); diff --git a/plugins/googlemap/googlemap.js b/plugins/googlemap/googlemap.js index 8c3c0958..69db6ef1 100644 --- a/plugins/googlemap/googlemap.js +++ b/plugins/googlemap/googlemap.js @@ -12,6 +12,8 @@ (function($){ + var PLUGIN_NAME = 'GoogleMap'; + // routing calls jQuery.fn.GoogleMap = function( method ) { if ( methods[method] ) { @@ -19,7 +21,7 @@ } else if ( typeof method === 'object' || ! method ) { return methods.init.apply( this, arguments ); } else { - jQuery.error( 'Method ' + method + ' does not exist on jQuery.GoogleMap' ); + jQuery.error( 'Method ' + method + ' does not exist on jQuery.' + PLUGIN_NAME ); } }; @@ -48,7 +50,7 @@ plugin.initialize(); /* Events */ - $this.on('show.GoogleMaps', methods.show); + $this.on('show.' + PLUGIN_NAME, methods.show); $this.set_query_handler(options.query_uuid, plugin.query_handler); $this.set_record_handler(options.query_uuid, plugin.record_handler); @@ -69,7 +71,7 @@ var hazelnut = $this.data('Manifold'); // Unbind all events using namespacing - $(window).unbind('Manifold'); + $(window).unbind(PLUGIN_NAME); // Remove associated data hazelnut.remove(); diff --git a/plugins/pres_view b/plugins/pres_view new file mode 160000 index 00000000..96e46a0f --- /dev/null +++ b/plugins/pres_view @@ -0,0 +1 @@ +Subproject commit 96e46a0ff58c6c5e2bec53e4fa3f6b2b95e639eb diff --git a/portal/event.py b/portal/event.py new file mode 100644 index 00000000..cf95b5e0 --- /dev/null +++ b/portal/event.py @@ -0,0 +1,135 @@ +# !/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 + + diff --git a/portal/static/experiments.png b/portal/static/experiments.png new file mode 100644 index 0000000000000000000000000000000000000000..cd97086bd28fa518d59249ded9b78aa7356d3a2f GIT binary patch literal 2827 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 literal 0 HcmV?d00001 diff --git a/portal/static/testbeds.png b/portal/static/testbeds.png new file mode 100644 index 0000000000000000000000000000000000000000..ed9aa0e4fd8593883c2a2f93ad93e6720bda3a84 GIT binary patch literal 2940 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 literal 0 HcmV?d00001 diff --git a/portal/urls.py b/portal/urls.py index b756c98f..16da2e65 100644 --- a/portal/urls.py +++ b/portal/urls.py @@ -22,7 +22,7 @@ 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 = ( @@ -48,6 +48,11 @@ urlpatterns = patterns('', 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\w+)/?$', 'portal.views.pres_view_methods'), + (r'^animation/(?P[^/]+)/(?P\w+)/?$', 'portal.views.pres_view_animation'), + (r'^static/(?P[^/]+)/(?P\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'), diff --git a/portal/views.py b/portal/views.py index 73e1ea4c..d55fc175 100644 --- a/portal/views.py +++ b/portal/views.py @@ -27,7 +27,13 @@ from django.contrib import messages 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 @@ -576,3 +582,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") diff --git a/unfold/templates/plugin-init.js b/unfold/templates/plugin-init.js index 0d44075b..5995a719 100644 --- a/unfold/templates/plugin-init.js +++ b/unfold/templates/plugin-init.js @@ -1 +1 @@ -$(document).ready(function() { jQuery('#{{ domid }}').{{ plugin_classname }}({{ settings_json|safe }}); }); +$(document).ready(function() { $('#{{ domid }}').{{ plugin_classname }}({{ settings_json|safe }}); }); -- 2.43.0