# HG changeset patch # User Sylvain Thénault # Date 1255600507 -7200 # Node ID cdbe4aac1198127035b1e2eb293686030ab75d63 # Parent af3656d033767554586443439a9832dac2435ab7 fix max-related of related entities handling in primary view diff -r af3656d03376 -r cdbe4aac1198 web/views/primary.py --- a/web/views/primary.py Thu Oct 15 11:54:05 2009 +0200 +++ b/web/views/primary.py Thu Oct 15 11:55:07 2009 +0200 @@ -175,11 +175,8 @@ def _relation_rset(self, entity, rschema, role, dispctrl): try: - if dispctrl.get('limit'): - rset = entity.related(rschema.type, role, - limit=self.maxrelated+1) - else: - rset = entity.related(rschema.type, role) + dispctrl.setdefault('limit', self.maxrelated) + rset = entity.related(rschema.type, role, limit=dispctrl['limit']+1) except Unauthorized: return if 'filter' in dispctrl: @@ -190,7 +187,7 @@ self.w(u'
') if showlabel: self.w(u'

%s

' % self.req._(dispctrl['label'])) - self.wview(dispctrl.get('vid', defaultvid), rset) + self.wview(dispctrl.get('vid', defaultvid), rset, dispctrl=dispctrl) self.w(u'
') def _render_attribute(self, rschema, value, role='subject'): @@ -204,12 +201,15 @@ class RelatedView(EntityView): id = 'autolimited' - def call(self, title=None, **kwargs): + + def call(self, dispctrl=None, **kwargs): + # nb: rset retreived using entity.related with limit + 1 if any + # because of that, we known that rset.printable_rql() will return + # rql with no limit set anyway (since it's handled manually) + if dispctrl is not None: + limit = dispctrl.get('limit') # if not too many entities, show them all in a list - maxrelated = self.req.property_value('navigation.related-limit') - if title: - self.w(u'
%s
' % title) - if self.rset.rowcount <= maxrelated: + if limit is None or self.rset.rowcount <= limit: if self.rset.rowcount == 1: self.wview('incontext', self.rset, row=0) elif 1 < self.rset.rowcount <= 5: @@ -220,8 +220,8 @@ self.w(u'') # else show links to display related entities else: - rql = self.rset.printable_rql() - self.rset.limit(maxrelated) + rql = rset.printable_rql() + self.rset.limit(limit) # remove extra entity self.w(u'
') self.wview('simplelist', self.rset) self.w(u'[%s]' % (self.build_url(rql=rql),