Switch to side-by-side view

--- a
+++ b/scripts/migrations/023-migrate-custom-profile-text.py
@@ -0,0 +1,59 @@
+import logging
+
+from pylons import c
+
+from ming.orm import ThreadLocalORMSession
+
+from allura import model as M
+from forgewiki import model as WM
+from forgewiki.wiki_main import ForgeWikiApp
+
+log = logging.getLogger(__name__)
+
+default_description = u'You can edit this description in the admin page'
+
+default_personal_project_tmpl = ("This is the personal project of %s."
+            " This project is created automatically during user registration"
+            " as an easy place to store personal data that doesn't need its own"
+            " project such as cloned repositories.\n%s")
+
+def main():
+    for p in M.Project.query.find().all():
+        user = p.private_project_of()
+        if not user:
+            continue
+
+        app = p.app_instance('wiki')
+        if app is None:
+            p.install_app('wiki')
+
+        c.app = app
+        c.project = p
+        c.user = user
+
+        page = WM.Page.query.get(app_config_id=c.app.config._id, title='Home')
+        if page is None:
+            c.app.install(p)
+            page = WM.Page.query.get(app_config_id=c.app.config._id, title='Home')
+            if page is None:
+                log.info("Can't add page for %s home project" % user.username)
+                continue
+
+        description = p.description
+        if description is None or description == "":
+            description = default_description
+
+        if "This is the personal project of" in page.text:
+            if description not in page.text:
+                page.text = "%s\n%s" % (page.text, description)
+        elif "This is the default page" in page.text:
+            page.text = default_personal_project_tmpl % (user.username, description)
+        else:
+            pass
+
+        log.info("Update wiki home page text for %s" % user.username)
+
+    ThreadLocalORMSession.flush_all()
+
+if __name__ == '__main__':
+    main()