• R/O
  • HTTP
  • SSH
  • HTTPS

コミット

タグ
未設定

よく使われているワード(クリックで追加)

javac++androidlinuxc#windowsobjective-ccocoa誰得qtpythonphprubygameguibathyscaphec計画中(planning stage)翻訳omegatframeworktwitterdomtestvb.netdirectxゲームエンジンbtronarduinopreviewer

allura


コミットメタ情報

リビジョン1c05dfadcc8744a02c9f05d8db8e4ff2a5d951ff (tree)
日時2012-05-17 05:24:10
作者Cory Johns <johnsca@geek...>
コミッターDave Brondsema

ログメッセージ

[#4118] Added chunking, intermediate flushing, and filtering to user projects

Signed-off-by: Cory Johns <johnsca@geek.net>

変更サマリ

差分

--- a/scripts/migrations/024-migrate-custom-profile-text.py
+++ b/scripts/migrations/024-migrate-custom-profile-text.py
@@ -6,6 +6,7 @@ from pylons import c
66 from ming.orm import ThreadLocalORMSession
77
88 from allura import model as M
9+from allura.lib import utils
910 from forgewiki import model as WM
1011 from forgewiki.wiki_main import ForgeWikiApp
1112
@@ -19,38 +20,40 @@ default_personal_project_tmpl = ("This is the personal project of %s."
1920 " project such as cloned repositories.\n\n%s")
2021
2122 def main():
22- for p in M.Project.query.find().all():
23- user = p.user_project_of
24- if not user:
25- continue
26-
27- description = p.description
28- if description is None or re.match(default_description, description):
29- continue
30-
31- app = p.app_instance('wiki')
32- if app is None:
33- p.install_app('wiki')
34-
35- page = WM.Page.query.get(app_config_id=app.config._id, title='Home')
36- if page is None:
37- continue
38-
39- c.app = app
40- c.project = p
41- c.user = user
42-
43- if "This is the personal project of" in page.text:
44- if description not in page.text:
45- page.text = "%s\n\n%s" % (page.text, description)
23+ users = M.Neighborhood.query.get(name='Users')
24+ for chunk in utils.chunked_find(M.Project, {'neighborhood_id': users._id}):
25+ for p in chunk:
26+ user = p.user_project_of
27+ if not user:
28+ continue
29+
30+ description = p.description
31+ if description is None or re.match(default_description, description):
32+ continue
33+
34+ app = p.app_instance('wiki')
35+ if app is None:
36+ p.install_app('wiki')
37+
38+ page = WM.Page.query.get(app_config_id=app.config._id, title='Home')
39+ if page is None:
40+ continue
41+
42+ c.app = app
43+ c.project = p
44+ c.user = user
45+
46+ if "This is the personal project of" in page.text:
47+ if description not in page.text:
48+ page.text = "%s\n\n%s" % (page.text, description)
49+ log.info("Update wiki home page text for %s" % user.username)
50+ elif "This is the default page" in page.text:
51+ page.text = default_personal_project_tmpl % (user.display_name, description)
4652 log.info("Update wiki home page text for %s" % user.username)
47- elif "This is the default page" in page.text:
48- page.text = default_personal_project_tmpl % (user.display_name, description)
49- log.info("Update wiki home page text for %s" % user.username)
50- else:
51- pass
53+ else:
54+ pass
5255
53- ThreadLocalORMSession.flush_all()
56+ ThreadLocalORMSession.flush_all()
5457
5558 if __name__ == '__main__':
5659 main()