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)