# HG changeset patch # User Sylvain Thénault # Date 1250158694 -7200 # Node ID f26578339214e43b703cb297b3eb6814f7f22db0 # Parent 526f44213b70aa73b6702c6e065e99f082ab94bd deprecate appobject.vreg and rename appobject instance attributes using cw_ prefix diff -r 526f44213b70 -r f26578339214 appobject.py --- a/appobject.py Thu Aug 13 11:56:49 2009 +0200 +++ b/appobject.py Thu Aug 13 12:18:14 2009 +0200 @@ -247,8 +247,6 @@ the right hook to create an instance for example). By default the appobject is returned without any transformation. """ - cls.build___select__() - cls.vreg = registry.vreg pdefs = getattr(cls, 'cw_property_defs', {}) for propid, pdef in pdefs.items(): pdef = pdef.copy() # may be shared @@ -257,19 +255,16 @@ registry.vreg.register_property(cls._cwpropkey(propid), **pdef) return cls - def __init__(self, req=None, rset=None, row=None, col=None, **extra): + def __init__(self, req, **extra): super(AppObject, self).__init__() - self.req = req - self.rset = rset - self.row = row - self.col = col - self.extra_kwargs = extra - - def view(self, __vid, rset=None, __fallback_oid=None, __registry='views', - **kwargs): - """shortcut to self.vreg.view method avoiding to pass self.req""" - return self.vreg[__registry].render(__vid, self.req, __fallback_oid, - rset=rset, **kwargs) + self.cw_req = req + try: + self.cw_rset = extra.pop('rset') + self.cw_row = extra.pop('row', None) + self.cw_col = extra.pop('col', None) + except KeyError: + pass + self.cw_extra_kwargs = extra # persistent class properties ############################################## # @@ -315,31 +310,60 @@ return selector @property - @deprecated('[3.5] use req.vreg') + @deprecated('[3.5] use cw_req.vreg') def vreg(self): - return self.req.vreg + return self.cw_req.vreg + + @property + @deprecated('[3.5] use cw_req.vreg.schema') + def schema(self): + return self.cw_req.vreg.schema @property - @deprecated('[3.5] use req.vreg.schema') - def schema(self): - return self.req.vreg.schema + @deprecated('[3.5] use cw_req.vreg.config') + def config(self): + return self.cw_req.vreg.config + + @property + @deprecated('use self.cw_req') + def req(self): + return self.cw_req + + @property + @deprecated('use self.cw_rset') + def rset(self): + return self.cw_rset @property - @deprecated('[3.5] use req.vreg.config') - def config(self): - return self.req.vreg.config + @deprecated('use self.cw_row') + def row(self): + return self.cw_row - @deprecated('[3.5] use req.varmaker') - def initialize_varmaker(self): - self.varmaker = self.req.varmaker + @property + @deprecated('use self.cw_col') + def col(self): + return self.cw_col + + @property + @deprecated('use self.cw_extra_kwargs') + def extra_kwargs(self): + return self.cw_extra_kwargs - @deprecated('[3.5] use req.get_cache') - def get_cache(self, cachename): - return self.req.get_cache(cachename) + @deprecated('[3.5] use cw_req.view') + def view(self, *args, **kwargs): + return self.cw_req.view(*args, **kwargs) + + @deprecated('[3.5] use cw_req.varmaker') + def initialize_varmaker(self): + self.varmaker = self.cw_req.varmaker - @deprecated('[3.5] use req.build_url') + @deprecated('[3.5] use cw_req.get_cache') + def get_cache(self, cachename): + return self.cw_req.get_cache(cachename) + + @deprecated('[3.5] use cw_req.build_url') def build_url(self, *args, **kwargs): - return self.req.build_url(*args, **kwargs) + return self.cw_req.build_url(*args, **kwargs) @deprecated('[3.5] use rset.limited_rql') def limited_rql(self): @@ -353,32 +377,32 @@ def entity(self, row, col=0): return self.rset.get_entity(row, col) - @deprecated('[3.5] use req.user_rql_callback') + @deprecated('[3.5] use cw_req.user_rql_callback') def user_rql_callback(self, args, msg=None): - return self.req.user_rql_callback(args, msg) + return self.cw_req.user_rql_callback(args, msg) - @deprecated('[3.5] use req.user_callback') + @deprecated('[3.5] use cw_req.user_callback') def user_callback(self, cb, args, msg=None, nonify=False): - return self.req.user_callback(cb, args, msg, nonify) + return self.cw_req.user_callback(cb, args, msg, nonify) - @deprecated('[3.5] use req.format_date') + @deprecated('[3.5] use cw_req.format_date') def format_date(self, date, date_format=None, time=False): - return self.req.format_date(date, date_format, time) + return self.cw_req.format_date(date, date_format, time) - @deprecated('[3.5] use req.format_timoe') + @deprecated('[3.5] use cw_req.format_timoe') def format_time(self, time): - return self.req.format_time(time) + return self.cw_req.format_time(time) - @deprecated('[3.5] use req.format_float') + @deprecated('[3.5] use cw_req.format_float') def format_float(self, num): - return self.req.format_float(num) + return self.cw_req.format_float(num) - @deprecated('[3.5] use req.parse_datetime') + @deprecated('[3.5] use cw_req.parse_datetime') def parse_datetime(self, value, etype='Datetime'): - return self.req.parse_datetime(value, etype) + return self.cw_req.parse_datetime(value, etype) @deprecated('[3.5] use self.cw_propval') def propval(self, propid): - return self.req.property_value(self._cwpropkey(propid)) + return self.cw_req.property_value(self._cwpropkey(propid)) set_log_methods(AppObject, getLogger('cubicweb.appobject')) diff -r 526f44213b70 -r f26578339214 entity.py --- a/entity.py Thu Aug 13 11:56:49 2009 +0200 +++ b/entity.py Thu Aug 13 12:18:14 2009 +0200 @@ -291,7 +291,7 @@ return mainattr, needcheck def __init__(self, req, rset=None, row=None, col=0): - AppObject.__init__(self, req, rset, row, col) + AppObject.__init__(self, req, rset=rset, row=row, col=col) dict.__init__(self) self._related_cache = {} if rset is not None: diff -r 526f44213b70 -r f26578339214 selectors.py --- a/selectors.py Thu Aug 13 11:56:49 2009 +0200 +++ b/selectors.py Thu Aug 13 12:18:14 2009 +0200 @@ -112,13 +112,13 @@ return traceback is None -def score_interface(cls_or_inst, cls, iface): +def score_interface(etypesreg, cls_or_inst, cls, iface): """Return XXX if the give object (maybe an instance or class) implements the interface. """ if getattr(iface, '__registry__', None) == 'etypes': # adjust score if the interface is an entity class - parents = cls_or_inst.parent_classes() + parents = etypesreg.parent_classes(cls_or_inst.id) if iface is cls: return len(parents) + 4 if iface is parents[-1]: # Any @@ -157,17 +157,18 @@ return '%s(%s)' % (self.__class__.__name__, ','.join(str(s) for s in self.expected_ifaces)) - def score_interfaces(self, cls_or_inst, cls): + def score_interfaces(self, req, cls_or_inst, cls): score = 0 - vreg, eschema = cls_or_inst.vreg, cls_or_inst.e_schema + etypesreg = req.vreg['etypes'] + eschema = cls_or_inst.e_schema for iface in self.expected_ifaces: if isinstance(iface, basestring): # entity type try: - iface = vreg['etypes'].etype_class(iface) + iface = etypesreg.etype_class(iface) except KeyError: continue # entity type not in the schema - score += score_interface(cls_or_inst, cls, iface) + score += score_interface(etypesreg, cls_or_inst, cls, iface) return score @@ -211,7 +212,7 @@ def score(self, cls, req, etype): if etype in BASE_TYPES: return 0 - return self.score_class(cls.vreg['etypes'].etype_class(etype), req) + return self.score_class(req.vreg['etypes'].etype_class(etype), req) def score_class(self, eclass, req): raise NotImplementedError() @@ -560,7 +561,7 @@ def __call__(self, cls, req, **kwargs): try: - cls.vreg[self.registry].select(self.oid, req, **kwargs) + req.vreg[self.registry].select(self.oid, req, **kwargs) return 1 except NoSelectableObject: return 0 @@ -584,7 +585,7 @@ proximity so the most specific object'll be selected """ def score_class(self, eclass, req): - return self.score_interfaces(eclass, eclass) + return self.score_interfaces(req, eclass, eclass) class specified_etype_implements(implements): @@ -614,11 +615,11 @@ # only check this is a known type if etype comes from req.form, # else we want the error to propagate try: - etype = cls.vreg.case_insensitive_etypes[etype.lower()] + etype = req.vreg.case_insensitive_etypes[etype.lower()] req.form['etype'] = etype except KeyError: return 0 - return self.score_class(cls.vreg['etypes'].etype_class(etype), req) + return self.score_class(req.vreg['etypes'].etype_class(etype), req) class entity_implements(ImplementsMixIn, EntitySelector): @@ -637,7 +638,7 @@ proximity so the most specific object'll be selected """ def score_entity(self, entity): - return self.score_interfaces(entity, entity.__class__) + return self.score_interfaces(entity.req, entity, entity.__class__) class relation_possible(EClassSelector): diff -r 526f44213b70 -r f26578339214 server/hooksmanager.py --- a/server/hooksmanager.py Thu Aug 13 11:56:49 2009 +0200 +++ b/server/hooksmanager.py Thu Aug 13 12:18:14 2009 +0200 @@ -213,7 +213,7 @@ enabled = True def __init__(self, event=None): - super(Hook, self).__init__() + super(Hook, self).__init__(None) self.event = event @classmethod diff -r 526f44213b70 -r f26578339214 server/repository.py --- a/server/repository.py Thu Aug 13 11:56:49 2009 +0200 +++ b/server/repository.py Thu Aug 13 12:18:14 2009 +0200 @@ -574,7 +574,7 @@ finally: session.close() session = Session(user, self, cnxprops) - user.req = user.rset.req = session + user.cw_req = user.rset.req = session user.clear_related_cache() self._sessions[session.id] = session self.info('opened %s', session) diff -r 526f44213b70 -r f26578339214 view.py --- a/view.py Thu Aug 13 11:56:49 2009 +0200 +++ b/view.py Thu Aug 13 12:18:14 2009 +0200 @@ -101,7 +101,7 @@ category = 'view' def __init__(self, req=None, rset=None, **kwargs): - super(View, self).__init__(req, rset, **kwargs) + super(View, self).__init__(req, rset=rset, **kwargs) self.w = None @property