[#4202] Clean up copy-pasted chunked_project_iterator usage.

Signed-off-by: Tim Van Steenburgh <tvansteenburgh@geek.net>
diff --git a/scripts/migrations/010-fix-home-permissions.py b/scripts/migrations/010-fix-home-permissions.py
index 05212da..f66e76a 100644
--- a/scripts/migrations/010-fix-home-permissions.py
+++ b/scripts/migrations/010-fix-home-permissions.py
@@ -7,6 +7,7 @@
 from bson import ObjectId
 
 from allura import model as M
+from allura.lib import utils
 from forgewiki.wiki_main import ForgeWikiApp
 
 log = logging.getLogger('fix-home-permissions')
@@ -22,8 +23,9 @@
     else:
         log.info('Fixing permissions for all Home Wikis')
 
-    for some_projects in chunked_project_iterator({'neighborhood_id': {'$nin': [ObjectId('4be2faf8898e33156f00003e'),       # /u
-                                                                                ObjectId('4dbf2563bfc09e6362000005')]}}):   # /motorola
+    for some_projects in utils.chunked_find(M.Project, {'neighborhood_id': {
+                '$nin': [ObjectId('4be2faf8898e33156f00003e'),      # /u
+                         ObjectId('4dbf2563bfc09e6362000005')]}}):  # /motorola
         for project in some_projects:
             c.project = project
             home_app = project.app_instance('home')
@@ -56,21 +58,6 @@
                     home_app.config.acl = map(dict, new_acl.values())
                     session(home_app.config).flush()
 
-PAGESIZE=1024
-
-def chunked_project_iterator(q_project):
-    '''shamelessly copied from refresh-all-repos.py'''
-    page = 0
-    while True:
-        results = (M.Project.query
-                   .find(q_project)
-                   .skip(PAGESIZE*page)
-                   .limit(PAGESIZE)
-                   .all())
-        if not results: break
-        yield results
-        page += 1
-
 def project_role(project, name):
     role = M.ProjectRole.query.get(project_id=project._id, name=name)
     if role is None:
diff --git a/scripts/migrations/011-fix-subroles.py b/scripts/migrations/011-fix-subroles.py
index c982a87..2d1e007 100644
--- a/scripts/migrations/011-fix-subroles.py
+++ b/scripts/migrations/011-fix-subroles.py
@@ -12,11 +12,11 @@
 import sys
 import logging
 
-from pylons import c
 from ming.orm import session
 from ming.orm.ormsession import ThreadLocalORMSession
 
 from allura import model as M
+from allura.lib import utils
 
 log = logging.getLogger('fix-subroles')
 log.addHandler(logging.StreamHandler(sys.stdout))
@@ -27,7 +27,7 @@
     log.info('Examining subroles in all non-user projects.')
     n_users = M.Neighborhood.query.get(name='Users')
     project_filter = dict(neighborhood_id={'$ne':n_users._id})
-    for some_projects in chunked_project_iterator(project_filter):
+    for some_projects in utils.chunked_find(M.Project, project_filter):
         for project in some_projects:
             project_name = '%s.%s' % (project.neighborhood.name, project.shortname)
             project_roles = {}
@@ -53,7 +53,7 @@
             for user in project.users():
                 pr = user.project_role(project=project)
                 if not pr.roles: continue
-                for parent, children in [('Admin', ('Developer', 'Member')), 
+                for parent, children in [('Admin', ('Developer', 'Member')),
                                          ('Developer', ('Member',))]:
                     if project_roles[parent]._id not in pr.roles: continue
                     for role_name in children:
@@ -73,21 +73,5 @@
 
         log.info('%s projects examined.' % num_projects_examined)
 
-
-PAGESIZE=1024
-
-def chunked_project_iterator(q_project):
-    '''shamelessly copied from refresh-all-repos.py'''
-    page = 0
-    while True:
-        results = (M.Project.query
-                   .find(q_project)
-                   .skip(PAGESIZE*page)
-                   .limit(PAGESIZE)
-                   .all())
-        if not results: break
-        yield results
-        page += 1
-
 if __name__ == '__main__':
     main()
diff --git a/scripts/migrations/012-uninstall-home.py b/scripts/migrations/012-uninstall-home.py
index 7f1f9f5..a8b66f5 100644
--- a/scripts/migrations/012-uninstall-home.py
+++ b/scripts/migrations/012-uninstall-home.py
@@ -7,6 +7,7 @@
 from mock import Mock, patch
 
 from allura.lib import helpers as h
+from allura.lib import utils
 from allura import model as M
 from forgewiki import model as WM
 from allura.ext.project_home import ProjectHomeApp
@@ -21,7 +22,8 @@
     possibly_orphaned_projects = 0
     solr_delete = Mock()
     notification_post = Mock()
-    for some_projects in chunked_project_iterator({'neighborhood_id': {'$ne': ObjectId("4be2faf8898e33156f00003e")}}):
+    for some_projects in utils.chunked_find(M.Project, {'neighborhood_id': {
+            '$ne': ObjectId("4be2faf8898e33156f00003e")}}):
         for project in some_projects:
             c.project = project
             old_home_app = project.app_instance('home')
@@ -102,20 +104,5 @@
         assert solr_delete.call_count == affected_projects, solr_delete.call_count
         assert notification_post.call_count == 2 * affected_projects, notification_post.call_count
 
-PAGESIZE=1024
-
-def chunked_project_iterator(q_project):
-    '''shamelessly copied from refresh-all-repos.py'''
-    page = 0
-    while True:
-        results = (M.Project.query
-                   .find(q_project)
-                   .skip(PAGESIZE*page)
-                   .limit(PAGESIZE)
-                   .all())
-        if not results: break
-        yield results
-        page += 1
-
 if __name__ == '__main__':
     main()
diff --git a/scripts/migrations/013-update-ordinals.py b/scripts/migrations/013-update-ordinals.py
index 9d8b13d..ef81d32 100644
--- a/scripts/migrations/013-update-ordinals.py
+++ b/scripts/migrations/013-update-ordinals.py
@@ -6,6 +6,7 @@
 from ming.orm.ormsession import ThreadLocalORMSession
 
 from allura import model as M
+from allura.lib import utils
 
 log = logging.getLogger('update-ordinals')
 log.addHandler(logging.StreamHandler(sys.stdout))
@@ -14,7 +15,7 @@
     test = sys.argv[-1] == 'test'
     num_projects_examined = 0
     log.info('Examining all projects for mount order.')
-    for some_projects in chunked_project_iterator({}):
+    for some_projects in utils.chunked_find(M.Project):
         for project in some_projects:
             c.project = project
             mounts = project.ordered_mounts(include_search=True)
@@ -47,21 +48,5 @@
         ThreadLocalORMSession.flush_all()
         ThreadLocalORMSession.close_all()
 
-
-PAGESIZE=1024
-
-def chunked_project_iterator(q_project):
-    '''shamelessly copied from refresh-all-repos.py'''
-    page = 0
-    while True:
-        results = (M.Project.query
-                   .find(q_project)
-                   .skip(PAGESIZE*page)
-                   .limit(PAGESIZE)
-                   .all())
-        if not results: break
-        yield results
-        page += 1
-
 if __name__ == '__main__':
     main()
diff --git a/scripts/refresh-all-repos.py b/scripts/refresh-all-repos.py
index c62d0f3..99cb4d1 100644
--- a/scripts/refresh-all-repos.py
+++ b/scripts/refresh-all-repos.py
@@ -1,11 +1,11 @@
 import logging
 import optparse
-from collections import defaultdict
 
 from pylons import c
 from ming.orm import ThreadLocalORMSession
 
 from allura import model as M
+from allura.lib import utils
 
 log = logging.getLogger(__name__)
 
@@ -45,7 +45,7 @@
         M.repo.DiffInfoDoc.m.remove({})
         M.repo.LastCommitDoc.m.remove({})
         M.repo.CommitRunDoc.m.remove({})
-    for chunk in chunked_project_iterator(q_project):
+    for chunk in utils.chunked_find(M.Project, q_project):
         for p in chunk:
             c.project = p
             if projects:
@@ -73,18 +73,5 @@
         ThreadLocalORMSession.flush_all()
         ThreadLocalORMSession.close_all()
 
-def chunked_project_iterator(q_project):
-    page = 0
-    while True:
-        results = (M.Project.query
-                   .find(q_project)
-                   .skip(PAGESIZE*page)
-                   .limit(PAGESIZE)
-                   .all())
-        if not results: break
-        yield results
-        page += 1
-
-
 if __name__ == '__main__':
     main()