Switch to side-by-side view

--- a/Allura/allura/websetup/bootstrap.py
+++ b/Allura/allura/websetup/bootstrap.py
@@ -57,6 +57,7 @@
     tg.config['auth.method'] = tg.config['registration.method'] = 'local'
     assert tg.config['auth.method'] == 'local'
     conf['auth.method'] = conf['registration.method'] = 'local'
+
     # Clean up all old stuff
     ThreadLocalORMSession.close_all()
     c.queued_messages = defaultdict(list)
@@ -74,7 +75,7 @@
             return
     log.info('Initializing search')
 
-    log.info('Registering initial users & neighborhoods')
+    log.info('Registering root user & default neighborhoods')
     anonymous = M.User(_id=None,
                        username='*anonymous',
                        display_name='Anonymous Coward')
@@ -105,21 +106,49 @@
     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)
-    log.info('Registering "regular users" (non-root)')
-    u_adobe = M.User.register(dict(username='adobe-admin',
+
+
+    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)
+    cat2_2 = M.ProjectCategory(name='streaming', label='Streaming', parent_id=cat2._id)
+    cat2_3 = M.ProjectCategory(name='fax', label='Fax', parent_id=cat2._id)
+    cat2_4 = M.ProjectCategory(name='bbs', label='BBS', parent_id=cat2._id)
+
+    cat3 = M.ProjectCategory(name='database', label='Database')
+    cat3_1 = M.ProjectCategory(name='front_ends', label='Front-Ends', parent_id=cat3._id)
+    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 = M.User.register(dict(username='test-admin',
+                                  display_name='Test Admin'))
+        u_admin.set_password('foo')
+        u_admin.claim_address('Beta@wiki.test.projects.sourceforge.net')
+        u_admin_adobe = u_admin
+    else:
+        u_admin = M.User.register(dict(username='admin1',
+                                        display_name='Admin 1'))
+        u_admin.set_password('foo')
+        u_admin_adobe = M.User.register(dict(username='adobe-admin',
                                    display_name='Adobe Admin'))
-    u0 = M.User.register(dict(username='test-admin',
-                              display_name='Test Admin'))
+        u_admin_adobe.set_password('foo')
+        # Admin1 is almost root, with admin access for Users and Projects neighborhoods
+        n_projects.acl['admin'].append(u_admin._id)
+        n_users.acl['admin'].append(u_admin._id)
+
+        p_allura = n_projects.register_project('allura', u_admin)
     u1 = M.User.register(dict(username='test-user',
                               display_name='Test User'))
-    u2 = M.User.register(dict(username='test-user2',
-                              display_name='Test User 2'))
-    u_admin1 = M.User.register(dict(username='admin1',
-                                    display_name='Admin 1'))
-    n_adobe.acl['admin'].append(u_adobe._id)
-    # Admin1 is almost root, with admin access for Users and Projects neighborhoods
-    n_projects.acl['admin'].append(u_admin1._id)
-    n_users.acl['admin'].append(u_admin1._id)
+    u1.set_password('foo')
+    p_adobe1 = n_adobe.register_project('adobe-1', u_admin_adobe)
+    n_adobe.acl['admin'].append(u_admin_adobe._id)
+    p0 = n_projects.register_project('test', u_admin)
+    p0._extra_tool_status = [ 'alpha', 'beta' ]
     # Ming doesn't detect substructural changes in newly created objects (vs loaded from DB)
     state(n_adobe).status = 'dirty'
     state(n_projects).status = 'dirty'
@@ -129,42 +158,15 @@
     session(n_projects).flush(n_projects)
     session(n_users).flush(n_users)
 
-    u_adobe.set_password('foo')
-    u0.set_password('foo')
-    u1.set_password('foo')
-    u2.set_password('foo')
-    u_admin1.set_password('foo')
-    u0.claim_address('Beta@wiki.test.projects.sourceforge.net')
-
-    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)
-    cat2_2 = M.ProjectCategory(name='streaming', label='Streaming', parent_id=cat2._id)
-    cat2_3 = M.ProjectCategory(name='fax', label='Fax', parent_id=cat2._id)
-    cat2_4 = M.ProjectCategory(name='bbs', label='BBS', parent_id=cat2._id)
-
-    cat3 = M.ProjectCategory(name='database', label='Database')
-    cat3_1 = M.ProjectCategory(name='front_ends', label='Front-Ends', parent_id=cat3._id)
-    cat3_2 = M.ProjectCategory(name='engines_servers', label='Engines/Servers', parent_id=cat3._id)
-
-    log.info('Registering initial projects')
-    p_adobe1 = n_adobe.register_project('adobe-1', u_adobe)
-    p_adobe2 = n_adobe.register_project('adobe-2', u_adobe)
-    p_allura = n_projects.register_project('allura', u_admin1)
-    p0 = n_projects.register_project('test', u0)
-    p0._extra_tool_status = [ 'alpha', 'beta' ]
+
+    log.info('Registering initial apps')
 
     c.project = p0
-    c.user = u0
-    p0.add_user(u_admin1, ['Admin'])
+    c.user = u_admin
     p1 = p0.new_subproject('sub1')
     ThreadLocalORMSession.flush_all()
     if asbool(conf.get('load_test_data')):
-        log.info('Loading test data')
         u_proj = M.Project.query.get(shortname='u/test-admin')
-        u_proj.new_subproject('sub1')
         app = p0.install_app('SVN', 'src', 'SVN')
         app = p0.install_app('Git', 'src-git', 'Git')
         app.config.options['type'] = 'git'
@@ -180,7 +182,7 @@
         if asbool(conf.get('cache_test_data')):
             cache_test_data()
     else: # pragma no cover
-        log.info('Loading some large data')
+        p0.add_user(u_admin, ['Admin'])
         p0.install_app('Wiki', 'wiki')
         p0.install_app('Tickets', 'bugs')
         p0.install_app('Discussion', 'discussion')