[IMP] Added YAML for demo data.
[odoo/odoo.git] / bin / tools / maintenance.py
1 # -*- coding: utf-8 -*-
2 ##############################################################################
3 #    
4 #    OpenERP, Open Source Management Solution
5 #    Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>).
6 #
7 #    This program is free software: you can redistribute it and/or modify
8 #    it under the terms of the GNU Affero General Public License as
9 #    published by the Free Software Foundation, either version 3 of the
10 #    License, or (at your option) any later version.
11 #
12 #    This program is distributed in the hope that it will be useful,
13 #    but WITHOUT ANY WARRANTY; without even the implied warranty of
14 #    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15 #    GNU Affero General Public License for more details.
16 #
17 #    You should have received a copy of the GNU Affero General Public License
18 #    along with this program.  If not, see <http://www.gnu.org/licenses/>.     
19 #
20 ##############################################################################
21
22 import xmlrpclib
23
24 class RemoteContractException(Exception): pass
25
26 class remote_contract(object):
27     def __init__(self, contract_id, contract_password, modules=None):
28         self.__server = 'http://tiny.my.odoo.com:8069/xmlrpc/'
29         self.__db = "tiny_belgium"
30         self.__password = "maintenance"
31         self.__login = "maintenance"
32         
33         rpc = xmlrpclib.ServerProxy(self.__server + 'common')
34         try:
35             self.__userid = rpc.login(self.__db, self.__login, self.__password)
36         except:
37             raise RemoteContractException("Unable to contact the migration server")
38
39         if not self.__userid:
40             raise RemoteContractException("Unable to contact the migration server")
41
42         self.__rpc = xmlrpclib.ServerProxy(self.__server + 'object')
43         
44
45         contract = {
46             'name': contract_id,
47             'password': contract_password,
48         }
49         if modules is None:
50             modules = []
51
52         info = self.check_contract(modules, contract)
53         for n in info:
54             setattr(self, n, info[n])
55         
56         self.name = contract_id
57         self.contract_id = self.name
58         self.password = contract_password
59         
60     def __getattr__(self, fun):
61         def remote_call(*args, **kwargs):
62             return self.__rpc.execute(self.__db, self.__userid, self.__password, 'maintenance.maintenance', fun, *args, **kwargs)
63         return remote_call
64
65     def __getitem__(self, item):
66         return getattr(self, item)
67
68 # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
69