Merge lp:~adeuring/launchpad/bug-435556 into lp:launchpad

Proposed by Abel Deuring
Status: Merged
Merged at revision: not available
Proposed branch: lp:~adeuring/launchpad/bug-435556
Merge into: lp:launchpad
Diff against target: 142 lines (+78/-12)
2 files modified
lib/lp/bugs/stories/bugtask-management/xx-bugtask-edit-forms.txt (+55/-0)
lib/lp/bugs/templates/bugtask-tasks-and-nominations-table-row.pt (+23/-12)
To merge this branch: bzr merge lp:~adeuring/launchpad/bug-435556
Reviewer Review Type Date Requested Status
Graham Binns (community) Approve
Review via email: mp+14370@code.launchpad.net
To post a comment you must log in.
Revision history for this message
Abel Deuring (adeuring) wrote :

This branch fixes bug 435556: Non-AJAX bugtask edit links always point to the context task.

This cause is trivial: The links were simply "static" links <a href="+editstatus">, so they all pointed to the edit page of the "current" bug task. The fix is trivial: Set the link target via a TAL expression. Note that when the template is rendered, the context is not the bug task as given by the URL of the page: The context is set in BugTasksAndNominationsView._getTableRowView(), which is called by BugTasksAndNominationsView.getBugTaskAndNominationViews(), and the latter method sets the context to the "right" bugtask.

test: ./bin/test --test=xx-bugtask-edit-forms.txt

Lots of tests mention the +editstatus URL; without checking the relevance of them, a test run covering all of these tests is:

./bin/test -vv -f lp stories.bug-release-management
./bin/test -vv -f lp stories.upstream-bugprivacy
./bin/test -vv -f lp stories.bug-also-affects
./bin/test -vv -t xx-edit-package-bug-task-authenticated.txt \
-t xx-bugtask-bugwatch-linkage.txt \
-t xx-bug-privileged-statuses.txt \
-t xx-bug-importance-change.txt \
-t xx-view-editable-bug-task.txt \
-t xx-edit-email-address-bugtask.txt \
-t xx-subscribe-while-editing.txt \
-t xx-switch-to-malone.txt \
-t xx-bugtask-assignee-widget.txt \
-t xx-bug-create-question.txt \
-t xx-incomplete-bugs.txt \
-t xx-bug-activity.txt \
-t xx-deactivate-account.txt \
-t object-milestones.txt \
-t xx-create-milestone-on-distribution.txt \
-t xx-product-reassignment-and-milestones.txt \

= Launchpad lint =

Checking for conflicts. and issues in doctests and templates.
Running jslint, xmllint, pyflakes, and pylint.
Using normal rules.

Linting changed files:
  lib/lp/bugs/stories/bugtask-management/xx-bugtask-edit-forms.txt
  lib/lp/bugs/templates/bugtask-tasks-and-nominations-table-row.pt

