Switch to unified view

a/Allura/allura/websetup/bootstrap.py b/Allura/allura/websetup/bootstrap.py
...
...
55
    """Place any commands to setup allura here"""
55
    """Place any commands to setup allura here"""
56
    # Our bootstrap doesn't play nicely with SFX project and user APIs
56
    # Our bootstrap doesn't play nicely with SFX project and user APIs
57
    tg.config['auth.method'] = tg.config['registration.method'] = 'local'
57
    tg.config['auth.method'] = tg.config['registration.method'] = 'local'
58
    assert tg.config['auth.method'] == 'local'
58
    assert tg.config['auth.method'] == 'local'
59
    conf['auth.method'] = conf['registration.method'] = 'local'
59
    conf['auth.method'] = conf['registration.method'] = 'local'
60
60
    # Clean up all old stuff
61
    # Clean up all old stuff
61
    ThreadLocalORMSession.close_all()
62
    ThreadLocalORMSession.close_all()
62
    c.queued_messages = defaultdict(list)
63
    c.queued_messages = defaultdict(list)
63
    c.user = c.project = c.app = None
64
    c.user = c.project = c.app = None
64
    database=conf.get('db_prefix', '') + 'project:test'
65
    database=conf.get('db_prefix', '') + 'project:test'
...
...
72
        if restore_test_data():
73
        if restore_test_data():
73
            c.project = M.Project.query.get(shortname='test')
74
            c.project = M.Project.query.get(shortname='test')
74
            return
75
            return
75
    log.info('Initializing search')
76
    log.info('Initializing search')
76
77
77
    log.info('Registering initial users & neighborhoods')
78
    log.info('Registering root user & default neighborhoods')
78
    anonymous = M.User(_id=None,
79
    anonymous = M.User(_id=None,
79
                       username='*anonymous',
80
                       username='*anonymous',
80
                       display_name='Anonymous Coward')
81
                       display_name='Anonymous Coward')
81
    root = create_user('Root')
82
    root = create_user('Root')
82
83
...
...
103
104
104
    # add the adobe icon
105
    # add the adobe icon
105
    file_name = 'adobe_icon.png'
106
    file_name = 'adobe_icon.png'
106
    file_path = os.path.join(allura.__path__[0],'public','nf','images',file_name)
107
    file_path = os.path.join(allura.__path__[0],'public','nf','images',file_name)
107
    M.NeighborhoodFile.from_path(file_path, neighborhood_id=n_adobe._id)
108
    M.NeighborhoodFile.from_path(file_path, neighborhood_id=n_adobe._id)
109
110
111
    log.info('Creating basic project categories')
112
    cat1 = M.ProjectCategory(name='clustering', label='Clustering')
113
114
    cat2 = M.ProjectCategory(name='communications', label='Communications')
115
    cat2_1 = M.ProjectCategory(name='synchronization', label='Synchronization', parent_id=cat2._id)
116
    cat2_2 = M.ProjectCategory(name='streaming', label='Streaming', parent_id=cat2._id)
117
    cat2_3 = M.ProjectCategory(name='fax', label='Fax', parent_id=cat2._id)
118
    cat2_4 = M.ProjectCategory(name='bbs', label='BBS', parent_id=cat2._id)
119
120
    cat3 = M.ProjectCategory(name='database', label='Database')
121
    cat3_1 = M.ProjectCategory(name='front_ends', label='Front-Ends', parent_id=cat3._id)
122
    cat3_2 = M.ProjectCategory(name='engines_servers', label='Engines/Servers', parent_id=cat3._id)
123
108
    log.info('Registering "regular users" (non-root)')
124
    log.info('Registering "regular users" (non-root) and default projects')
125
    # since this runs a lot for tests, separate test and default users and
126
    # do the minimal needed
127
    if asbool(conf.get('load_test_data')):
128
        u_admin = M.User.register(dict(username='test-admin',
129
                                  display_name='Test Admin'))
130
        u_admin.set_password('foo')
131
        u_admin.claim_address('Beta@wiki.test.projects.sourceforge.net')
132
        u_admin_adobe = u_admin
133
    else:
134
        u_admin = M.User.register(dict(username='admin1',
135
                                        display_name='Admin 1'))
136
        u_admin.set_password('foo')
109
    u_adobe = M.User.register(dict(username='adobe-admin',
137
        u_admin_adobe = M.User.register(dict(username='adobe-admin',
110
                                   display_name='Adobe Admin'))
138
                                   display_name='Adobe Admin'))
111
    u0 = M.User.register(dict(username='test-admin',
139
        u_admin_adobe.set_password('foo')
112
                              display_name='Test Admin'))
140
        # Admin1 is almost root, with admin access for Users and Projects neighborhoods
141
        n_projects.acl['admin'].append(u_admin._id)
142
        n_users.acl['admin'].append(u_admin._id)
143
144
        p_allura = n_projects.register_project('allura', u_admin)
113
    u1 = M.User.register(dict(username='test-user',
145
    u1 = M.User.register(dict(username='test-user',
114
                              display_name='Test User'))
146
                              display_name='Test User'))
115
    u2 = M.User.register(dict(username='test-user2',
147
    u1.set_password('foo')
116
                              display_name='Test User 2'))
148
    p_adobe1 = n_adobe.register_project('adobe-1', u_admin_adobe)
117
    u_admin1 = M.User.register(dict(username='admin1',
118
                                    display_name='Admin 1'))
119
    n_adobe.acl['admin'].append(u_adobe._id)
