You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@allura.apache.org by je...@apache.org on 2015/07/14 17:02:50 UTC
[09/50] [abbrv] allura git commit: [#5943] ticket:815 Option to run
setup-app w/o creating test data
[#5943] ticket:815 Option to run setup-app w/o creating test data
Project: http://git-wip-us.apache.org/repos/asf/allura/repo
Commit: http://git-wip-us.apache.org/repos/asf/allura/commit/b6772643
Tree: http://git-wip-us.apache.org/repos/asf/allura/tree/b6772643
Diff: http://git-wip-us.apache.org/repos/asf/allura/diff/b6772643
Branch: refs/heads/ib/7897
Commit: b67726431b88dc1baaaaf3542f6ba5bdf0581e94
Parents: 48d7c56
Author: Igor Bondarenko <je...@gmail.com>
Authored: Thu Jul 9 15:02:33 2015 +0300
Committer: Dave Brondsema <db...@slashdotmedia.com>
Committed: Mon Jul 13 18:14:36 2015 +0000
----------------------------------------------------------------------
Allura/allura/websetup/bootstrap.py | 168 ++++++++++++++++++-------------
1 file changed, 98 insertions(+), 70 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/allura/blob/b6772643/Allura/allura/websetup/bootstrap.py
----------------------------------------------------------------------
diff --git a/Allura/allura/websetup/bootstrap.py b/Allura/allura/websetup/bootstrap.py
index ed76c15..37e250e 100644
--- a/Allura/allura/websetup/bootstrap.py
+++ b/Allura/allura/websetup/bootstrap.py
@@ -75,6 +75,8 @@ def bootstrap(command, conf, vars):
REGISTRY.register(ew.widget_context,
ew.core.WidgetContext('http', ew.ResourceManager()))
+ create_test_data = asbool(os.getenv('ALLURA_TEST_DATA', True))
+
# if this is a test_run, skip user project creation to save time
make_user_projects = not test_run
@@ -101,7 +103,7 @@ def bootstrap(command, conf, vars):
index = EnsureIndexCommand('ensure_index')
index.run([''])
- if asbool(conf.get('cache_test_data')):
+ if create_test_data and asbool(conf.get('cache_test_data')):
if restore_test_data():
h.set_context('test', neighborhood='Projects')
return
@@ -114,7 +116,25 @@ def bootstrap(command, conf, vars):
display_name='Anonymous')
# never make a user project for the root user
- root = create_user('Root', make_project=False)
+ if create_test_data:
+ root = create_user('Root', make_project=False)
+ else:
+ # TODO: ask user to provide username/password for root
+ root_name = raw_input('Enter username for root user (default "root"): ').strip()
+ if not root_name:
+ root_name = 'root'
+ ok = False
+ while not ok:
+ root_password1 = raw_input('Enter password: ').strip()
+ root_password2 = raw_input('Confirm password: ').strip()
+ if len(root_password1) == 0:
+ log.info('Please, provide password')
+ return
+ if root_password1 != root_password2:
+ log.info("Passwords don't match")
+ return
+ root = create_user(root_name, password=root_password1, make_project=False)
+ ok = True
n_projects = M.Neighborhood(name='Projects', url_prefix='/p/',
features=dict(private_projects=True,
@@ -128,18 +148,12 @@ def bootstrap(command, conf, vars):
max_projects=None,
css='none',
google_analytics=False))
- n_adobe = M.Neighborhood(
- name='Adobe', url_prefix='/adobe/', project_list_url='/adobe/',
- features=dict(private_projects=True,
- max_projects=None,
- css='custom',
- google_analytics=True))
+
assert tg.config['auth.method'] == 'local'
project_reg = plugin.ProjectRegistrationProvider.get()
p_projects = project_reg.register_neighborhood_project(
n_projects, [root], allow_register=True)
p_users = project_reg.register_neighborhood_project(n_users, [root])
- p_adobe = project_reg.register_neighborhood_project(n_adobe, [root])
def set_nbhd_wiki_content(nbhd_proj, content):
wiki = nbhd_proj.app_instance('wiki')
@@ -164,30 +178,37 @@ def bootstrap(command, conf, vars):
[[projects show_total=yes]]
'''))
- set_nbhd_wiki_content(p_adobe, dedent('''
- This is the "Adobe" neighborhood. It is just an example of having projects in a different neighborhood.
-
- [Neighborhood administration](/adobe/admin)
-
- [[projects show_total=yes]]
- '''))
+ if create_test_data:
+ n_adobe = M.Neighborhood(
+ name='Adobe', url_prefix='/adobe/', project_list_url='/adobe/',
+ features=dict(private_projects=True,
+ max_projects=None,
+ css='custom',
+ google_analytics=True))
+ p_adobe = project_reg.register_neighborhood_project(n_adobe, [root])
+ set_nbhd_wiki_content(p_adobe, dedent('''
+ This is the "Adobe" neighborhood. It is just an example of having projects in a different neighborhood.
+
+ [Neighborhood administration](/adobe/admin)
+
+ [[projects show_total=yes]]
+ '''))
+ # add the adobe icon
+ file_name = 'adobe_icon.png'
+ file_path = os.path.join(
+ allura.__path__[0], 'public', 'nf', 'images', file_name)
+ M.NeighborhoodFile.from_path(file_path, neighborhood_id=n_adobe._id)
ThreadLocalORMSession.flush_all()
ThreadLocalORMSession.close_all()
- # add the adobe icon
- file_name = 'adobe_icon.png'
- file_path = os.path.join(
- allura.__path__[0], 'public', 'nf', 'images', file_name)
- M.NeighborhoodFile.from_path(file_path, neighborhood_id=n_adobe._id)
-
- # Add some test users
- for unum in range(10):
- make_user('Test User %d' % unum)
+ if create_test_data:
+ # Add some test users
+ for unum in range(10):
+ make_user('Test User %d' % unum)
log.info('Creating basic project categories')
cat1 = M.ProjectCategory(name='clustering', label='Clustering')
-
cat2 = M.ProjectCategory(name='communications', label='Communications')
cat2_1 = M.ProjectCategory(
name='synchronization', label='Synchronization', parent_id=cat2._id)
@@ -202,36 +223,40 @@ def bootstrap(command, conf, vars):
cat3_2 = M.ProjectCategory(
name='engines_servers', label='Engines/Servers', parent_id=cat3._id)
- log.info('Registering "regular users" (non-root) and default projects')
- # since this runs a lot for tests, separate test and default users and
- # do the minimal needed
- if asbool(conf.get('load_test_data')):
- u_admin = make_user('Test Admin')
- u_admin.preferences = dict(email_address='test-admin@users.localhost')
- u_admin.email_addresses = ['test-admin@users.localhost']
- u_admin.set_password('foo')
- u_admin.claim_address('test-admin@users.localhost')
- ThreadLocalORMSession.flush_all()
-
- admin_email = M.EmailAddress.get(email='test-admin@users.localhost')
- admin_email.confirmed = True
- else:
- u_admin = make_user('Admin 1', username='admin1')
- # Admin1 is almost root, with admin access for Users and Projects
- # neighborhoods
- p_projects.add_user(u_admin, ['Admin'])
- p_users.add_user(u_admin, ['Admin'])
-
- p_allura = n_projects.register_project('allura', u_admin, 'Allura')
- u1 = make_user('Test User')
- p_adobe1 = n_adobe.register_project('adobe-1', u_admin, 'Adobe project 1')
- p_adobe.add_user(u_admin, ['Admin'])
- p0 = n_projects.register_project('test', u_admin, 'Test Project')
- p1 = n_projects.register_project('test2', u_admin, 'Test 2')
- p0._extra_tool_status = ['alpha', 'beta']
+ if create_test_data:
+ log.info('Registering "regular users" (non-root) and default projects')
+ # since this runs a lot for tests, separate test and default users and
+ # do the minimal needed
+ if asbool(conf.get('load_test_data')):
+ u_admin = make_user('Test Admin')
+ u_admin.preferences = dict(email_address='test-admin@users.localhost')
+ u_admin.email_addresses = ['test-admin@users.localhost']
+ u_admin.set_password('foo')
+ u_admin.claim_address('test-admin@users.localhost')
+ ThreadLocalORMSession.flush_all()
+
+ admin_email = M.EmailAddress.get(email='test-admin@users.localhost')
+ admin_email.confirmed = True
+ else:
+ u_admin = make_user('Admin 1', username='admin1')
+ # Admin1 is almost root, with admin access for Users and Projects
+ # neighborhoods
+ p_projects.add_user(u_admin, ['Admin'])
+ p_users.add_user(u_admin, ['Admin'])
+
+ p_allura = n_projects.register_project('allura', u_admin, 'Allura')
+ u1 = make_user('Test User')
+ p_adobe1 = n_adobe.register_project('adobe-1', u_admin, 'Adobe project 1')
+ p_adobe.add_user(u_admin, ['Admin'])
+ p0 = n_projects.register_project('test', u_admin, 'Test Project')
+ p1 = n_projects.register_project('test2', u_admin, 'Test 2')
+ p0._extra_tool_status = ['alpha', 'beta']
sess = session(M.Neighborhood) # all the sessions are the same
- for x in (n_adobe, n_projects, n_users, p_projects, p_users, p_adobe):
+ _list = (n_projects, n_users, p_projects, p_users)
+ if create_test_data:
+ _list += (n_adobe, p_adobe)
+ for x in _list:
# Ming doesn't detect substructural changes in newly created objects
# (vs loaded from DB)
state(x).status = 'dirty'
@@ -249,24 +274,27 @@ def bootstrap(command, conf, vars):
create_trove_categories = CreateTroveCategoriesCommand('create_trove_categories')
create_trove_categories.run([''])
- p0.add_user(u_admin, ['Admin'])
- log.info('Registering initial apps')
- with h.push_config(c, user=u_admin):
- p0.install_apps([{'ep_name': ep_name}
- for ep_name, app in g.entry_points['tool'].iteritems()
- if app._installable(tool_name=ep_name,
- nbhd=n_projects,
- project_tools=[])
- ])
-
- # reload our p0 project so that p0.app_configs is accurate with all the
- # newly installed apps
+ if create_test_data:
+ p0.add_user(u_admin, ['Admin'])
+ log.info('Registering initial apps')
+ with h.push_config(c, user=u_admin):
+ p0.install_apps([{'ep_name': ep_name}
+ for ep_name, app in g.entry_points['tool'].iteritems()
+ if app._installable(tool_name=ep_name,
+ nbhd=n_projects,
+ project_tools=[])
+ ])
+
ThreadLocalORMSession.flush_all()
ThreadLocalORMSession.close_all()
- p0 = M.Project.query.get(_id=p0._id)
- sub = p0.new_subproject('sub1', project_name='A Subproject')
- with h.push_config(c, user=u_admin):
- sub.install_app('wiki')
+
+ if create_test_data:
+ # reload our p0 project so that p0.app_configs is accurate with all the
+ # newly installed apps
+ p0 = M.Project.query.get(_id=p0._id)
+ sub = p0.new_subproject('sub1', project_name='A Subproject')
+ with h.push_config(c, user=u_admin):
+ sub.install_app('wiki')
ThreadLocalORMSession.flush_all()
ThreadLocalORMSession.close_all()