[FIX] Use psycogreen instead of gevent-psycopg2
[odoo/odoo.git] / openerp / __init__.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 """ OpenERP core library..
23
24 """
25
26 import sys
27
28 # Is the server running with gevent.
29 evented = False
30 for i in sys.argv:
31     if i.startswith('--gevent'):
32         evented = True
33         break
34
35 if evented:
36     import gevent.monkey
37     gevent.monkey.patch_all()
38     import psycogreen.gevent
39     psycogreen.gevent.patch_psycopg()
40
41 # Make sure the OpenERP server runs in UTC. This is especially necessary
42 # under Windows as under Linux it seems the real import of time is
43 # sufficiently deferred so that setting the TZ environment variable
44 # in openerp.cli.server was working.
45 import os
46 os.environ['TZ'] = 'UTC' # Set the timezone...
47 import time              # ... *then* import time.
48 del os
49 del time
50
51 # The hard-coded super-user id (a.k.a. administrator, or root user).
52 SUPERUSER_ID = 1
53
54 import addons
55 import cli
56 import conf
57 import http
58 import loglevels
59 import modules
60 import netsvc
61 import osv
62 import pooler
63 import release
64 import report
65 import service
66 import sql_db
67 import tools
68 import workflow
69 # backward compatilbility
70 # TODO: This is for the web addons, can be removed later.
71 wsgi = service
72 wsgi.register_wsgi_handler = wsgi.wsgi_server.register_wsgi_handler
73 # Is the server running in multi-process mode (e.g. behind Gunicorn).
74 # If this is True, the processes have to communicate some events,
75 # e.g. database update or cache invalidation. Each process has also
76 # its own copy of the data structure and we don't need to care about
77 # locks between threads.
78 multi_process = False
79
80 def registry(database_name):
81     """
82     Return the model registry for the given database. If the registry does not
83     exist yet, it is created on the fly.
84     """
85     return modules.registry.RegistryManager.get(database_name)
86
87 # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
88