# HG changeset patch # User Aurelien Campeas # Date 1402503880 -7200 # Node ID 1691be295517729f6cf7d2ca8d2f1d77c81b6809 # Parent 8fc24ce5317eb583db7c1a627a9aee8e6b6e3d43 [repository] rename session -> cnx Related to #3933480. diff -r 8fc24ce5317e -r 1691be295517 server/repository.py --- a/server/repository.py Wed Jun 11 18:18:37 2014 +0200 +++ b/server/repository.py Wed Jun 11 18:24:40 2014 +0200 @@ -27,30 +27,26 @@ """ __docformat__ = "restructuredtext en" -import sys import threading import Queue from warnings import warn from itertools import chain from time import time, localtime, strftime from contextlib import contextmanager -from warnings import warn from logilab.common.decorators import cached, clear_cache from logilab.common.deprecation import deprecated from yams import BadSchemaDefinition -from rql import RQLSyntaxError from rql.utils import rqlvar_maker from cubicweb import (CW_MIGRATION_MAP, QueryError, UnknownEid, AuthenticationError, ExecutionError, - BadConnectionId, Unauthorized, ValidationError, + BadConnectionId, ValidationError, UniqueTogetherError, onevent) from cubicweb import cwvreg, schema, server from cubicweb.server import ShuttingDown, utils, hook, querier, sources from cubicweb.server.session import Session, InternalManager -from cubicweb.server.ssplanner import EditedEntity NO_CACHE_RELATIONS = set( [('owned_by', 'object'), ('created_by', 'object'), @@ -58,7 +54,7 @@ ]) def prefill_entity_caches(entity): - session = entity._cw + cnx = entity._cw # prefill entity relation caches for rschema in entity.e_schema.subject_relations(): rtype = str(rschema) @@ -68,14 +64,14 @@ entity.cw_attr_cache.setdefault(rtype, None) else: entity.cw_set_relation_cache(rtype, 'subject', - session.empty_rset()) + cnx.empty_rset()) for rschema in entity.e_schema.object_relations(): rtype = str(rschema) if rtype in schema.VIRTUAL_RTYPES or (rtype, 'object') in NO_CACHE_RELATIONS: continue - entity.cw_set_relation_cache(rtype, 'object', session.empty_rset()) + entity.cw_set_relation_cache(rtype, 'object', cnx.empty_rset()) -def del_existing_rel_if_needed(session, eidfrom, rtype, eidto): +def del_existing_rel_if_needed(cnx, eidfrom, rtype, eidto): """delete existing relation when adding a new one if card is 1 or ? have to be done once the new relation has been inserted to avoid having @@ -85,9 +81,9 @@ hooks order hazardness """ # skip that if integrity explicitly disabled - if not session.is_hook_category_activated('activeintegrity'): + if not cnx.is_hook_category_activated('activeintegrity'): return - rdef = session.rtype_eids_rdef(rtype, eidfrom, eidto) + rdef = cnx.rtype_eids_rdef(rtype, eidfrom, eidto) card = rdef.cardinality # one may be tented to check for neweids but this may cause more than one # relation even with '1?' cardinality if thoses relations are added in the @@ -101,34 +97,34 @@ # * we don't want read permissions to be applied but we want delete # permission to be checked if card[0] in '1?': - with session.security_enabled(read=False): - session.execute('DELETE X %s Y WHERE X eid %%(x)s, ' - 'NOT Y eid %%(y)s' % rtype, - {'x': eidfrom, 'y': eidto}) + with cnx.security_enabled(read=False): + cnx.execute('DELETE X %s Y WHERE X eid %%(x)s, ' + 'NOT Y eid %%(y)s' % rtype, + {'x': eidfrom, 'y': eidto}) if card[1] in '1?': - with session.security_enabled(read=False): - session.execute('DELETE X %s Y WHERE Y eid %%(y)s, ' - 'NOT X eid %%(x)s' % rtype, - {'x': eidfrom, 'y': eidto}) + with cnx.security_enabled(read=False): + cnx.execute('DELETE X %s Y WHERE Y eid %%(y)s, ' + 'NOT X eid %%(x)s' % rtype, + {'x': eidfrom, 'y': eidto}) -def preprocess_inlined_relations(session, entity): +def preprocess_inlined_relations(cnx, entity): """when an entity is added, check if it has some inlined relation which requires to be extrated for proper call hooks """ relations = [] - activeintegrity = session.is_hook_category_activated('activeintegrity') + activeintegrity = cnx.is_hook_category_activated('activeintegrity') eschema = entity.e_schema for attr in entity.cw_edited: rschema = eschema.subjrels[attr] if not rschema.final: # inlined relation value = entity.cw_edited[attr] relations.append((attr, value)) - session.update_rel_cache_add(entity.eid, attr, value) - rdef = session.rtype_eids_rdef(attr, entity.eid, value) + cnx.update_rel_cache_add(entity.eid, attr, value) + rdef = cnx.rtype_eids_rdef(attr, entity.eid, value) if rdef.cardinality[1] in '1?' and activeintegrity: - with session.security_enabled(read=False): - session.execute('DELETE X %s Y WHERE Y eid %%(y)s' % attr, + with cnx.security_enabled(read=False): + cnx.execute('DELETE X %s Y WHERE Y eid %%(y)s' % attr, {'x': entity.eid, 'y': value}) return relations @@ -766,11 +762,11 @@ """return the type of the entity with id """ return self.type_and_source_from_eid(eid, cnx)[0] - def querier_cache_key(self, session, rql, args, eidkeys): + def querier_cache_key(self, cnx, rql, args, eidkeys): cachekey = [rql] for key in sorted(eidkeys): try: - etype = self.type_from_eid(args[key], session) + etype = self.type_from_eid(args[key], cnx) except KeyError: raise QueryError('bad cache key %s (no value)' % key) except TypeError: