|
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')
|