Revision history for this message
Graham Binns (gmb) :
review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== added file 'lib/lp/bugs/stories/bugtask-management/xx-bugtask-edit-forms.txt'
2--- lib/lp/bugs/stories/bugtask-management/xx-bugtask-edit-forms.txt 1970-01-01 00:00:00 +0000
3+++ lib/lp/bugs/stories/bugtask-management/xx-bugtask-edit-forms.txt 2009-11-09 13:06:14 +0000
4@@ -0,0 +1,55 @@
5+Bug task edit forms
6+===================
7+
8+Aside from the options to edit the status of a bugtask vie Ajax
9+and via inline forms of the main bug page (which are by default
10+hidden via CSS), the details of a bug task status can be edited
11+on dedicated pages.
12+
13+If a user visits a bug page with a browser that does not have
14+Javascript, the links shown in the columns "Status" and "Importance"
15+of the bug task table lead him to the bug task edit forms of the
16+respective bug task.
17+
18+>>> admin_browser.open('http://bugs.launchpad.dev/firefox/+bug/1')
19+>>> print extract_text(
20+... find_tag_by_id(admin_browser.contents, 'affected-software'))
21+Affects Status Importance Assigned to...
22+Mozilla Firefox... New Low Mark Shuttleworth...
23+mozilla-firefox (Debian)... Confirmed Low debbugs #304014...
24+mozilla-firefox (Ubuntu)... New Medium Unassigned
25+...
26+
27+>>> print admin_browser.getLink('New', index=0).url
28+http://bugs.launchpad.dev/firefox/+bug/1/+editstatus
29+>>> print admin_browser.getLink('Low', index=0).url
30+http://bugs.launchpad.dev/firefox/+bug/1/+editstatus
31+
32+>>> print admin_browser.getLink('Confirmed').url
33+http://bugs.launchpad.dev/debian/+source/mozilla-firefox/+bug/1/+editstatus
34+>>> print admin_browser.getLink('Low', index=1).url
35+http://bugs.launchpad.dev/debian/+source/mozilla-firefox/+bug/1/+editstatus
36+
37+>>> print admin_browser.getLink('New', index=1).url
38+http://bugs.launchpad.dev/ubuntu/+source/mozilla-firefox/+bug/1/+editstatus
39+>>> print admin_browser.getLink('Medium').url
40+http://bugs.launchpad.dev/ubuntu/+source/mozilla-firefox/+bug/1/+editstatus
41+
42+>>> admin_browser.getLink('New').click()
43+>>> print extract_text(admin_browser.contents)
44+Bug #1 in Mozilla Firefox...
45+...
46+Affecting: Mozilla Firefox
47+Filed here by: Sample Person
48+When: 2004-01-02
49+Assigned: 2005-01-02
50+Project (Find&hellip;)
51+Status Importance Milestone
52+New... Low... (no value)...
53+Assigned to... Mark Shuttleworth (mark)
54+...
55+Comment on this change (optional)
56+...
57+
58+For more details of the +editstatus page, see xx-bug-privileged-statuses.txt,
59+xx-view-editable-bug-task.txt.
60
61=== modified file 'lib/lp/bugs/templates/bugtask-tasks-and-nominations-table-row.pt'
62--- lib/lp/bugs/templates/bugtask-tasks-and-nominations-table-row.pt 2009-09-20 17:15:31 +0000
63+++ lib/lp/bugs/templates/bugtask-tasks-and-nominations-table-row.pt 2009-11-09 13:06:14 +0000
64@@ -7,7 +7,8 @@
65 tasklink view/taskLink;
66 row_id string:tasksummary${context/id};
67 form_row_id string:task${context/id}">
68- <tr tal:attributes="class view/getTaskRowCSSClass; id row_id">
69+ <tr tal:define="editstatus_url string:${context/fmt:url}/+editstatus"
70+ tal:attributes="class view/getTaskRowCSSClass; id row_id">
71 <td class="icon left right">
72 <metal:expander
73 metal:define-macro="expander"
74@@ -68,10 +69,12 @@
75 <div class="status-content"
76 style="width: 100%; float: left">
77 <a href="+editstatus"
78- tal:attributes="class string:value status${context/status/name}"
79+ tal:attributes="class string:value status${context/status/name};
80+ href editstatus_url"
81 style="float: left"
82 tal:content="context/status/title" />
83- <a href="+editstatus" style="margin-left: 3px">
84+ <a href="+editstatus" style="margin-left: 3px"
85+ tal:attributes="href editstatus_url">
86 <img class="editicon" src="/@@/edit" />
87 </a>
88 </div>
89@@ -82,10 +85,12 @@
90 <div class="importance-content"
91 style="width: 100%; float: left">
92 <a href="+editstatus"
93- tal:attributes="class string:value importance${context/importance/name}"
94+ tal:attributes="class string:value importance${context/importance/name};
95+ href editstatus_url"
96 style="float: left"
97 tal:content="context/importance/title" />
98- <a href="+editstatus" style="margin-left: 3px">
99+ <a href="+editstatus" style="margin-left: 3px"
100+ tal:attributes="href editstatus_url">
101 <img class="editicon" src="/@@/edit" />
102 </a>
103 </div>
104@@ -143,25 +148,31 @@
105 style="width: 100%; float: left">
106 <tal:not-milestoned condition="python: not context.milestone and
107 view.user_can_edit_milestone">
108- <a href="+editstatus">
109+ <a href="+editstatus" tal:attributes="href editstatus_url">
110 <img class="addicon" src="/@@/add" />
111 </a>
112- <a href="+editstatus" class="nulltext js-action">Target to milestone</a>
113- <a href="+editstatus" class="value" style="display:none" />
114- <a href="+editstatus">
115+ <a href="+editstatus" class="nulltext js-action"
116+ tal:attributes="href editstatus_url">Target to milestone</a>
117+ <a href="+editstatus" class="value" style="display:none"
118+ tal:attributes="href editstatus_url" />
119+ <a href="+editstatus"
120+ tal:attributes="href editstatus_url">
121 <img class="editicon" style="display:none" src="/@@/edit" />
122 </a>
123 </tal:not-milestoned>
124 <tal:milestoned condition="context/milestone">
125- <a href="+editstatus">
126+ <a href="+editstatus"
127+ tal:attributes="href editstatus_url">
128 <img class="addicon" style="display:none" src="/@@/add" />
129 </a>
130- <a href="+editstatus" style="display:none" class="nulltext js-sction">
131+ <a href="+editstatus" style="display:none" class="nulltext js-sction"
132+ tal:attributes="href editstatus_url">
133 Target to milestone
134 </a>
135 <a tal:attributes="href context/milestone/fmt:url" class="value"
136 tal:content="context/milestone/title" />
137- <a href="+editstatus" tal:condition="view/user_can_edit_milestone">
138+ <a href="+editstatus" tal:condition="view/user_can_edit_milestone"
139+ tal:attributes="href editstatus_url">
140 <img class="editicon" src="/@@/edit" />
141 </a>
142 </tal:milestoned>