You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@allura.apache.org by br...@apache.org on 2013/09/19 18:21:34 UTC
[02/41] git commit: [#6100] ticket:420 added redirect for moved
tickets
[#6100] ticket:420 added redirect for moved tickets
Project: http://git-wip-us.apache.org/repos/asf/incubator-allura/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-allura/commit/c9531d5d
Tree: http://git-wip-us.apache.org/repos/asf/incubator-allura/tree/c9531d5d
Diff: http://git-wip-us.apache.org/repos/asf/incubator-allura/diff/c9531d5d
Branch: refs/heads/db/5822
Commit: c9531d5da7f7500c014c2ea8019337bf31c81d85
Parents: 1e8670e
Author: Anton Kasyanov <mi...@gmail.com>
Authored: Fri Aug 30 13:40:24 2013 +0300
Committer: Tim Van Steenburgh <tv...@gmail.com>
Committed: Wed Sep 18 14:39:09 2013 +0000
----------------------------------------------------------------------
ForgeTracker/forgetracker/model/ticket.py | 2 ++
.../forgetracker/tests/functional/test_root.py | 18 +++++++++++++++++-
ForgeTracker/forgetracker/tracker_main.py | 11 ++++++++++-
3 files changed, 29 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/c9531d5d/ForgeTracker/forgetracker/model/ticket.py
----------------------------------------------------------------------
diff --git a/ForgeTracker/forgetracker/model/ticket.py b/ForgeTracker/forgetracker/model/ticket.py
index f7534e9..7bb4609 100644
--- a/ForgeTracker/forgetracker/model/ticket.py
+++ b/ForgeTracker/forgetracker/model/ticket.py
@@ -897,6 +897,8 @@ class Ticket(VersionedArtifact, ActivityObject, VotableArtifact):
if old_val is None:
custom_fields[fn] = None if ft == 'user' else ''
custom_fields[fn] = old_val
+ custom_fields['moved_from_app'] = prior_app.config._id
+ custom_fields['moved_from_id'] = self.ticket_num
self.custom_fields = custom_fields
# move ticket. ensure unique ticket_num
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/c9531d5d/ForgeTracker/forgetracker/tests/functional/test_root.py
----------------------------------------------------------------------
diff --git a/ForgeTracker/forgetracker/tests/functional/test_root.py b/ForgeTracker/forgetracker/tests/functional/test_root.py
index d2185fa..afbf8cf 100644
--- a/ForgeTracker/forgetracker/tests/functional/test_root.py
+++ b/ForgeTracker/forgetracker/tests/functional/test_root.py
@@ -1733,6 +1733,22 @@ class TestFunctionalController(TrackerTestController):
status=403)
@td.with_tool('test', 'Tickets', 'dummy')
+ def test_move_ticket_redirect(self):
+ self.new_ticket(summary='test 1')
+ self.app.get('/p/test/bugs/1/', status=200) # shouldn't fail
+
+ # move ticket 1 to 'dummy' tracker
+ p = M.Project.query.get(shortname='test')
+ dummy_tracker = p.app_instance('dummy')
+ r = self.app.post('/p/test/bugs/1/move',
+ params={'tracker': str(dummy_tracker.config._id)}).follow()
+ assert_equal(r.request.path, '/p/test/dummy/1/')
+
+ # test that old url redirects to moved ticket
+ self.app.get('/p/test/bugs/1/', status=301).follow()
+ assert_equal(r.request.path, '/p/test/dummy/1/')
+
+ @td.with_tool('test', 'Tickets', 'dummy')
def test_move_ticket_and_delete_tool(self):
"""See [#5708] for details."""
# create two tickets and ensure they are viewable
@@ -2549,4 +2565,4 @@ class TestStats(TrackerTestController):
def test_stats(self):
r = self.app.get('/bugs/stats/', status=200)
- assert_in('# tickets: 0', r.body)
\ No newline at end of file
+ assert_in('# tickets: 0', r.body)
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/c9531d5d/ForgeTracker/forgetracker/tracker_main.py
----------------------------------------------------------------------
diff --git a/ForgeTracker/forgetracker/tracker_main.py b/ForgeTracker/forgetracker/tracker_main.py
index 28bd4aa..387bd2f 100644
--- a/ForgeTracker/forgetracker/tracker_main.py
+++ b/ForgeTracker/forgetracker/tracker_main.py
@@ -1180,7 +1180,16 @@ class TicketController(BaseController, FeedController):
if self.ticket is not None:
utils.permanent_redirect(self.ticket.url())
else:
- raise exc.HTTPNotFound('Ticket #%s does not exist.' % ticket_num)
+ # trying to check if ticket was moved from here
+ self.ticket = TM.Ticket.query.find({
+ 'custom_fields.moved_from_app': c.app.config._id,
+ 'custom_fields.moved_from_id': self.ticket_num,
+ }).first()
+ if self.ticket is not None:
+ flash('Ticket #{} was moved to this app'.format(
+ self.ticket.ticket_num
+ ))
+ utils.permanent_redirect(self.ticket.url())
self.attachment = AttachmentsController(self.ticket)
# self.comments = CommentController(self.ticket)