# HG changeset patch # User Adrien Di Mascio # Date 1253727619 -7200 # Node ID 6b46d73823f5839eda65afce4a3e8fed37fe5333 # Parent 4958622667852ff55e32a01318216a9149ab54ff [api] work in progress, use __regid__, cw_*, etc. diff -r 495862266785 -r 6b46d73823f5 common/mixins.py --- a/common/mixins.py Wed Sep 23 19:26:38 2009 +0200 +++ b/common/mixins.py Wed Sep 23 19:40:19 2009 +0200 @@ -38,7 +38,7 @@ entities=entities) if entities: return [e for e in res if e.e_schema != self.e_schema] - return res.filtered_rset(lambda x: x.e_schema != self.e_schema, self.col) + return res.filtered_rset(lambda x: x.e_schema != self.e_schema, self.cw_col) def same_type_children(self, entities=True): """return children entities of the same type as this entity. @@ -50,7 +50,7 @@ entities=entities) if entities: return [e for e in res if e.e_schema == self.e_schema] - return res.filtered_rset(lambda x: x.e_schema == self.e_schema, self.col) + return res.filtered_rset(lambda x: x.e_schema == self.e_schema, self.cw_col) def iterchildren(self, _done=None): if _done is None: @@ -249,7 +249,7 @@ class TreePathMixIn(object): """a recursive path view""" - id = 'path' + __regid__ = 'path' item_vid = 'oneline' separator = u' > ' diff -r 495862266785 -r 6b46d73823f5 cwvreg.py --- a/cwvreg.py Wed Sep 23 19:26:38 2009 +0200 +++ b/cwvreg.py Wed Sep 23 19:40:19 2009 +0200 @@ -210,7 +210,7 @@ def possible_actions(self, req, rset=None, **kwargs): if rset is None: - actions = self.possible_vobjects(req, rset=rset, **kwargs) + actions = self.poss_visible_objects(req, rset=rset, **kwargs) else: actions = rset.possible_actions(**kwargs) # cached implementation result = {} diff -r 495862266785 -r 6b46d73823f5 entities/__init__.py --- a/entities/__init__.py Wed Sep 23 19:26:38 2009 +0200 +++ b/entities/__init__.py Wed Sep 23 19:40:19 2009 +0200 @@ -82,7 +82,7 @@ def dc_date(self, date_format=None):# XXX default to ISO 8601 ? """return latest modification date of this entity""" - return self.format_date(self.modification_date, date_format=date_format) + return self._cw.format_date(self.modification_date, date_format=date_format) def dc_type(self, form=''): """return the display name for the type of this entity (translated)""" @@ -95,7 +95,7 @@ for rschema, attrschema in self.e_schema.attribute_definitions(): if rschema.rproperty(self.e_schema, attrschema, 'internationalizable'): - return self._cw._(self.req.user.property_value('ui.language')) + return self._cw._(self._cw.user.property_value('ui.language')) return self._cw._(self._cw.vreg.property_value('ui.language')) @property @@ -125,7 +125,7 @@ if 'vtitle' in self._cw.form: # embeding for instance path.append( self._cw.form['vtitle'] ) - elif view.id != 'primary' and hasattr(view, 'title'): + elif view.__regid__ != 'primary' and hasattr(view, 'title'): path.append( self._cw._(view.title) ) return path diff -r 495862266785 -r 6b46d73823f5 entities/lib.py --- a/entities/lib.py Wed Sep 23 19:26:38 2009 +0200 +++ b/entities/lib.py Wed Sep 23 19:40:19 2009 +0200 @@ -51,7 +51,7 @@ if not ('sender' in subjrels and 'recipients' in subjrels): return rql = 'DISTINCT Any X, S, D ORDERBY D DESC WHERE X sender Y or X recipients Y, X subject S, X date D, Y eid %(y)s' - rset = self.req.execute(rql, {'y': self.eid}, 'y') + rset = self._cw.execute(rql, {'y': self.eid}, 'y') if skipeids is None: skipeids = set() for i in xrange(len(rset)): @@ -88,13 +88,13 @@ fetch_attrs, fetch_order = fetch_config(['title', 'path']) def actual_url(self): - url = self.req.build_url(self.path) + url = self._cw.build_url(self.path) if self.title: urlparts = list(urlsplit(url)) if urlparts[3]: - urlparts[3] += '&vtitle=%s' % self.req.url_quote(self.title) + urlparts[3] += '&vtitle=%s' % self._cw.url_quote(self.title) else: - urlparts[3] = 'vtitle=%s' % self.req.url_quote(self.title) + urlparts[3] = 'vtitle=%s' % self._cw.url_quote(self.title) url = urlunsplit(urlparts) return url @@ -113,7 +113,7 @@ def dc_description(self, format='text/plain'): try: - return self.req._(self.vreg.property_info(self.pkey)['help']) + return self._cw._(self.vreg.property_info(self.pkey)['help']) except UnknownProperty: return u'' @@ -130,7 +130,7 @@ fetch_attrs, fetch_order = fetch_config(['name']) def touch(self): - self.req.execute('SET X timestamp %(t)s WHERE X eid %(x)s', + self._cw.execute('SET X timestamp %(t)s WHERE X eid %(x)s', {'t': datetime.now(), 'x': self.eid}, 'x') def valid(self, date): diff -r 495862266785 -r 6b46d73823f5 entities/test/unittest_base.py --- a/entities/test/unittest_base.py Wed Sep 23 19:26:38 2009 +0200 +++ b/entities/test/unittest_base.py Wed Sep 23 19:40:19 2009 +0200 @@ -142,7 +142,7 @@ self.assertEquals(eclass.__bases__[0].__bases__, (Foo,)) # check Division eclass is still selected for plain Division entities eclass = self.select_eclass('Division') - self.assertEquals(eclass.id, 'Division') + self.assertEquals(eclass.__regid__, 'Division') if __name__ == '__main__': unittest_main() diff -r 495862266785 -r 6b46d73823f5 entities/wfobjs.py --- a/entities/wfobjs.py Wed Sep 23 19:26:38 2009 +0200 +++ b/entities/wfobjs.py Wed Sep 23 19:40:19 2009 +0200 @@ -408,11 +408,11 @@ return wfrset.get_entity(0, 0) if len(wfrset) > 1: for wf in wfrset.entities(): - if wf.is_default_workflow_of(self.id): + if wf.is_default_workflow_of(self.__regid__): return wf - self.warning("can't find default workflow for %s", self.id) + self.warning("can't find default workflow for %s", self.__regid__) else: - self.warning("can't find any workflow for %s", self.id) + self.warning("can't find any workflow for %s", self.__regid__) return None def possible_transitions(self): @@ -452,7 +452,7 @@ """ assert self.current_workflow tr = self.current_workflow.transition_by_name(trname) - assert tr is not None, 'not a %s transition: %s' % (self.id, trname) + assert tr is not None, 'not a %s transition: %s' % (self.__regid__, trname) return self._add_trinfo(comment, commentformat, tr.eid) def change_state(self, statename, comment=None, commentformat=None, tr=None): @@ -471,7 +471,7 @@ else: state = self.current_workflow.state_by_name(statename) if state is None: - raise WorkflowException('not a %s state: %s' % (self.id, + raise WorkflowException('not a %s state: %s' % (self.__regid__, statename)) stateeid = state.eid # XXX try to find matching transition? diff -r 495862266785 -r 6b46d73823f5 view.py --- a/view.py Wed Sep 23 19:26:38 2009 +0200 +++ b/view.py Wed Sep 23 19:40:19 2009 +0200 @@ -106,7 +106,7 @@ @property def content_type(self): - return self.req.html_content_type() + return self._cw.html_content_type() def set_stream(self, w=None): if self.w is not None: @@ -155,8 +155,8 @@ """ from cubicweb.ext.tal import CubicWebContext context = CubicWebContext() - context.update({'self': self, 'rset': self.rset, '_' : self.req._, - 'req': self.req, 'user': self.req.user}) + context.update({'self': self, 'rset': self.cw_rset, '_' : self._cw._, + 'req': self._cw, 'user': self._cw.user}) context.update(variables) output = UStringIO() template.expand(context, output) @@ -175,14 +175,14 @@ Views applicable on None result sets have to override this method """ - rset = self.rset + rset = self.cw_rset if rset is None: raise NotImplementedError, self wrap = self.templatable and len(rset) > 1 and self.add_div_section for i in xrange(len(rset)): if wrap: self.w(u'
') - self.wview(self.id, rset, row=i, **kwargs) + self.wview(self.__regid__, rset, row=i, **kwargs) if wrap: self.w(u"
") @@ -200,23 +200,23 @@ return True def is_primary(self): - return self.id == 'primary' + return self.__regid__ == 'primary' def url(self): """return the url associated with this view. Should not be necessary for non linkable views, but a default implementation is provided anyway. """ - rset = self.rset + rset = self.cw_rset if rset is None: - return self.build_url('view', vid=self.id) + return self._cw.build_url('view', vid=self.__regid__) coltypes = rset.column_types(0) if len(coltypes) == 1: etype = iter(coltypes).next() - if not self.schema.eschema(etype).is_final(): + if not self._cw.schema.eschema(etype).is_final(): if len(rset) == 1: entity = rset.get_entity(0, 0) - return entity.absolute_url(vid=self.id) + return entity.absolute_url(vid=self.__regid__) # don't want to generate / url if there is some restriction # on something else than the entity type restr = rset.syntax_tree().children[0].where @@ -226,25 +226,25 @@ norestriction = (isinstance(restr, nodes.Relation) and restr.is_types_restriction()) if norestriction: - return self.build_url(etype.lower(), vid=self.id) - return self.build_url('view', rql=rset.printable_rql(), vid=self.id) + return self._cw.build_url(etype.lower(), vid=self.__regid__) + return self._cw.build_url('view', rql=rset.printable_rql(), vid=self.__regid__) def set_request_content_type(self): """set the content type returned by this view""" - self.req.set_content_type(self.content_type) + self._cw.set_content_type(self.content_type) # view utilities ########################################################## def wview(self, __vid, rset=None, __fallback_vid=None, **kwargs): """shortcut to self.view method automatically passing self.w as argument """ - self.view(__vid, rset, __fallback_vid, w=self.w, **kwargs) + self._cw.view(__vid, rset, __fallback_vid, w=self.w, **kwargs) # XXX Template bw compat template = deprecated('[3.4] .template is deprecated, use .view')(wview) def whead(self, data): - self.req.html_headers.write(data) + self._cw.html_headers.write(data) def wdata(self, data): """simple helper that escapes `data` and writes into `self.w`""" @@ -262,34 +262,34 @@ """returns a title according to the result set - used for the title in the HTML header """ - vtitle = self.req.form.get('vtitle') + vtitle = self._cw.form.get('vtitle') if vtitle: - return self.req._(vtitle) + return self._cw._(vtitle) # class defined title will only be used if the resulting title doesn't # seem clear enough vtitle = getattr(self, 'title', None) or u'' if vtitle: - vtitle = self.req._(vtitle) - rset = self.rset + vtitle = self._cw._(vtitle) + rset = self.cw_rset if rset and rset.rowcount: if rset.rowcount == 1: try: - entity = self.complete_entity(0) + entity = rset.complete_entity(0, 0) # use long_title to get context information if any clabel = entity.dc_long_title() except NotAnEntity: - clabel = display_name(self.req, rset.description[0][0]) + clabel = display_name(self._cw, rset.description[0][0]) clabel = u'%s (%s)' % (clabel, vtitle) else : etypes = rset.column_types(0) if len(etypes) == 1: etype = iter(etypes).next() - clabel = display_name(self.req, etype, 'plural') + clabel = display_name(self._cw, etype, 'plural') else : clabel = u'#[*] (%s)' % vtitle else: clabel = vtitle - return u'%s (%s)' % (clabel, self.req.property_value('ui.site-title')) + return u'%s (%s)' % (clabel, self._cw.property_value('ui.site-title')) def output_url_builder( self, name, url, args ): self.w(u'\n' % _('this action is not reversible!')) # XXX above message should have style of a warning w(u'

%s

\n' % _('Do you want to delete the following element(s) ?')) - form = self.vreg['forms'].select(self.id, req, rset=self.rset, + form = self._cw.vreg['forms'].select(self.__regid__, req, rset=self.cw_rset, onsubmit=onsubmit) w(u'