goa/__init__.py
changeset 6366 1806148d6ce8
parent 6333 e3994fcc21c3
parent 6365 a15cc5e16178
child 6367 d4c485ec1ca1
--- a/goa/__init__.py	Thu Sep 23 23:28:58 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,159 +0,0 @@
-# copyright 2003-2010 LOGILAB S.A. (Paris, FRANCE), all rights reserved.
-# contact http://www.logilab.fr/ -- mailto:contact@logilab.fr
-#
-# This file is part of CubicWeb.
-#
-# CubicWeb is free software: you can redistribute it and/or modify it under the
-# terms of the GNU Lesser General Public License as published by the Free
-# Software Foundation, either version 2.1 of the License, or (at your option)
-# any later version.
-#
-# CubicWeb is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
-# FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public License for more
-# details.
-#
-# You should have received a copy of the GNU Lesser General Public License along
-# with CubicWeb.  If not, see <http://www.gnu.org/licenses/>.
-"""cubicweb on google appengine
-
-"""
-__docformat__ = "restructuredtext en"
-
-
-try:
-    # WARNING: do not import the google's db module here since it will take
-    #          precedence over our own db submodule
-    from google.appengine.api.datastore import Key, Get, Query
-    from google.appengine.api.datastore_errors import BadKeyError
-except ImportError:
-    # not in google app environment
-    pass
-else:
-
-    import os
-    _SS = os.environ.get('SERVER_SOFTWARE')
-    if _SS is None:
-        MODE = 'test'
-    elif _SS.startswith('Dev'):
-        MODE = 'dev'
-    else:
-        MODE = 'prod'
-
-    from cubicweb.server import SOURCE_TYPES
-    from cubicweb.goa.gaesource import GAESource
-    SOURCE_TYPES['gae'] = GAESource
-
-
-    def do_monkey_patch():
-
-        # monkey patch yams Bytes validator since it should take a bytes string with gae
-        # and not a StringIO
-        def check_bytes(eschema, value):
-            """check value is a bytes string"""
-            return isinstance(value, str)
-        from yams import constraints
-        constraints.BASE_CHECKERS['Bytes'] = check_bytes
-
-        def rql_for_eid(eid):
-            return 'Any X WHERE X eid "%s"' % eid
-        from cubicweb import uilib
-        uilib.rql_for_eid = rql_for_eid
-
-        def typed_eid(eid):
-            try:
-                return str(Key(eid))
-            except BadKeyError:
-                raise ValueError(eid)
-        import cubicweb
-        cubicweb.typed_eid = typed_eid
-
-        # XXX monkey patch cubicweb.schema.CubicWebSchema to have string eid with
-        #     optional cardinality (since eid is set after the validation)
-
-        import re
-        from yams import buildobjs as ybo
-
-        def add_entity_type(self, edef):
-            edef.name = edef.name.encode()
-            assert re.match(r'[A-Z][A-Za-z0-9]*[a-z]+[0-9]*$', edef.name), repr(edef.name)
-            eschema = super(CubicWebSchema, self).add_entity_type(edef)
-            if not eschema.final:
-                # automatically add the eid relation to non final entity types
-                rdef = ybo.RelationDefinition(eschema.type, 'eid', 'Bytes',
-                                              cardinality='?1', uid=True)
-                self.add_relation_def(rdef)
-                rdef = ybo.RelationDefinition(eschema.type, 'identity', eschema.type)
-                self.add_relation_def(rdef)
-            self._eid_index[eschema.eid] = eschema
-            return eschema
-
-        from cubicweb.schema import CubicWebSchema
-        CubicWebSchema.add_entity_type = add_entity_type
-
-
-        # don't reset vreg on repository set_schema
-        from cubicweb.server import repository
-        orig_set_schema = repository.Repository.set_schema
-        def set_schema(self, schema, resetvreg=True):
-            orig_set_schema(self, schema, False)
-        repository.Repository.set_schema = set_schema
-        # deactivate function ensuring relation cardinality consistency
-        repository.del_existing_rel_if_needed = lambda *args: None
-
-        def get_cubes(self):
-            """return the list of top level cubes used by this instance"""
-            config = self.config
-            cubes = config['included-cubes'] + config['included-yams-cubes']
-            return config.expand_cubes(cubes)
-        repository.Repository.get_cubes = get_cubes
-
-        from rql import RQLHelper
-        RQLHelper.simplify = lambda x, r: None
-
-        # activate entity caching on the server side
-
-        def set_entity_cache(self, entity):
-            self.transaction_data.setdefault('_eid_cache', {})[entity.eid] = entity
-
-        def entity_cache(self, eid):
-            return self.transaction_data['_eid_cache'][eid]
-
-        def drop_entity_cache(self, eid=None):
-            if eid is None:
-                self.transaction_data['_eid_cache'] = {}
-            elif '_eid_cache' in self.transaction_data:
-                self.transaction_data['_eid_cache'].pop(eid, None)
-
-        def datastore_get(self, key):
-            if isinstance(key, basestring):
-                key = Key(key)
-            try:
-                gentity = self.transaction_data['_key_cache'][key]
-                #self.critical('cached %s', gentity)
-            except KeyError:
-                gentity = Get(key)
-                #self.critical('Get %s', gentity)
-                self.transaction_data.setdefault('_key_cache', {})[key] = gentity
-            return gentity
-
-        def clear_datastore_cache(self, key=None):
-            if key is None:
-                self.transaction_data['_key_cache'] = {}
-            else:
-                if isinstance(key, basestring):
-                    key = Key(key)
-                self.transaction_data['_key_cache'].pop(key, None)
-
-        from cubicweb.server.session import Session
-        Session.set_entity_cache = set_entity_cache
-        Session.entity_cache = entity_cache
-        Session.drop_entity_cache = drop_entity_cache
-        Session.datastore_get = datastore_get
-        Session.clear_datastore_cache = clear_datastore_cache
-
-        from docutils.frontend import OptionParser
-        # avoid a call to expanduser which is not available under gae
-        def get_standard_config_files(self):
-            return self.standard_config_files
-        OptionParser.get_standard_config_files = get_standard_config_files