Merge lp:~gmb/launchpad/inline-help-for-bugwatches-2-bug-530162 into lp:launchpad

Proposed by Graham Binns
Status: Merged
Approved by: Abel Deuring
Approved revision: no longer in the source branch.
Merged at revision: 10906
Proposed branch: lp:~gmb/launchpad/inline-help-for-bugwatches-2-bug-530162
Merge into: lp:launchpad
Diff against target: 497 lines (+289/-76)
9 files modified
lib/lp/bugs/browser/bugtask.py (+61/-2)
lib/lp/bugs/browser/configure.zcml (+3/-0)
lib/lp/bugs/configure.zcml (+0/-1)
lib/lp/bugs/interfaces/bugwatch.py (+0/-3)
lib/lp/bugs/model/bugwatch.py (+0/-47)
lib/lp/bugs/stories/bugwatches/xx-bugwatch-errors.txt (+23/-16)
lib/lp/bugs/templates/bugtask-edit-form.pt (+9/-3)
lib/lp/bugs/templates/bugtask-tasks-and-nominations-table-row.pt (+8/-4)
lib/lp/bugs/templates/bugwatch-error-help.pt (+185/-0)
To merge this branch: bzr merge lp:~gmb/launchpad/inline-help-for-bugwatches-2-bug-530162
Reviewer Review Type Date Requested Status
Abel Deuring (community) code Approve
Matthew Revell (community) help Approve
Review via email: mp+25784@code.launchpad.net

Commit message

Popup help has been added for BugWatch errors.

Description of the change

This branch adds inline help for bug watch errors. The idea is that users should be able to fix bug watch error problems themselves (where possible) rather than just being presented with an opaque error.

I've made the following changes:

== lib/lp/bugs/browser/bugtask.py ==

 - I've added a mixin class that can be used by views that display bugwatch error data. This has a single property, bug_watch_error_message, which returns a dict of error-message related gubbins. This property contains the functionality previously found in BugWatch.getLastErrorMessage(), but since that method was used only in view code it seemed to make more sense to implement it in a view mixin rather than as part of the model.

== lib/lp/bugs/browser/configure.zcml ==

 - I've added the necessary ZCML for the BugWatch +error-help view.

== lib/lp/bugs/configure.zcml ==

 - I've removed getLastErrorMessage() from the BugWatch ZCML.

== lib/lp/bugs/interfaces/bugwatch.py ==

 - I've removed the declaration of IBugWatch.getLastErrorMessage()

== lib/lp/bugs/model/bugwatch.py ==

 - I've removed the implementation of BugWatch.getLastErrorMessage()

== lib/lp/bugs/templates/bugtask-edit-form.pt ==

 - I've added popup help to the warning icon that appears when a BugWatch has failed to update.

== lib/lp/bugs/templates/bugtask-tasks-and-nominations-table-row.pt ==

 - I've added a popup help link to the error message that appears when a BugWatch has failed to update.

== lib/lp/bugs/templates/bugwatch-error-help.pt ==

 - I've added help for the various different types of error that a BugWatch could encounter.

=== lib/lp/bugs/stories/bugwatches/xx-bugwatch-errors.txt ==

 - I've updated the story to take account of the popup help links.

To post a comment you must log in.
Revision history for this message
Matthew Revell (matthew.revell) wrote :

+1 on the help pop-up text and great work on creating a dynamic help pop-up.

Small typo:

"The remote bug ID that the bug watch is linked it isn't valid on the remote bug tracker."

Should that be "...is linked to..." ?

review: Approve (help)
Revision history for this message
Abel Deuring (adeuring) :
review: Approve (code)
Revision history for this message
Abel Deuring (adeuring) wrote :
Download full text (6.7 KiB)

