Switch to side-by-side view

--- a/scripts/migrations/024-migrate-custom-profile-text.py
+++ b/scripts/migrations/024-migrate-custom-profile-text.py
@@ -6,6 +6,7 @@
 from ming.orm import ThreadLocalORMSession
 
 from allura import model as M
+from allura.lib import utils
 from forgewiki import model as WM
 from forgewiki.wiki_main import ForgeWikiApp
 
@@ -19,38 +20,40 @@
             " project such as cloned repositories.\n\n%s")
 
 def main():
-    for p in M.Project.query.find().all():
-        user = p.user_project_of
-        if not user:
-            continue
+    users = M.Neighborhood.query.get(name='Users')
+    for chunk in utils.chunked_find(M.Project, {'neighborhood_id': users._id}):
+        for p in chunk:
+            user = p.user_project_of
+            if not user:
+                continue
 
-        description = p.description
-        if description is None or re.match(default_description, description):
-            continue
+            description = p.description
+            if description is None or re.match(default_description, description):
+                continue
 
-        app = p.app_instance('wiki')
-        if app is None:
-            p.install_app('wiki')
+            app = p.app_instance('wiki')
+            if app is None:
+                p.install_app('wiki')
 
-        page = WM.Page.query.get(app_config_id=app.config._id, title='Home')
-        if page is None:
-            continue
+            page = WM.Page.query.get(app_config_id=app.config._id, title='Home')
+            if page is None:
+                continue
 
-        c.app = app
-        c.project = p
-        c.user = user
+            c.app = app
+            c.project = p
+            c.user = user
 
-        if "This is the personal project of" in page.text:
-            if description not in page.text:
-                page.text = "%s\n\n%s" % (page.text, description)
+            if "This is the personal project of" in page.text:
+                if description not in page.text:
+                    page.text = "%s\n\n%s" % (page.text, description)
+                    log.info("Update wiki home page text for %s" % user.username)
+            elif "This is the default page" in page.text:
+                page.text = default_personal_project_tmpl % (user.display_name, description)
                 log.info("Update wiki home page text for %s" % user.username)
-        elif "This is the default page" in page.text:
-            page.text = default_personal_project_tmpl % (user.display_name, description)
-            log.info("Update wiki home page text for %s" % user.username)
-        else:
-            pass
+            else:
+                pass
 
-    ThreadLocalORMSession.flush_all()
+        ThreadLocalORMSession.flush_all()
 
 if __name__ == '__main__':
     main()