You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@allura.apache.org by tv...@apache.org on 2013/09/18 17:13:31 UTC

[1/5] git commit: [#6100] ticket:420 added redirect for moved tickets

Updated Branches:
  refs/heads/master 1e8670ebb -> 66cb620e0


[#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/master
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)
 


[2/5] git commit: #6100 ticket:431 fixed test

Posted by tv...@apache.org.
#6100 ticket:431 fixed test


Project: http://git-wip-us.apache.org/repos/asf/incubator-allura/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-allura/commit/e2f3e829
Tree: http://git-wip-us.apache.org/repos/asf/incubator-allura/tree/e2f3e829
Diff: http://git-wip-us.apache.org/repos/asf/incubator-allura/diff/e2f3e829

Branch: refs/heads/master
Commit: e2f3e829255229e35c5240dd6c63cbaec60944eb
Parents: 7e40ba9
Author: Anton Kasyanov <mi...@gmail.com>
Authored: Wed Sep 11 20:42:51 2013 +0300
Committer: Tim Van Steenburgh <tv...@gmail.com>
Committed: Wed Sep 18 14:40:14 2013 +0000

----------------------------------------------------------------------
 ForgeTracker/forgetracker/tests/functional/test_root.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/e2f3e829/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 afbf8cf..8632e29 100644
--- a/ForgeTracker/forgetracker/tests/functional/test_root.py
+++ b/ForgeTracker/forgetracker/tests/functional/test_root.py
@@ -1769,7 +1769,7 @@ class TestFunctionalController(TrackerTestController):
 
         # remaining tickets in 'bugs' tracker should still be viewable
         self.app.get('/p/test/bugs/2/', status=200)  # shouldn't fail
-        self.app.get('/p/test/bugs/1/', status=404)  # shouldn't fail
+        self.app.get('/p/test/bugs/1/', status=301)  # ticket counts as moved
 
     @td.with_tool('test', 'Tickets', 'dummy')
     def test_move_ticket_email_notifications(self):


[4/5] git commit: [#6100] ticket:431 Remove commented code and expand test

Posted by tv...@apache.org.
[#6100] ticket:431 Remove commented code and expand test


Project: http://git-wip-us.apache.org/repos/asf/incubator-allura/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-allura/commit/671627eb
Tree: http://git-wip-us.apache.org/repos/asf/incubator-allura/tree/671627eb
Diff: http://git-wip-us.apache.org/repos/asf/incubator-allura/diff/671627eb

Branch: refs/heads/master
Commit: 671627eb5bd3838974014b14da84b3308ca43b39
Parents: e2f3e82
Author: Igor Bondarenko <je...@gmail.com>
Authored: Thu Sep 12 15:32:00 2013 +0300
Committer: Tim Van Steenburgh <tv...@gmail.com>
Committed: Wed Sep 18 14:40:14 2013 +0000

----------------------------------------------------------------------
 ForgeTracker/forgetracker/model/ticket.py               | 2 --
 ForgeTracker/forgetracker/tests/functional/test_root.py | 3 ++-
 2 files changed, 2 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/671627eb/ForgeTracker/forgetracker/model/ticket.py
----------------------------------------------------------------------
diff --git a/ForgeTracker/forgetracker/model/ticket.py b/ForgeTracker/forgetracker/model/ticket.py
index 03ee03f..0ef8cab 100644
--- a/ForgeTracker/forgetracker/model/ticket.py
+++ b/ForgeTracker/forgetracker/model/ticket.py
@@ -898,8 +898,6 @@ 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/671627eb/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 8632e29..823ec28 100644
--- a/ForgeTracker/forgetracker/tests/functional/test_root.py
+++ b/ForgeTracker/forgetracker/tests/functional/test_root.py
@@ -1769,7 +1769,8 @@ class TestFunctionalController(TrackerTestController):
 
         # remaining tickets in 'bugs' tracker should still be viewable
         self.app.get('/p/test/bugs/2/', status=200)  # shouldn't fail
-        self.app.get('/p/test/bugs/1/', status=301)  # ticket counts as moved
+        r = self.app.get('/p/test/bugs/1/', status=301)  # ticket counts as moved
+        r.follow(status=404)  # and not found 'cause already deleted
 
     @td.with_tool('test', 'Tickets', 'dummy')
     def test_move_ticket_email_notifications(self):


[5/5] git commit: [#6100] Put MovedTicket in its own collection; add indexes

Posted by tv...@apache.org.
[#6100] Put MovedTicket in its own collection; add indexes

Signed-off-by: Tim Van Steenburgh <tv...@gmail.com>


Project: http://git-wip-us.apache.org/repos/asf/incubator-allura/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-allura/commit/66cb620e
Tree: http://git-wip-us.apache.org/repos/asf/incubator-allura/tree/66cb620e
Diff: http://git-wip-us.apache.org/repos/asf/incubator-allura/diff/66cb620e

Branch: refs/heads/master
Commit: 66cb620e01ef3e81242b5a5c6fece0ba257b743d
Parents: 671627e
Author: Tim Van Steenburgh <tv...@gmail.com>
Authored: Wed Sep 18 15:12:30 2013 +0000
Committer: Tim Van Steenburgh <tv...@gmail.com>
Committed: Wed Sep 18 15:12:30 2013 +0000

----------------------------------------------------------------------
 ForgeTracker/forgetracker/model/ticket.py | 33 ++++++++++++++++++++++----
 ForgeTracker/forgetracker/tracker_main.py |  7 ++----
 2 files changed, 31 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/66cb620e/ForgeTracker/forgetracker/model/ticket.py
----------------------------------------------------------------------
diff --git a/ForgeTracker/forgetracker/model/ticket.py b/ForgeTracker/forgetracker/model/ticket.py
index 0ef8cab..d0b69c2 100644
--- a/ForgeTracker/forgetracker/model/ticket.py
+++ b/ForgeTracker/forgetracker/model/ticket.py
@@ -36,10 +36,27 @@ from ming.orm import FieldProperty, ForeignIdProperty, RelationProperty
 from ming.orm.declarative import MappedClass
 from ming.orm.ormsession import ThreadLocalORMSession
 
-from allura.model import (Artifact, MovedArtifact, VersionedArtifact, Snapshot,
-                          project_orm_session, BaseAttachment, VotableArtifact, AppConfig, Mailbox, User)
-from allura.model import User, Feed, Thread, Notification, ProjectRole
-from allura.model import ACE, ALL_PERMISSIONS, DENY_ALL
+from allura.model import (
+        ACE,
+        DENY_ALL,
+
+        AppConfig,
+        Artifact,
+        BaseAttachment,
+        Feed,
+        Mailbox,
+        MovedArtifact,
+        Notification,
+        ProjectRole,
+        Snapshot,
+        Thread,
+        User,
+        VersionedArtifact,
+        VotableArtifact,
+
+        artifact_orm_session,
+        project_orm_session,
+)
 from allura.model.timeline import ActivityObject
 from allura.model.notification import MailFooter
 
@@ -1088,6 +1105,14 @@ class TicketAttachment(BaseAttachment):
 
 
 class MovedTicket(MovedArtifact):
+
+    class __mongometa__:
+        session = artifact_orm_session
+        name='moved_ticket'
+        indexes = [
+            ('app_config_id', 'ticket_num'),
+        ]
+
     ticket_num = FieldProperty(int, required=True, allow_none=False)
 
 Mapper.compile_all()

http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/66cb620e/ForgeTracker/forgetracker/tracker_main.py
----------------------------------------------------------------------
diff --git a/ForgeTracker/forgetracker/tracker_main.py b/ForgeTracker/forgetracker/tracker_main.py
index 968d16e..6c6c20d 100644
--- a/ForgeTracker/forgetracker/tracker_main.py
+++ b/ForgeTracker/forgetracker/tracker_main.py
@@ -1180,18 +1180,15 @@ class TicketController(BaseController, FeedController):
                 if self.ticket is not None:
                     utils.permanent_redirect(self.ticket.url())
                 else:
-                    # trying to check if ticket was moved from here
+                    # check if ticket was moved
                     moved_ticket = TM.MovedTicket.query.find({
                         'app_config_id': c.app.config._id,
                         'ticket_num': self.ticket_num,
                     }).first()
                     if moved_ticket:
-                        flash('Ticket #{} was moved to this app'.format(
-                            moved_ticket.ticket_num
-                        ))
+                        flash('Original ticket was moved to this location')
                         utils.permanent_redirect(moved_ticket.moved_to_url)
             self.attachment = AttachmentsController(self.ticket)
-            # self.comments = CommentController(self.ticket)
 
     def _check_security(self):
         if self.ticket is not None:


[3/5] git commit: [#6100] ticket:431 Added MovedTicket and MovedArtifact, updated ticket move

Posted by tv...@apache.org.
[#6100] ticket:431 Added MovedTicket and MovedArtifact, updated ticket move


Project: http://git-wip-us.apache.org/repos/asf/incubator-allura/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-allura/commit/7e40ba99
Tree: http://git-wip-us.apache.org/repos/asf/incubator-allura/tree/7e40ba99
Diff: http://git-wip-us.apache.org/repos/asf/incubator-allura/diff/7e40ba99

Branch: refs/heads/master
Commit: 7e40ba99184c6dc10fe091a02e92b77f28bf8fb8
Parents: c9531d5
Author: Anton Kasyanov <mi...@gmail.com>
Authored: Tue Sep 10 20:44:46 2013 +0300
Committer: Tim Van Steenburgh <tv...@gmail.com>
Committed: Wed Sep 18 14:40:14 2013 +0000

----------------------------------------------------------------------
 Allura/allura/model/__init__.py             |  2 +-
 Allura/allura/model/artifact.py             | 11 +++++++++++
 ForgeTracker/forgetracker/model/__init__.py |  2 +-
 ForgeTracker/forgetracker/model/ticket.py   | 17 ++++++++++++++---
 ForgeTracker/forgetracker/tracker_main.py   | 12 ++++++------
 5 files changed, 33 insertions(+), 11 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/7e40ba99/Allura/allura/model/__init__.py
----------------------------------------------------------------------
diff --git a/Allura/allura/model/__init__.py b/Allura/allura/model/__init__.py
index e5db5ae..27055c8 100644
--- a/Allura/allura/model/__init__.py
+++ b/Allura/allura/model/__init__.py
@@ -22,7 +22,7 @@
 from .neighborhood import Neighborhood, NeighborhoodFile
 from .project import Project, ProjectCategory, TroveCategory, ProjectFile, AppConfig
 from .index import ArtifactReference, Shortlink
-from .artifact import Artifact, Message, VersionedArtifact, Snapshot, Feed, AwardFile, Award, AwardGrant, VotableArtifact
+from .artifact import Artifact, MovedArtifact, Message, VersionedArtifact, Snapshot, Feed, AwardFile, Award, AwardGrant, VotableArtifact
 from .discuss import Discussion, Thread, PostHistory, Post, DiscussionAttachment
 from .attachments import BaseAttachment
 from .auth import AuthGlobals, User, ProjectRole, OpenId, EmailAddress, ApiToken, ApiTicket, OldProjectRole

http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/7e40ba99/Allura/allura/model/artifact.py
----------------------------------------------------------------------
diff --git a/Allura/allura/model/artifact.py b/Allura/allura/model/artifact.py
index 8cfd6ab..2804a17 100644
--- a/Allura/allura/model/artifact.py
+++ b/Allura/allura/model/artifact.py
@@ -879,3 +879,14 @@ class VotableArtifact(MappedClass):
             'votes_up': self.votes_up,
             'votes_down': self.votes_down,
         }
+
+
+class MovedArtifact(Artifact):
+    class __mongometa__:
+        session = artifact_orm_session
+        name='moved_artifact'
+
+    _id = FieldProperty(S.ObjectId)
+    app_config_id = ForeignIdProperty('AppConfig', if_missing=lambda:c.app.config._id)
+    app_config = RelationProperty('AppConfig')
+    moved_to_url = FieldProperty(str, required=True, allow_none=False)

http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/7e40ba99/ForgeTracker/forgetracker/model/__init__.py
----------------------------------------------------------------------
diff --git a/ForgeTracker/forgetracker/model/__init__.py b/ForgeTracker/forgetracker/model/__init__.py
index e346903..2585be9 100644
--- a/ForgeTracker/forgetracker/model/__init__.py
+++ b/ForgeTracker/forgetracker/model/__init__.py
@@ -15,4 +15,4 @@
 #       specific language governing permissions and limitations
 #       under the License.
 
-from ticket import Globals, Bin, Ticket, TicketAttachment
+from ticket import Globals, Bin, Ticket, TicketAttachment, MovedTicket

http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/7e40ba99/ForgeTracker/forgetracker/model/ticket.py
----------------------------------------------------------------------
diff --git a/ForgeTracker/forgetracker/model/ticket.py b/ForgeTracker/forgetracker/model/ticket.py
index 7bb4609..03ee03f 100644
--- a/ForgeTracker/forgetracker/model/ticket.py
+++ b/ForgeTracker/forgetracker/model/ticket.py
@@ -36,7 +36,7 @@ from ming.orm import FieldProperty, ForeignIdProperty, RelationProperty
 from ming.orm.declarative import MappedClass
 from ming.orm.ormsession import ThreadLocalORMSession
 
-from allura.model import (Artifact, VersionedArtifact, Snapshot,
+from allura.model import (Artifact, MovedArtifact, VersionedArtifact, Snapshot,
                           project_orm_session, BaseAttachment, VotableArtifact, AppConfig, Mailbox, User)
 from allura.model import User, Feed, Thread, Notification, ProjectRole
 from allura.model import ACE, ALL_PERMISSIONS, DENY_ALL
@@ -858,6 +858,7 @@ class Ticket(VersionedArtifact, ActivityObject, VotableArtifact):
         app = app_config.project.app_instance(app_config)
         prior_url = self.url()
         prior_app = self.app
+        prior_ticket_num = self.ticket_num
         attachments = self.attachments
         attach_metadata = BaseAttachment.metadata_for(self)
         prior_cfs = [
@@ -897,8 +898,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
+        # 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
@@ -939,6 +940,12 @@ class Ticket(VersionedArtifact, ActivityObject, VotableArtifact):
         ticket = Ticket.query.find(dict(
             app_config_id=app_config._id, ticket_num=self.ticket_num)).first()
 
+        # creating MovedTicket to be able to redirect from this url
+        moved_ticket = MovedTicket(
+            app_config_id=prior_app.config._id, ticket_num=prior_ticket_num,
+            moved_to_url=ticket.url(),
+        )
+
         message = 'Ticket moved from %s' % prior_url
         if messages:
             message += '\n\nCan\'t be converted:\n\n'
@@ -1081,4 +1088,8 @@ class TicketAttachment(BaseAttachment):
         polymorphic_identity='TicketAttachment'
     attachment_type=FieldProperty(str, if_missing='TicketAttachment')
 
+
+class MovedTicket(MovedArtifact):
+    ticket_num = FieldProperty(int, required=True, allow_none=False)
+
 Mapper.compile_all()

http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/7e40ba99/ForgeTracker/forgetracker/tracker_main.py
----------------------------------------------------------------------
diff --git a/ForgeTracker/forgetracker/tracker_main.py b/ForgeTracker/forgetracker/tracker_main.py
index 387bd2f..968d16e 100644
--- a/ForgeTracker/forgetracker/tracker_main.py
+++ b/ForgeTracker/forgetracker/tracker_main.py
@@ -1181,15 +1181,15 @@ class TicketController(BaseController, FeedController):
                     utils.permanent_redirect(self.ticket.url())
                 else:
                     # 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,
+                    moved_ticket = TM.MovedTicket.query.find({
+                        'app_config_id': c.app.config._id,
+                        'ticket_num': self.ticket_num,
                     }).first()
-                    if self.ticket is not None:
+                    if moved_ticket:
                         flash('Ticket #{} was moved to this app'.format(
-                            self.ticket.ticket_num
+                            moved_ticket.ticket_num
                         ))
-                        utils.permanent_redirect(self.ticket.url())
+                        utils.permanent_redirect(moved_ticket.moved_to_url)
             self.attachment = AttachmentsController(self.ticket)
             # self.comments = CommentController(self.ticket)