1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 """
23 To provide connectivity with OpenERP server.
24
25 Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>).
26 GNU General Public License.
27 """
28 from etl.connector import connector
29
31 """
32 This is an ETL connector that is used to provide connectivity with OpenERP server.
33 """
34 - def __init__(self, uri, db, login, passwd, obj='/xmlrpc/object', con_type='xmlrpc', name='openobject_connector'):
35 """
36 Required Parameters
37 uri : URI path of OpenObject server with port.
38 db : OpenObject Database name.
39 login : User name to login into OpenObject Database.
40 passwd : Password of the user.
41
42 Extra Parameters
43 obj : Object name.
44 con_type : Type of connection to OpenObject.
45 """
46 super(openobject_connector, self).__init__(name)
47 self._type = 'connector.openobject_connector'
48 self.db = db
49 self.user_login = login
50 self.obj = obj
51 self.passwd = passwd
52 self.con_type = con_type
53 self.uid = False
54 self.uri = uri
55
73
75 if type(result) == type(u''):
76 return result.encode('utf-8')
77 elif type(result) == type([]):
78 return map(self.__convert, result)
79 elif type(result) == type({}):
80 newres = {}
81 for i in result.keys():
82 newres[i] = self.__convert(result[i])
83 return newres
84 else:
85 return result
86
87 - def login(self, uid, passwd):
88 """
89 For logging in to OpenObject Database.
90 """
91 import xmlrpclib
92 from etl import etl_socket
93 if self.con_type == 'xmlrpc':
94 xg = xmlrpclib.ServerProxy(self.uri + '/xmlrpc/common')
95 return xg.login(self.db, uid,passwd)
96 elif self.con_type == 'socket':
97 xg = xmlrpclib.ServerProxy(self.uri + '/xmlrpc/common')
98 return xg.login(self.db, uid, passwd)
99 raise Exception('Not Implemented')
100 else:
101 raise Exception('Not Supported')
102
103 - def execute(self,connector, method, *args):
120
121 - def close(self, connector):
127
129 res = openobject_connector(self.uri, self.db, self.login, self.passwd, self.obj, self.con_type, self.name)
130 res.uid = self.uid
131 return res
132
134 from etl_test import etl_test
135 import etl
136 openobject_partner=openobject_connector('http://localhost:8069', 'test', 'admin', 'admin',con_type='xmlrpc')
137 test = etl_test.etl_component_test(etl.component.input.openobject_in(
138 openobject_partner,'res.partner.address',
139 fields=['partner_id','title', 'name', 'street', 'street2' , 'phone' , 'city' , 'zip' ,'state_id' , 'country_id' , 'mobile', 'birthdate'],
140 ))
141 res=test.output()
142 print res
143
144
145
146 if __name__ == '__main__':
147 test()
148