From 6abea58e9359f14b256edb2dca0690b9c3ffe875 Mon Sep 17 00:00:00 2001 From: "W. Trevor King" Date: Thu, 21 Jan 2010 20:54:00 -0500 Subject: Add Comment.safe_in_reply_to to improve comment xml output. Now be show --xml ID | be-xml-to-mbox | catmutt shows appropriate linking regardless of missing references or references to alt-ids in the original comments. On the other hand, be show --xml ID | be import-xml could alter alt-ids. If that's a problem we could turn off save_in_reply_to usage via an option to the xml methods in the future. --- libbe/comment.py | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/libbe/comment.py b/libbe/comment.py index b80188b..f0cc45c 100644 --- a/libbe/comment.py +++ b/libbe/comment.py @@ -253,6 +253,23 @@ class Comment(Tree, settings_object.SavedSettingsObject): return str(value) return value + def safe_in_reply_to(self): + """ + Return self.in_reply_to, except... + * if no comment matches that id, in which case return None. + * if that id matches another comments .alt_id, in which case + return the matching comments .uuid. + """ + if self.in_reply_to == None: + return None + else: + try: + irt_comment = self.bug.comment_from_uuid( + self.in_reply_to, match_alt_id=True) + return irt_comment.uuid + except KeyError: + return None + def xml(self, indent=0): """ >>> comm = Comment(bug=None, body="Some\\ninsightful\\nremarks\\n") @@ -281,7 +298,7 @@ class Comment(Tree, settings_object.SavedSettingsObject): info = [('uuid', self.uuid), ('alt-id', self.alt_id), ('short-name', self.id.user()), - ('in-reply-to', self.in_reply_to), + ('in-reply-to', self.safe_in_reply_to()), ('author', self._setting_attr_string('author')), ('date', self.date), ('content-type', self.content_type), -- cgit