# HG changeset patch # User Nicolas Chauvat # Date 1249912468 -7200 # Node ID c8e28e1754f0ee122207291a6528bf044ea3d190 # Parent 1db51bb55b45eeeafa54b309ddca5ea01a453ff1 B [web.box] fix EditRelationBoxTemplate in case neither related nor unrelated diff -r 1db51bb55b45 -r c8e28e1754f0 web/box.py --- a/web/box.py Mon Aug 10 13:59:00 2009 +0200 +++ b/web/box.py Mon Aug 10 15:54:28 2009 +0200 @@ -171,11 +171,12 @@ self.req.add_js('cubicweb.ajax.js') entity = self.entity(row, col) box = SideBoxWidget(display_name(self.req, self.rtype), self.id) - count = self.w_related(box, entity) - if count: + related = self.related_boxitems(entity) + unrelated = self.unrelated_boxitems(entity) + box.extend(related) + if related and unrelated: box.append(BoxSeparator()) - if not self.w_unrelated(box, entity): - del box.items[-1] # remove useless separator + box.extend(unrelated) box.render(self.w) def div_id(self): @@ -192,22 +193,22 @@ etarget.view('incontext')) return RawBoxItem(label, liclass=u'invisible') - def w_related(self, box, entity): - """appends existing relations to the `box`""" + def related_boxitems(self, entity): rql = 'DELETE S %s O WHERE S eid %%(s)s, O eid %%(o)s' % self.rtype - related = self.related_entities(entity) - for etarget in related: - box.append(self.box_item(entity, etarget, rql, u'-')) - return len(related) + related = [] + for etarget in self.related_entities(entity): + related.append(self.box_item(entity, etarget, rql, u'-')) + return related - def w_unrelated(self, box, entity): - """appends unrelated entities to the `box`""" + def unrelated_boxitems(self, entity): rql = 'SET S %s O WHERE S eid %%(s)s, O eid %%(o)s' % self.rtype - i = 0 + unrelated = [] for etarget in self.unrelated_entities(entity): - box.append(self.box_item(entity, etarget, rql, u'+')) - i += 1 - return i + unrelated.append(self.box_item(entity, etarget, rql, u'+')) + return unrelated + + def related_entities(self, entity): + return entity.related(self.rtype, get_role(self), entities=True) def unrelated_entities(self, entity): """returns the list of unrelated entities @@ -229,6 +230,3 @@ entities.append(rset.get_entity(0, 0)) return entities - def related_entities(self, entity): - return entity.related(self.rtype, get_role(self), entities=True) - diff -r 1db51bb55b45 -r c8e28e1754f0 web/htmlwidgets.py --- a/web/htmlwidgets.py Mon Aug 10 13:59:00 2009 +0200 +++ b/web/htmlwidgets.py Mon Aug 10 15:54:28 2009 +0200 @@ -58,6 +58,9 @@ def append(self, item): self.items.append(item) + def extend(self, items): + self.items.extend(items) + title_class = 'boxTitle' main_div_class = 'boxContent' listing_class = 'boxListing'