plugins: added pres_view + small fixes
[unfold.git] / portal / event.py
diff --git a/portal/event.py b/portal/event.py
new file mode 100644 (file)
index 0000000..cf95b5e
--- /dev/null
@@ -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
+        
+