149
    n_adobe.acl['admin'].append(u_admin_adobe._id)
120
    # Admin1 is almost root, with admin access for Users and Projects neighborhoods
150
    p0 = n_projects.register_project('test', u_admin)
121
    n_projects.acl['admin'].append(u_admin1._id)
151
    p0._extra_tool_status = [ 'alpha', 'beta' ]
122
    n_users.acl['admin'].append(u_admin1._id)
123
    # Ming doesn't detect substructural changes in newly created objects (vs loaded from DB)
152
    # Ming doesn't detect substructural changes in newly created objects (vs loaded from DB)
124
    state(n_adobe).status = 'dirty'
153
    state(n_adobe).status = 'dirty'
125
    state(n_projects).status = 'dirty'
154
    state(n_projects).status = 'dirty'
126
    state(n_users).status = 'dirty'
155
    state(n_users).status = 'dirty'
127
    # TODO: Hope that Ming can be improved to at least avoid stuff below
156
    # TODO: Hope that Ming can be improved to at least avoid stuff below
128
    session(n_adobe).flush(n_adobe)
157
    session(n_adobe).flush(n_adobe)
129
    session(n_projects).flush(n_projects)
158
    session(n_projects).flush(n_projects)
130
    session(n_users).flush(n_users)
159
    session(n_users).flush(n_users)
131
160
132
    u_adobe.set_password('foo')
133
    u0.set_password('foo')
134
    u1.set_password('foo')
135
    u2.set_password('foo')
136
    u_admin1.set_password('foo')
137
    u0.claim_address('Beta@wiki.test.projects.sourceforge.net')
138
161
139
    log.info('Creating basic project categories')
140
    cat1 = M.ProjectCategory(name='clustering', label='Clustering')
141
142
    cat2 = M.ProjectCategory(name='communications', label='Communications')
143
    cat2_1 = M.ProjectCategory(name='synchronization', label='Synchronization', parent_id=cat2._id)
144
    cat2_2 = M.ProjectCategory(name='streaming', label='Streaming', parent_id=cat2._id)
145
    cat2_3 = M.ProjectCategory(name='fax', label='Fax', parent_id=cat2._id)
146
    cat2_4 = M.ProjectCategory(name='bbs', label='BBS', parent_id=cat2._id)
147
148
    cat3 = M.ProjectCategory(name='database', label='Database')
149
    cat3_1 = M.ProjectCategory(name='front_ends', label='Front-Ends', parent_id=cat3._id)
150
    cat3_2 = M.ProjectCategory(name='engines_servers', label='Engines/Servers', parent_id=cat3._id)
151
152
    log.info('Registering initial projects')
162
    log.info('Registering initial apps')
153
    p_adobe1 = n_adobe.register_project('adobe-1', u_adobe)
154
    p_adobe2 = n_adobe.register_project('adobe-2', u_adobe)
155
    p_allura = n_projects.register_project('allura', u_admin1)
156
    p0 = n_projects.register_project('test', u0)
157
    p0._extra_tool_status = [ 'alpha', 'beta' ]
158
163
159
    c.project = p0
164
    c.project = p0
160
    c.user = u0
165
    c.user = u_admin
161
    p0.add_user(u_admin1, ['Admin'])
162
    p1 = p0.new_subproject('sub1')
166
    p1 = p0.new_subproject('sub1')
163
    ThreadLocalORMSession.flush_all()
167
    ThreadLocalORMSession.flush_all()
164
    if asbool(conf.get('load_test_data')):
168
    if asbool(conf.get('load_test_data')):
165
        log.info('Loading test data')
166
        u_proj = M.Project.query.get(shortname='u/test-admin')
169
        u_proj = M.Project.query.get(shortname='u/test-admin')
167
        u_proj.new_subproject('sub1')
168
        app = p0.install_app('SVN', 'src', 'SVN')
170
        app = p0.install_app('SVN', 'src', 'SVN')
169
        app = p0.install_app('Git', 'src-git', 'Git')
171
        app = p0.install_app('Git', 'src-git', 'Git')
170
        app.config.options['type'] = 'git'
172
        app.config.options['type'] = 'git'
171
        app = p0.install_app('Hg', 'src-hg', 'Mercurial')
173
        app = p0.install_app('Hg', 'src-hg', 'Mercurial')
172
        app.config.options['type'] = 'hg'
174
        app.config.options['type'] = 'hg'
...
...
178
        ThreadLocalORMSession.flush_all()
180
        ThreadLocalORMSession.flush_all()
179
        ThreadLocalORMSession.close_all()
181
        ThreadLocalORMSession.close_all()
180
        if asbool(conf.get('cache_test_data')):
182
        if asbool(conf.get('cache_test_data')):
181
            cache_test_data()
183
            cache_test_data()
182
    else: # pragma no cover
184
    else: # pragma no cover
183
        log.info('Loading some large data')
185
        p0.add_user(u_admin, ['Admin'])
184
        p0.install_app('Wiki', 'wiki')
186
        p0.install_app('Wiki', 'wiki')
185
        p0.install_app('Tickets', 'bugs')
187
        p0.install_app('Tickets', 'bugs')
186
        p0.install_app('Discussion', 'discussion')
188
        p0.install_app('Discussion', 'discussion')
187
        # app = p0.install_app('SVN', 'src')
189
        # app = p0.install_app('SVN', 'src')
188
        # app = p0.install_app('Git', 'src-git')
190
        # app = p0.install_app('Git', 'src-git')