diff --git a/entities.py b/entities.py index 3ebe83f66291a3cef0fd90bee4646b3a7c04031a_ZW50aXRpZXMucHk=..265e1ad99d077bc7a608fd5209c14f5d5b36b033_ZW50aXRpZXMucHk= 100644 --- a/entities.py +++ b/entities.py @@ -98,6 +98,5 @@ return [] # IPrevNext interface ##################################################### - - def next_entity(self): + def _sibling_entry(self, order, operator): if self.entry_of: @@ -103,6 +102,7 @@ if self.entry_of: - rql = ('Any B ORDERBY B ASC LIMIT 1 ' - 'WHERE B is BlogEntry, B entry_of BL, BL eid %(blog)s, ' - 'B eid > %(eid)s') - rset = self.req.execute(rql, {'blog': self.entry_of[0].eid, 'eid': self.eid}) + rql = ('Any B ORDERBY B %s LIMIT 1 ' + 'WHERE B is BlogEntry, B entry_of BL, BL eid %%(blog)s, ' + 'B eid %s %%(eid)s') + rset = self.req.execute(rql % (order, operator), + {'blog': self.entry_of[0].eid, 'eid': self.eid}) else: @@ -108,8 +108,7 @@ else: - rql = ('Any B ORDERBY B ASC LIMIT 1 ' - 'WHERE B is BlogEntry, B eid > %(eid)s') - rset = self.req.execute(rql, {'eid': self.eid}) - + rql = ('Any B ORDERBY B %s LIMIT 1 ' + 'WHERE B is BlogEntry, B eid %s %%(eid)s') + rset = self.req.execute(rql % (order, operator), {'eid': self.eid}) if rset: return rset.get_entity(0,0) @@ -113,4 +112,7 @@ if rset: return rset.get_entity(0,0) + def next_entity(self): + return self._sibling_entry('ASC', '>') + def previous_entity(self): @@ -116,13 +118,2 @@ def previous_entity(self): - if self.entry_of: - rql = ('Any B ORDERBY B DESC LIMIT 1 ' - 'WHERE B is BlogEntry, B entry_of BL, BL eid %(blog)s, ' - 'B eid < %(eid)s') - rset = self.req.execute(rql, {'blog': self.entry_of[0].eid, 'eid': self.eid}) - else: - rql = ('Any B ORDERBY B DESC LIMIT 1 ' - 'WHERE B is BlogEntry, B eid < %(eid)s') - rset = self.req.execute(rql, {'eid': self.eid}) - if rset: - return rset.get_entity(0,0) - + return self._sibling_entry('DESC', '<')