/lp/bugs/templates/bugwatch-error-help.pt'
> --- lib/lp/bugs/templates/bugwatch-error-help.pt 1970-01-01 00:00:00 +0000
> +++ lib/lp/bugs/templates/bugwatch-error-help.pt 2010-05-21 14:59:31 +0000
> @@ -0,0 +1,182 @@
> +<html>
> + <head>
> + <title>Bug watch errors</title>
> + <link rel="stylesheet" type="text/css"
> + href="/+icing/yui/cssreset/reset.css" />
> + <link rel="stylesheet" type="text/css"
> + href="/+icing/yui/cssfonts/fonts.css" />
> + <link rel="stylesheet" type="text/css"
> + href="/+icing/yui/cssbase/base.css" />
> + </head>
> + <body tal:define="watch view/context">
> + <h1>Bug watch update errors</h1>
> + <p>
> + Bug watches don't always update successfully. When a bug watch
> + fails to update, Launchpad records what went wrong.
> + </p>
> + <a name="UNKNOWN"></a>
> + <h2>Unknown error</h2>
> + <h3>What went wrong?</h3>
> + <p>
> + Launchpad encountered an unexpected error when trying to retrieve
> + the bug from the remote server.
> + </p>
> + <h3>How can I help fix it?</h3>
> + <p>
> + <a href="mailto:<email address hidden>">Contact us</a> and let us
> + know about the problem.
> + </p>
> + <a name="BUG_NOT_FOUND"></a>
> + <h2>Bug Not Found</h2>
> + <h3>What went wrong?</h3>
> + <p>
> + Launchpad could not find the specified bug on the remote server.
> + </p>
> + <h3>How can I help fix it?</h3>
> + <p>
> + Check that the remote bug
> + (<a tal:replace="structure watch/fmt:external-link" />)
> + exists on the external bug tracker. If it doesn't, you should try
> + to find the correct bug and
> + <a tal:attributes="href watch/fmt:url">update the watch</a> so
> + that it points to the correct remote bug.
> + </p>
> + <a name="CONNECTION_ERROR"></a>
> + <h2>Connection Error</h2>
> + <h3>What went wrong?</h3>
> + <p>
> + Launchpad was unable to connect to the remote server.
> + </p>
> + <h3>How can I help fix it?</h3>
> + <p>
> + Check that the remote bug tracker
> + (<a tal:replace="structure watch/bugtracker/fmt:external-link" />)
> + is on-line. If it is, you should
> + <a href="mailto:<email address hidden>">contact us</a> and let us
> + know about the problem.
> + </p>
> + <a name="INVALID_BUG_ID"></a>
> + <h2>Invalid Bug ID</h2>
> + <h3>What went wrong?</h3>
> + <p>
> + The remote bug ID that the bug watch is linked it isn't valid on
> + the remote bug tracker.
> + </p>
> + <h3>How can I help fix it?</h3>
> + <p>
> + <a href="mailto:<email address hidden>">Contact us</a> and let us

...know about the problem

> + </p>
> + <a name="TIMEOUT"></a>
> + <h2>Timeout</h2>
> + <h3>What went wrong?</h3>
> + <p>
> + Launchpad encountered a timeout when trying to connect to the
> + remote server and was unable to retrieve the bug's status.
> + </p>
> + <h3>How can I help fix it?</h3>
> + <p>
> + <a href="mailto:<email address hidden>">Contact us</a> and let us

...know about the problem

> + </p>
> + <p>
> + Check that the remote b...

