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 2018/03/22 18:21:50 UTC

[1/3] allura git commit: [#8149] Adds functionality for bulk delete

Repository: allura
Updated Branches:
  refs/heads/master 2c3a9e8e9 -> 78fefa845


[#8149] Adds functionality for bulk delete


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

Branch: refs/heads/master
Commit: a2b59327ba71da755b8f9ace39fa53366f7b13f0
Parents: 2c3a9e8
Author: deshigtk <de...@gmail.com>
Authored: Tue Mar 20 10:55:34 2018 +0530
Committer: deshigtk <de...@gmail.com>
Committed: Tue Mar 20 10:55:34 2018 +0530

----------------------------------------------------------------------
 ForgeTracker/forgetracker/model/ticket.py             | 14 +++++++++++++-
 .../templates/tracker_widgets/mass_edit_form.html     |  8 ++++++++
 2 files changed, 21 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/allura/blob/a2b59327/ForgeTracker/forgetracker/model/ticket.py
----------------------------------------------------------------------
diff --git a/ForgeTracker/forgetracker/model/ticket.py b/ForgeTracker/forgetracker/model/ticket.py
index a3ec9dc..467afca 100644
--- a/ForgeTracker/forgetracker/model/ticket.py
+++ b/ForgeTracker/forgetracker/model/ticket.py
@@ -362,6 +362,10 @@ class Globals(MappedClass):
         if private:
             values['private'] = asbool(private)
 
+        deleted = post_data.get('deleted')
+        if deleted:
+            values['deleted'] = asbool(deleted)
+
         discussion_disabled = post_data.get('discussion_disabled')
         if discussion_disabled:
             values['disabled_discussion'] = asbool(discussion_disabled)
@@ -382,7 +386,15 @@ class Globals(MappedClass):
                 values['labels'] = self.append_new_labels(
                     ticket.labels, labels.split(','))
             for k, v in sorted(values.iteritems()):
-                if k == 'assigned_to_id':
+                if k == 'deleted':
+                    if v:
+                        ticket.deleted = True
+                        suffix = " {dt.hour}:{dt.minute}:{dt.second} {dt.day}-{dt.month}-{dt.year}".format(
+                            dt=datetime.utcnow())
+                        ticket.summary += suffix
+                        c.app.globals.invalidate_bin_counts()
+                        break
+                elif k == 'assigned_to_id':
                     new_user = User.query.get(_id=v)
                     old_user = User.query.get(_id=getattr(ticket, k))
                     if new_user:

http://git-wip-us.apache.org/repos/asf/allura/blob/a2b59327/ForgeTracker/forgetracker/templates/tracker_widgets/mass_edit_form.html
----------------------------------------------------------------------
diff --git a/ForgeTracker/forgetracker/templates/tracker_widgets/mass_edit_form.html b/ForgeTracker/forgetracker/templates/tracker_widgets/mass_edit_form.html
index c35278c..5169683 100644
--- a/ForgeTracker/forgetracker/templates/tracker_widgets/mass_edit_form.html
+++ b/ForgeTracker/forgetracker/templates/tracker_widgets/mass_edit_form.html
@@ -51,6 +51,14 @@
       </select>
     </div>
     <div class="grid-6">
+      <label for="deleted" class="cr">Delete:</label>
+      <select name="deleted" id="deleted">
+        <option value="" selected="selected">Don't change</option>
+        <option value="True">True</option>
+        <option value="False">False</option>
+      </select>
+    </div>
+    <div class="grid-6">
       <label for="assigned_to" class="cr">Owner:</label>
       {{c.user_select.display(name='assigned_to', id='assigned_to', value='', className='wide')}}
     </div>


[2/3] allura git commit: [#8149] Refractors bulk delete method and adds test coverage for bulk delete functionality

Posted by br...@apache.org.
[#8149] Refractors bulk delete method and adds test coverage for bulk delete functionality


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

Branch: refs/heads/master
Commit: 8e568e71a4908e323d25f0055903670b7f7b34fe
Parents: a2b5932
Author: deshigtk <de...@gmail.com>
Authored: Wed Mar 21 22:06:15 2018 +0530
Committer: deshigtk <de...@gmail.com>
Committed: Wed Mar 21 22:06:15 2018 +0530

----------------------------------------------------------------------
 ForgeTracker/forgetracker/model/ticket.py       | 19 +++++++++++-----
 .../tracker_widgets/mass_edit_form.html         |  1 -
 .../forgetracker/tests/functional/test_root.py  | 23 ++++++++++++++++++++
 ForgeTracker/forgetracker/tracker_main.py       |  9 +-------
 4 files changed, 37 insertions(+), 15 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/allura/blob/8e568e71/ForgeTracker/forgetracker/model/ticket.py
----------------------------------------------------------------------
diff --git a/ForgeTracker/forgetracker/model/ticket.py b/ForgeTracker/forgetracker/model/ticket.py
index 467afca..084eb8d 100644
--- a/ForgeTracker/forgetracker/model/ticket.py
+++ b/ForgeTracker/forgetracker/model/ticket.py
@@ -37,7 +37,7 @@ from ming.orm import FieldProperty, ForeignIdProperty, RelationProperty
 from ming.orm.declarative import MappedClass
 from ming.orm.ormsession import ThreadLocalORMSession
 
-from tg import config as tg_config
+from tg import config as tg_config, flash
 
 from allura.model import (
     ACE,
@@ -60,6 +60,7 @@ from allura.model import (
     artifact_orm_session,
     project_orm_session,
     AlluraUserProperty,
+    Shortlink
 )
 from allura.model.timeline import ActivityObject
 from allura.model.notification import MailFooter
@@ -70,6 +71,7 @@ from allura.lib.search import search_artifact, SearchError
 from allura.lib import utils
 from allura.lib import helpers as h
 from allura.lib.plugin import ImportIdConverter
+from allura.lib.security import require_access
 from allura.tasks import mail_tasks
 from forgetracker import search as tsearch
 
@@ -388,11 +390,7 @@ class Globals(MappedClass):
             for k, v in sorted(values.iteritems()):
                 if k == 'deleted':
                     if v:
-                        ticket.deleted = True
-                        suffix = " {dt.hour}:{dt.minute}:{dt.second} {dt.day}-{dt.month}-{dt.year}".format(
-                            dt=datetime.utcnow())
-                        ticket.summary += suffix
-                        c.app.globals.invalidate_bin_counts()
+                        ticket.soft_delete()
                         break
                 elif k == 'assigned_to_id':
                     new_user = User.query.get(_id=v)
@@ -1311,6 +1309,15 @@ class Ticket(VersionedArtifact, ActivityObject, VotableArtifact):
             self.app.config.options.get('AllowEmailPosting', True),
             discussion_disabled=self.discussion_disabled)
 
+    def soft_delete(self):
+        require_access(self, 'delete')
+        Shortlink.query.remove(dict(ref_id=self.index_id()))
+        self.deleted = True
+        suffix = " {dt.hour}:{dt.minute}:{dt.second} {dt.day}-{dt.month}-{dt.year}".format(
+            dt=datetime.utcnow())
+        self.summary += suffix
+        flash('Ticket successfully deleted')
+        c.app.globals.invalidate_bin_counts()
 
 
 class TicketAttachment(BaseAttachment):

http://git-wip-us.apache.org/repos/asf/allura/blob/8e568e71/ForgeTracker/forgetracker/templates/tracker_widgets/mass_edit_form.html
----------------------------------------------------------------------
diff --git a/ForgeTracker/forgetracker/templates/tracker_widgets/mass_edit_form.html b/ForgeTracker/forgetracker/templates/tracker_widgets/mass_edit_form.html
index 5169683..2a929f0 100644
--- a/ForgeTracker/forgetracker/templates/tracker_widgets/mass_edit_form.html
+++ b/ForgeTracker/forgetracker/templates/tracker_widgets/mass_edit_form.html
@@ -55,7 +55,6 @@
       <select name="deleted" id="deleted">
         <option value="" selected="selected">Don't change</option>
         <option value="True">True</option>
-        <option value="False">False</option>
       </select>
     </div>
     <div class="grid-6">

http://git-wip-us.apache.org/repos/asf/allura/blob/8e568e71/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 cb15819..5f0fb1c 100644
--- a/ForgeTracker/forgetracker/tests/functional/test_root.py
+++ b/ForgeTracker/forgetracker/tests/functional/test_root.py
@@ -2458,6 +2458,29 @@ class TestFunctionalController(TrackerTestController):
         M.User.query.remove({'username': c.user.username})
         self.app.get('/p/test/bugs/1/', status=200)
 
+    def test_bulk_delete(self):
+        self.new_ticket(summary='test first ticket')
+        self.new_ticket(summary='test second ticket')
+        ThreadLocalORMSession.flush_all()
+        M.MonQTask.run_ready()
+        ThreadLocalORMSession.flush_all()
+        first_ticket = tm.Ticket.query.get(summary='test first ticket')
+        second_ticket = tm.Ticket.query.get(summary='test second ticket')
+
+        M.MonQTask.query.remove()
+        self.app.post('/p/test/bugs/update_tickets', {
+            '__search': '',
+            '__ticket_ids': (
+                first_ticket._id,
+                second_ticket._id),
+            'deleted': True})
+        M.MonQTask.run_ready()
+
+        r = self.app.get('/bugs/')
+        assert 'No open tickets found.' in r
+        assert tm.Ticket.query.get(ticket_num=1).summary != 'test first ticket'
+        assert tm.Ticket.query.get(ticket_num=2).summary != 'test second ticket'
+
 
 class TestMilestoneAdmin(TrackerTestController):
     def _post(self, params, **kw):

http://git-wip-us.apache.org/repos/asf/allura/blob/8e568e71/ForgeTracker/forgetracker/tracker_main.py
----------------------------------------------------------------------
diff --git a/ForgeTracker/forgetracker/tracker_main.py b/ForgeTracker/forgetracker/tracker_main.py
index 8c8e626..ca45f4c 100644
--- a/ForgeTracker/forgetracker/tracker_main.py
+++ b/ForgeTracker/forgetracker/tracker_main.py
@@ -1445,14 +1445,7 @@ class TicketController(BaseController, FeedController):
     @expose('json:')
     @require_post()
     def delete(self, **kw):
-        require_access(self.ticket, 'delete')
-        M.Shortlink.query.remove(dict(ref_id=self.ticket.index_id()))
-        self.ticket.deleted = True
-        suffix = " {dt.hour}:{dt.minute}:{dt.second} {dt.day}-{dt.month}-{dt.year}".format(
-            dt=datetime.utcnow())
-        self.ticket.summary += suffix
-        flash('Ticket successfully deleted')
-        c.app.globals.invalidate_bin_counts()
+        self.ticket.soft_delete()
         return dict(location='../' + str(self.ticket.ticket_num))
 
     @without_trailing_slash


[3/3] allura git commit: [#8149] Moves flash() call from 'soft_delete' model method to 'delete' controller method

Posted by br...@apache.org.
[#8149] Moves flash() call from 'soft_delete' model method to 'delete' controller method


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

Branch: refs/heads/master
Commit: 78fefa8450c949939af263414c29b2567de8a273
Parents: 8e568e7
Author: deshigtk <de...@gmail.com>
Authored: Thu Mar 22 22:56:58 2018 +0530
Committer: deshigtk <de...@gmail.com>
Committed: Thu Mar 22 22:56:58 2018 +0530

----------------------------------------------------------------------
 ForgeTracker/forgetracker/model/ticket.py | 3 +--
 ForgeTracker/forgetracker/tracker_main.py | 1 +
 2 files changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/allura/blob/78fefa84/ForgeTracker/forgetracker/model/ticket.py
----------------------------------------------------------------------
diff --git a/ForgeTracker/forgetracker/model/ticket.py b/ForgeTracker/forgetracker/model/ticket.py
index 084eb8d..5a26071 100644
--- a/ForgeTracker/forgetracker/model/ticket.py
+++ b/ForgeTracker/forgetracker/model/ticket.py
@@ -37,7 +37,7 @@ from ming.orm import FieldProperty, ForeignIdProperty, RelationProperty
 from ming.orm.declarative import MappedClass
 from ming.orm.ormsession import ThreadLocalORMSession
 
-from tg import config as tg_config, flash
+from tg import config as tg_config
 
 from allura.model import (
     ACE,
@@ -1316,7 +1316,6 @@ class Ticket(VersionedArtifact, ActivityObject, VotableArtifact):
         suffix = " {dt.hour}:{dt.minute}:{dt.second} {dt.day}-{dt.month}-{dt.year}".format(
             dt=datetime.utcnow())
         self.summary += suffix
-        flash('Ticket successfully deleted')
         c.app.globals.invalidate_bin_counts()
 
 

http://git-wip-us.apache.org/repos/asf/allura/blob/78fefa84/ForgeTracker/forgetracker/tracker_main.py
----------------------------------------------------------------------
diff --git a/ForgeTracker/forgetracker/tracker_main.py b/ForgeTracker/forgetracker/tracker_main.py
index ca45f4c..d08254d 100644
--- a/ForgeTracker/forgetracker/tracker_main.py
+++ b/ForgeTracker/forgetracker/tracker_main.py
@@ -1446,6 +1446,7 @@ class TicketController(BaseController, FeedController):
     @require_post()
     def delete(self, **kw):
         self.ticket.soft_delete()
+        flash('Ticket successfully deleted')
         return dict(location='../' + str(self.ticket.ticket_num))
 
     @without_trailing_slash