# HG changeset patch # User Sylvain Thénault # Date 1248430222 -7200 # Node ID b87c4d150e09e044c093c14afb14fa610a855603 # Parent 93853b6f3badff470243c1f2c2159b15f32dce7f new adaptedlist view diff -r 93853b6f3bad -r b87c4d150e09 web/views/__init__.py --- a/web/views/__init__.py Fri Jul 24 12:09:04 2009 +0200 +++ b/web/views/__init__.py Fri Jul 24 12:10:22 2009 +0200 @@ -81,6 +81,8 @@ if req.search_state[0] == 'normal': return 'primary' return 'outofcontext-search' + if len(rset.columns_type(0)) == 1: + return 'adaptedlist' return 'list' return 'table' diff -r 93853b6f3bad -r b87c4d150e09 web/views/baseviews.py --- a/web/views/baseviews.py Fri Jul 24 12:09:04 2009 +0200 +++ b/web/views/baseviews.py Fri Jul 24 12:10:22 2009 +0200 @@ -21,6 +21,7 @@ from cubicweb import NoSelectableObject from cubicweb.selectors import yes, empty_rset +from cubicweb.schema import display_name from cubicweb.view import EntityView, AnyRsetView, View from cubicweb.common.uilib import cut, printable_value @@ -236,6 +237,7 @@ :param listid: the DOM id to use for the root element """ + # XXX much of the behaviour here should probably be outside this view if subvid is None and 'subvid' in self.req.form: subvid = self.req.form.pop('subvid') # consume it if listid: @@ -285,6 +287,31 @@ redirect_vid = 'incontext' +class AdaptedListView(ListItemView): + """list of entities of the same type""" + id = 'adaptedlist' + __select__ = non_final_entity() & one_etype_rset() + item_vid = 'adaptedlistitem' + + @property + def title(self): + etype = iter(self.rset.column_types(0)).next() + return display_name(self.req, etype, form='plural')) + + def call(self, **kwargs): + """display a list of entities by calling their view""" + if not 'vtitle' in self.req.form: + self.w(u'

%s

' % self.title) + super(AdaptedListView, self).call(**kwargs) + + def cell_call(self, row, col=0, vid=None, **kwargs): + self.wview(self.item_vid, self.rset, row=row, col=col, vid=vid, **kwargs) + + +class AdaptedListItemView(ListItemView): + id = 'adaptedlistitem' + + class CSVView(SimpleListView): id = 'csv' redirect_vid = 'incontext'