Read more...

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'lib/lp/bugs/browser/bugtask.py'
--- lib/lp/bugs/browser/bugtask.py 2010-05-09 16:08:47 +0000
+++ lib/lp/bugs/browser/bugtask.py 2010-05-21 16:19:26 +0000
@@ -115,6 +115,7 @@
115 IProductSeriesBugTask, IRemoveQuestionFromBugTaskForm, IUpstreamBugTask,115 IProductSeriesBugTask, IRemoveQuestionFromBugTaskForm, IUpstreamBugTask,
116 IUpstreamProductBugTaskSearch, UNRESOLVED_BUGTASK_STATUSES)116 IUpstreamProductBugTaskSearch, UNRESOLVED_BUGTASK_STATUSES)
117from lp.bugs.interfaces.bugtracker import BugTrackerType117from lp.bugs.interfaces.bugtracker import BugTrackerType
118from lp.bugs.interfaces.bugwatch import BugWatchActivityStatus
118from lp.bugs.interfaces.cve import ICveSet119from lp.bugs.interfaces.cve import ICveSet
119from lp.bugs.interfaces.malone import IMaloneApplication120from lp.bugs.interfaces.malone import IMaloneApplication
120from lp.registry.interfaces.distribution import IDistribution121from lp.registry.interfaces.distribution import IDistribution
@@ -1176,7 +1177,64 @@
1176 return '_'.join(parts)1177 return '_'.join(parts)
11771178
11781179
1179class BugTaskEditView(LaunchpadEditFormView):1180class BugTaskBugWatchMixin:
1181 """A mixin to be used where a BugTask view displays BugWatch data."""
1182
1183 @property
1184 def bug_watch_error_message(self):
1185 """Return a browser-useable error message for a bug watch."""
1186 if not self.context.bugwatch:
1187 return None
1188
1189 bug_watch = self.context.bugwatch
1190 if not bug_watch.last_error_type:
1191 return None
1192
1193 error_message_mapping = {
1194 BugWatchActivityStatus.BUG_NOT_FOUND: "%(bugtracker)s bug #"
1195 "%(bug)s appears not to exist. Check that the bug "
1196 "number is correct.",
1197 BugWatchActivityStatus.CONNECTION_ERROR: "Launchpad couldn't "
1198 "connect to %(bugtracker)s.",
1199 BugWatchActivityStatus.INVALID_BUG_ID: "Bug ID %(bug)s isn't "
1200 "valid on %(bugtracker)s. Check that the bug ID is "
1201 "correct.",
1202 BugWatchActivityStatus.TIMEOUT: "Launchpad's connection to "
1203 "%(bugtracker)s timed out.",
1204 BugWatchActivityStatus.UNKNOWN: "Launchpad couldn't import bug "
1205 "#%(bug)s from " "%(bugtracker)s.",
1206 BugWatchActivityStatus.UNPARSABLE_BUG: "Launchpad couldn't "
1207 "extract a status from %(bug)s on %(bugtracker)s.",
1208 BugWatchActivityStatus.UNPARSABLE_BUG_TRACKER: "Launchpad "
1209 "couldn't determine the version of %(bugtrackertype)s "
1210 "running on %(bugtracker)s.",
1211 BugWatchActivityStatus.UNSUPPORTED_BUG_TRACKER: "Launchpad "
1212 "doesn't support importing bugs from %(bugtrackertype)s"
1213 " bug trackers.",
1214 BugWatchActivityStatus.PRIVATE_REMOTE_BUG: "The bug is marked as "
1215 "private on the remote bug tracker. Launchpad cannot import "
1216 "the status of private remote bugs.",
1217 }
1218
1219 if bug_watch.last_error_type in error_message_mapping:
1220 message = error_message_mapping[bug_watch.last_error_type]
1221 else:
1222 message = bug_watch.last_error_type.description
1223
1224 error_data = {
1225 'bug': bug_watch.remotebug,
1226 'bugtracker': bug_watch.bugtracker.title,
1227 'bugtrackertype': bug_watch.bugtracker.bugtrackertype.title}
1228
1229 return {
1230 'message': message % error_data,
1231 'help_url': '%s#%s' % (
1232 canonical_url(bug_watch, view_name="+error-help"),
1233 bug_watch.last_error_type.name),
1234 }
1235
1236
1237class BugTaskEditView(LaunchpadEditFormView, BugTaskBugWatchMixin):
1180 """The view class used for the task +editstatus page."""1238 """The view class used for the task +editstatus page."""
11811239
1182 schema = IBugTask1240 schema = IBugTask
@@ -3264,7 +3322,7 @@
3264 return None3322 return None
32653323
32663324
3267class BugTaskTableRowView(LaunchpadView):3325class BugTaskTableRowView(LaunchpadView, BugTaskBugWatchMixin):
3268 """Browser class for rendering a bugtask row on the bug page."""3326 """Browser class for rendering a bugtask row on the bug page."""
32693327
3270 is_conjoined_slave = None3328 is_conjoined_slave = None
@@ -3841,3 +3899,4 @@
3841 @property3899 @property
3842 def text(self):3900 def text(self):
3843 return self.context.bug.displayname3901 return self.context.bug.displayname
3902
38443903
=== modified file 'lib/lp/bugs/browser/configure.zcml'
--- lib/lp/bugs/browser/configure.zcml 2010-05-18 22:36:20 +0000
+++ lib/lp/bugs/browser/configure.zcml 2010-05-21 16:19:26 +0000
@@ -1133,6 +1133,9 @@
1133 <browser:page1133 <browser:page
1134 name="+portlet-details"1134 name="+portlet-details"
1135 template="../templates/bugwatch-portlet-details.pt"/>1135 template="../templates/bugwatch-portlet-details.pt"/>
1136 <browser:page
1137 name="+error-help"
1138 template="../templates/bugwatch-error-help.pt"/>
1136 </browser:pages>1139 </browser:pages>
1137 <browser:url1140 <browser:url
1138 for="lp.bugs.interfaces.bugwatch.IBugWatchSet"1141 for="lp.bugs.interfaces.bugwatch.IBugWatchSet"
11391142
=== modified file 'lib/lp/bugs/configure.zcml'
--- lib/lp/bugs/configure.zcml 2010-04-19 19:26:05 +0000
+++ lib/lp/bugs/configure.zcml 2010-05-21 16:19:26 +0000
@@ -852,7 +852,6 @@
852 can_be_rescheduled852 can_be_rescheduled
853 datecreated853 datecreated
854 failed_activity854 failed_activity
855 getLastErrorMessage
856 hasComment855 hasComment
857 unpushed_comments856 unpushed_comments
858 id857 id
859858
=== modified file 'lib/lp/bugs/interfaces/bugwatch.py'
--- lib/lp/bugs/interfaces/bugwatch.py 2010-04-30 03:10:17 +0000
+++ lib/lp/bugs/interfaces/bugwatch.py 2010-05-21 16:19:26 +0000
@@ -230,9 +230,6 @@
230 def destroySelf():230 def destroySelf():
231 """Delete this bug watch."""231 """Delete this bug watch."""
232232
233 def getLastErrorMessage():
234 """Return a string describing the contents of last_error_type."""
235
236 def hasComment(comment_id):233 def hasComment(comment_id):
237 """Return True if a comment has been imported for the BugWatch.234 """Return True if a comment has been imported for the BugWatch.
238235
239236
=== modified file 'lib/lp/bugs/model/bugwatch.py'
--- lib/lp/bugs/model/bugwatch.py 2010-05-13 12:49:15 +0000
+++ lib/lp/bugs/model/bugwatch.py 2010-05-21 16:19:26 +0000
@@ -201,53 +201,6 @@
201 assert len(self.bugtasks) == 0, "Can't delete linked bug watches"201 assert len(self.bugtasks) == 0, "Can't delete linked bug watches"
202 SQLBase.destroySelf(self)202 SQLBase.destroySelf(self)
203203
204 def getLastErrorMessage(self):
205 """See `IBugWatch`."""
206
207 if not self.last_error_type:
208 return None
209
210 error_message_mapping = {
211 BugWatchActivityStatus.BUG_NOT_FOUND: "%(bugtracker)s bug #"
212 "%(bug)s appears not to exist. Check that the bug "
213 "number is correct.",
214 BugWatchActivityStatus.CONNECTION_ERROR: "Launchpad couldn't "
215 "connect to %(bugtracker)s.",
216 BugWatchActivityStatus.INVALID_BUG_ID: "Bug ID %(bug)s isn't "
217 "valid on %(bugtracker)s. Check that the bug ID is "
218 "correct.",
219 BugWatchActivityStatus.TIMEOUT: "Launchpad's connection to "
220 "%(bugtracker)s timed out.",
221 BugWatchActivityStatus.UNKNOWN: "Launchpad couldn't import bug "
222 "#%(bug)s from " "%(bugtracker)s.",
223 BugWatchActivityStatus.UNPARSABLE_BUG: "Launchpad couldn't "
224 "extract a status from %(bug)s on %(bugtracker)s.",
225 BugWatchActivityStatus.UNPARSABLE_BUG_TRACKER: "Launchpad "
226 "couldn't determine the version of %(bugtrackertype)s "
227 "running on %(bugtracker)s.",
228 BugWatchActivityStatus.UNSUPPORTED_BUG_TRACKER: "Launchpad "
229 "doesn't support importing bugs from %(bugtrackertype)s"
230 " bug trackers.",
231 BugWatchActivityStatus.PRIVATE_REMOTE_BUG: "The bug is marked as "
232 "private on the remote bug tracker. Launchpad cannot import "
233 "the status of private remote bugs.",
234 }
235
236 if self.last_error_type in error_message_mapping:
237 message = error_message_mapping[self.last_error_type]
238 elif self.last_error_type != BugWatchActivityStatus.UNKNOWN:
239 message = self.last_error_type.description
240 else:
241 message = ("Launchpad couldn't import bug #%(bug)s from "
242 "%(bugtracker)s.")
243
244 error_data = {
245 'bug': self.remotebug,
246 'bugtracker': self.bugtracker.title,
247 'bugtrackertype': self.bugtracker.bugtrackertype.title}
248
249 return message % error_data
250
251 @property204 @property
252 def unpushed_comments(self):205 def unpushed_comments(self):
253 """Return the unpushed comments for this `BugWatch`."""206 """Return the unpushed comments for this `BugWatch`."""
254207
=== modified file 'lib/lp/bugs/stories/bugwatches/xx-bugwatch-errors.txt'
--- lib/lp/bugs/stories/bugwatches/xx-bugwatch-errors.txt 2010-04-17 02:56:58 +0000
+++ lib/lp/bugs/stories/bugwatches/xx-bugwatch-errors.txt 2010-05-21 16:19:26 +0000
@@ -45,14 +45,19 @@
45 >>> logout()45 >>> logout()
4646
47The error, telling us that the bug wasn't found on the remote server,47The error, telling us that the bug wasn't found on the remote server,
48should now be displayed to the user.48should now be displayed to the user, along with a link to the popup help
49for that error message.
4950
50 >>> user_browser.open('http://bugs.launchpad.dev/thunderbird/+bug/12')51 >>> user_browser.open('http://bugs.launchpad.dev/thunderbird/+bug/12')
51 >>> for tag in find_tags_by_class(user_browser.contents,52 >>> for tag in find_tags_by_class(user_browser.contents,
52 ... 'error message'):53 ... 'error message'):
53 ... print tag.renderContents()54 ... print extract_text(tag.renderContents())
54 The Mozilla.org Bug Tracker bug #900 appears not to exist. Check55 The Mozilla.org Bug Tracker bug #900 appears not to exist. Check
55 that the bug number is correct.56 that the bug number is correct. (what does this mean?)
57
58 >>> help_link = user_browser.getLink('(what does this mean?)')
59 >>> print help_link.url
60 http://bugs.launchpad.dev/.../+error-help#BUG_NOT_FOUND
5661
57It's also shown in the tooltip of the warning icon next to the bug watch62It's also shown in the tooltip of the warning icon next to the bug watch
58in the bugtask table.63in the bugtask table.
@@ -77,29 +82,31 @@
77 ... user_browser.open('http://bugs.launchpad.dev/thunderbird/+bug/12')82 ... user_browser.open('http://bugs.launchpad.dev/thunderbird/+bug/12')
78 ... for tag in find_tags_by_class(user_browser.contents,83 ... for tag in find_tags_by_class(user_browser.contents,
79 ... 'error message'):84 ... 'error message'):
80 ... print tag.renderContents()85 ... print extract_text(tag.renderContents())
81 Launchpad couldn't import bug #900 from The Mozilla.org Bug Tracker.86 Launchpad couldn't import bug #900 from The Mozilla.org Bug
87 Tracker...
82 The Mozilla.org Bug Tracker bug #900 appears not to exist. Check88 The Mozilla.org Bug Tracker bug #900 appears not to exist. Check
83 that the bug number is correct.89 that the bug number is correct...
84 Launchpad couldn't connect to The Mozilla.org Bug Tracker.90 Launchpad couldn't connect to The Mozilla.org Bug Tracker...
85 Bug ID 900 isn't valid on The Mozilla.org Bug Tracker. Check that91 Bug ID 900 isn't valid on The Mozilla.org Bug Tracker. Check that
86 the bug ID is correct.92 the bug ID is correct...
87 Launchpad's connection to The Mozilla.org Bug Tracker timed out.93 Launchpad's connection to The Mozilla.org Bug Tracker timed out...
88 Launchpad couldn't extract a status from 900 on The Mozilla.org Bug94 Launchpad couldn't extract a status from 900 on The Mozilla.org Bug
89 Tracker.95 Tracker...
90 Launchpad couldn't determine the version of Bugzilla running on The96 Launchpad couldn't determine the version of Bugzilla running on The
91 Mozilla.org Bug Tracker.97 Mozilla.org Bug Tracker...
92 Launchpad doesn't support importing bugs from Bugzilla bug trackers.98 Launchpad doesn't support importing bugs from Bugzilla bug
99 trackers...
93 The bug is marked as private on the remote bug tracker. Launchpad100 The bug is marked as private on the remote bug tracker. Launchpad
94 cannot import the status of private remote bugs.101 cannot import the status of private remote bugs...
95 The remote bug's status was synchronized successfully but comments102 The remote bug's status was synchronized successfully but comments
96 could not be imported from the remote bug.103 could not be imported from the remote bug...
97 The remote bug's status was synchronized successfully and its104 The remote bug's status was synchronized successfully and its
98 comments were successfully imported but Launchpad was unable to push105 comments were successfully imported but Launchpad was unable to push
99 comments back to the remote bug.106 comments back to the remote bug...
100 The remote bug's status and comments were synchronized sucessfully107 The remote bug's status and comments were synchronized sucessfully
101 with Launchpad but Launchpad was unable to set the remote bug's link108 with Launchpad but Launchpad was unable to set the remote bug's link
102 back to the relevant Launchpad bug.109 back to the relevant Launchpad bug...
103110
104Finally, if the error gets solved (or no error occurs), the error111Finally, if the error gets solved (or no error occurs), the error
105message will go away.112message will go away.
106113
=== modified file 'lib/lp/bugs/templates/bugtask-edit-form.pt'
--- lib/lp/bugs/templates/bugtask-edit-form.pt 2009-07-17 17:59:07 +0000
+++ lib/lp/bugs/templates/bugtask-edit-form.pt 2010-05-21 16:19:26 +0000
@@ -36,9 +36,15 @@
36 <tal:bugtracker-active36 <tal:bugtracker-active
37 condition="watch/bugtracker/active">37 condition="watch/bugtracker/active">
38 <p tal:condition="watch/last_error_type"38 <p tal:condition="watch/last_error_type"
39 class="error message"39 class="error message">
40 tal:content="watch/getLastErrorMessage"40 <tal:bugwatch-error-message define="
41 />41 message view/bug_watch_error_message/message;
42 help_url view/bug_watch_error_message/help_url;">
43 <tal:message replace="message" /><br />
44 <a tal:attributes="href help_url" target="help" class="help"
45 >(what does this mean?)</a>
46 </tal:bugwatch-error-message>
47 </p>
42 </tal:bugtracker-active>48 </tal:bugtracker-active>
43 <p class="warning message"49 <p class="warning message"
44 tal:condition="not:watch/bugtracker/active">50 tal:condition="not:watch/bugtracker/active">
4551
=== modified file 'lib/lp/bugs/templates/bugtask-tasks-and-nominations-table-row.pt'
--- lib/lp/bugs/templates/bugtask-tasks-and-nominations-table-row.pt 2010-04-16 11:20:33 +0000
+++ lib/lp/bugs/templates/bugtask-tasks-and-nominations-table-row.pt 2010-05-21 16:19:26 +0000
@@ -114,10 +114,14 @@
114 condition="context/bugwatch/bugtracker/active">114 condition="context/bugwatch/bugtracker/active">
115 <span tal:condition="not:context/bugwatch/last_error_type"115 <span tal:condition="not:context/bugwatch/last_error_type"
116 class="sprite bug-remote"></span>116 class="sprite bug-remote"></span>
117 <span tal:condition="context/bugwatch/last_error_type"117 <a tal:condition="context/bugwatch/last_error_type"
118 class="sprite warning-icon"118 tal:attributes="href view/bug_watch_error_message/help_url"
119 tal:attributes="title context/bugwatch/getLastErrorMessage"119 target="help"
120 id="bugwatch-error-sprite"></span>120 class="icon help">
121 <span class="sprite warning-icon"
122 tal:attributes="title view/bug_watch_error_message/message"
123 id="bugwatch-error-sprite"></span>
124 </a>
121 </tal:bugtracker-active>125 </tal:bugtracker-active>
122 <span tal:condition="not:context/bugwatch/bugtracker/active"126 <span tal:condition="not:context/bugwatch/bugtracker/active"
123 class="sprite warning-icon"></span>127 class="sprite warning-icon"></span>
124128
=== added file 'lib/lp/bugs/templates/bugwatch-error-help.pt'
--- lib/lp/bugs/templates/bugwatch-error-help.pt 1970-01-01 00:00:00 +0000
+++ lib/lp/bugs/templates/bugwatch-error-help.pt 2010-05-21 16:19:26 +0000
@@ -0,0 +1,185 @@
1<html>
2 <head>
3 <title>Bug watch errors</title>
4 <link rel="stylesheet" type="text/css"
5 href="/+icing/yui/cssreset/reset.css" />
6 <link rel="stylesheet" type="text/css"
7 href="/+icing/yui/cssfonts/fonts.css" />
8 <link rel="stylesheet" type="text/css"
9 href="/+icing/yui/cssbase/base.css" />
10 </head>
11 <body tal:define="watch view/context">
12 <h1>Bug watch update errors</h1>
13 <p>
14 Bug watches don't always update successfully. When a bug watch
15 fails to update, Launchpad records what went wrong.
16 </p>
17 <a name="UNKNOWN"></a>
18 <h2>Unknown error</h2>
19 <h3>What went wrong?</h3>
20 <p>
21 Launchpad encountered an unexpected error when trying to retrieve
22 the bug from the remote server.
23 </p>
24 <h3>How can I help fix it?</h3>
25 <p>
26 <a href="mailto:feedback@launchpad.net">Contact us</a> and let us
27 know about the problem.
28 </p>
29 <a name="BUG_NOT_FOUND"></a>
30 <h2>Bug Not Found</h2>
31 <h3>What went wrong?</h3>
32 <p>
33 Launchpad could not find the specified bug on the remote server.
34 </p>
35 <h3>How can I help fix it?</h3>
36 <p>
37 Check that the remote bug
38 (<a tal:replace="structure watch/fmt:external-link" />)
39 exists on the external bug tracker. If it doesn't, you should try
40 to find the correct bug and
41 <a tal:attributes="href watch/fmt:url">update the watch</a> so
42 that it points to the correct remote bug.
43 </p>
44 <a name="CONNECTION_ERROR"></a>
45 <h2>Connection Error</h2>
46 <h3>What went wrong?</h3>
47 <p>
48 Launchpad was unable to connect to the remote server.
49 </p>
50 <h3>How can I help fix it?</h3>
51 <p>
52 Check that the remote bug tracker
53 (<a tal:replace="structure watch/bugtracker/fmt:external-link" />)
54 is on-line. If it is, you should
55 <a href="mailto:feedback@launchpad.net">contact us</a> and let us
56 know about the problem.
57 </p>
58 <a name="INVALID_BUG_ID"></a>
59 <h2>Invalid Bug ID</h2>
60 <h3>What went wrong?</h3>
61 <p>
62 The remote bug ID that the bug watch is linked to isn't valid on
63 the remote bug tracker.
64 </p>
65 <h3>How can I help fix it?</h3>
66 <p>
67 <a href="mailto:feedback@launchpad.net">Contact us</a> and let us
68 know about the problem.
69 </p>
70 <a name="TIMEOUT"></a>
71 <h2>Timeout</h2>
72 <h3>What went wrong?</h3>
73 <p>
74 Launchpad encountered a timeout when trying to connect to the
75 remote server and was unable to retrieve the bug's status.
76 </p>
77 <h3>How can I help fix it?</h3>
78 <p>
79 <a href="mailto:feedback@launchpad.net">Contact us</a> and let us
80 know about the problem.
81 </p>
82 <p>
83 Check that the remote bug tracker
84 (<a tal:replace="structure watch/bugtracker/fmt:external-link" />)
85 is on-line. If it is, you should
86 <a href="mailto:feedback@launchpad.net">contact us</a> and let us
87 know about the problem.
88 </p>
89 <a name="UNPARSABLE_BUG"></a>
90 <h2>Unparsable Bug</h2>
91 <h3>What went wrong?</h3>
92 <p>
93 Launchpad could not extract a status from the data it received
94 from the remote server.
95 </p>
96 <h3>How can I help fix it?</h3>
97 <p>
98 Check the <a attributes="href watch/fmt:url">bug watch page</a> to
99 see if this error has happened more than once. If it hasn't, it
100 could be due to bad data in the most recent update.
101 </p>
102 <p>
103 If the error has occurred more than once, you should
104 <a href="mailto:feedback@launchpad.net">contact us</a> and let us
105 know about the problem.
106 </p>
107 <a name="UNPARSABLE_BUG_TRACKER"></a>
108 <h2>Unparsable Bug Tracker Version</h2>
109 <h3>What went wrong?</h3>
110 <p>
111 Launchpad could not determine the version of the bug tracker
112 software running on the remote server.
113 </p>
114 <h3>How can I help fix it?</h3>
115 <p>
116 <a href="mailto:feedback@launchpad.net">Contact us</a> and let us
117 know about the problem.
118 </p>
119 <a name="UNSUPPORTED_BUG_TRACKER"></a>
120 <h2>Unsupported Bugtracker</h2>
121 <h3>What went wrong?</h3>
122 <p>
123 The remote server is using bug tracker software which Launchpad
124 does not currently support.
125 </p>
126 <h3>How can I help fix it?</h3>
127 <p>
128 <a href="https://bugs.launchpad.dev/malone/+filebug"
129 >File a bug</a> requesting that Launchpad support interactions
130 with the remote bug tracker.
131 </p>
132 <a name="PRIVATE_REMOTE_BUG"></a>
133 <h2>Private Remote Bug</h2>
134 <h3>What went wrong?</h3>
135 <p>
136 The bug is marked as private on the remote bug tracker. Launchpad
137 cannot import the status of private remote bugs.
138 </p>
139 <h3>How can I help fix it?</h3>
140 <p>
141 Unfortunately there isn't a lot that can be done about this.
142 You can manually update any bug task linked to the bug watch by
143 choosing "None, the status of the bug is updated manually" for
144 the Remote Watch option of each linked bug task.
145 </p>
146 <a name="COMMENT_IMPORT_FAILED"></a>
147 <h2>Unable to import comments</h2>
148 <h3>What went wrong?</h3>
149 <p>
150 The remote bug's status was synchronized successfully but comments
151 could not be imported from the remote bug.
152 </p>
153 <h3>How can I help fix it?</h3>
154 <p>
155 <a href="mailto:feedback@launchpad.net">Contact us</a> and let us
156 know about the problem.
157 </p>
158 <a name="COMMENT_PUSH_FAILED"></a>
159 <h2>Unable to push comments</h2>
160 <h3>What went wrong?</h3>
161 <p>
162 The remote bug's status was synchronized successfully and its
163 comments were successfully imported but Launchpad was unable to
164 push comments back to the remote bug.
165 </p>
166 <h3>How can I help fix it?</h3>
167 <p>
168 <a href="mailto:feedback@launchpad.net">Contact us</a> and let us
169 know about the problem.
170 </p>
171 <a name="BACKLINK_FAILED"></a>
172 <h2>Unable to set the link to the Launchpad bug on the remote server</h2>
173 <h3>What went wrong?</h3>
174 <p>
175 The remote bug's status and comments were synchronized sucessfully
176 with Launchpad but Launchpad was unable to set the remote bug's
177 link back to the relevant Launchpad bug.
178 </p>
179 <h3>How can I help fix it?</h3>
180 <p>
181 <a href="mailto:feedback@launchpad.net">Contact us</a> and let us
182 know about the problem.
183 </p>
184 </body>
185</html>