diff --git a/browser/common.py b/browser/common.py index 8407f8f..762fba1 100644 --- a/browser/common.py +++ b/browser/common.py @@ -422,6 +422,8 @@ class BaseView(GenericView, I18NView): def renderDescription(self, text=None): if text is None: text = self.description + if text is None: + return u'' htmlPattern = re.compile(r'<(.+)>.+') if htmlPattern.search(text): return text diff --git a/browser/concept.py b/browser/concept.py index e38fb1c..1091ec1 100644 --- a/browser/concept.py +++ b/browser/concept.py @@ -368,7 +368,7 @@ class ConceptView(BaseView): def parents(self): rels = sorted(self.context.getParentRelations(), - key=(lambda x: x.first.title.lower())) + key=(lambda x: x.first.title and x.first.title.lower())) for r in rels: yield self.childViewFactory(r, self.request) diff --git a/concept.py b/concept.py index 9a27490..14367ea 100644 --- a/concept.py +++ b/concept.py @@ -201,7 +201,7 @@ class Concept(Contained, Persistent): relationships = [ConceptRelation(None, self, p) for p in predicates] if sort == 'default': #sort = lambda x: (x.order, x.first.title.lower()) - sort = lambda x: (x.first.title.lower()) + sort = lambda x: (x.first.title and x.first.title.lower()) rels = (r for r in getRelations(parent, self, relationships=relationships) if canListObject(r.first, noSecurityCheck)) return sorted(rels, key=sort) diff --git a/expert/browser/search.py b/expert/browser/search.py index f368042..5a08a2f 100644 --- a/expert/browser/search.py +++ b/expert/browser/search.py @@ -249,7 +249,7 @@ class Search(BaseView): result = [r for r in result if self.checkStates(r)] fv = FilterView(self.context, self.request) result = fv.apply(result) - result = sorted(result, key=lambda x: x.title.lower()) + result = sorted(result, key=lambda x: x.title and x.title.lower()) return self.viewIterator(result) def checkStates(self, obj):