|
a/Allura/allura/controllers/project.py |
|
b/Allura/allura/controllers/project.py |
|
... |
|
... |
135 |
def add_project(self, **form_data):
|
135 |
def add_project(self, **form_data):
|
136 |
require(has_neighborhood_access('create', self.neighborhood), 'Create access required')
|
136 |
require(has_neighborhood_access('create', self.neighborhood), 'Create access required')
|
137 |
c.add_project = W.add_project
|
137 |
c.add_project = W.add_project
|
138 |
for checkbox in ['Wiki','Git','Tickets','Downloads','Discussion']:
|
138 |
for checkbox in ['Wiki','Git','Tickets','Downloads','Discussion']:
|
139 |
form_data.setdefault(checkbox, True)
|
139 |
form_data.setdefault(checkbox, True)
|
|
|
140 |
form_data['neighborhood'] = self.neighborhood.name
|
140 |
return dict(neighborhood=self.neighborhood, form_data=form_data)
|
141 |
return dict(neighborhood=self.neighborhood, form_data=form_data)
|
141 |
|
142 |
|
142 |
@h.vardec
|
143 |
@h.vardec
|
143 |
@expose()
|
144 |
@expose()
|
144 |
@validate(W.add_project, error_handler=add_project)
|
145 |
@validate(W.add_project, error_handler=add_project)
|
145 |
def register(self, project_unixname=None, project_description=None, project_name=None, **kw):
|
146 |
def register(self, project_unixname=None, project_description=None, project_name=None, neighborhood=None, **kw):
|
146 |
require(has_neighborhood_access('create', self.neighborhood), 'Create access required')
|
147 |
require(has_neighborhood_access('create', self.neighborhood), 'Create access required')
|
147 |
project_unixname = h.really_unicode(project_unixname or '').encode('utf-8')
|
|
|
148 |
project_description = h.really_unicode(project_description or '').encode('utf-8')
|
148 |
project_description = h.really_unicode(project_description or '').encode('utf-8')
|
149 |
project_name = h.really_unicode(project_name or '').encode('utf-8')
|
149 |
project_name = h.really_unicode(project_name or '').encode('utf-8')
|
150 |
try:
|
150 |
c.project = M.Project.query.find({'shortname':project_unixname,'neighborhood_id':self.neighborhood._id}).first()
|
151 |
p = self.neighborhood.register_project(project_unixname.lower())
|
|
|
152 |
except forge_exc.ProjectConflict:
|
|
|
153 |
flash(
|
|
|
154 |
'A project already exists with that name, please choose another.', 'error')
|
|
|
155 |
ming.orm.ormsession.ThreadLocalORMSession.close_all()
|
|
|
156 |
redirect('add_project?project_unixname=%s&project_description=%s&project_name=%s' %
|
|
|
157 |
(quote_plus(project_unixname),
|
|
|
158 |
quote_plus(project_description),
|
|
|
159 |
quote_plus(project_name)))
|
|
|
160 |
except Exception, ex:
|
|
|
161 |
flash('%s: %s' % (ex.__class__, str(ex)), 'error')
|
|
|
162 |
log.exception('Unexpected error creating project')
|
|
|
163 |
c.project = None
|
|
|
164 |
ming.orm.ormsession.ThreadLocalORMSession.close_all()
|
|
|
165 |
redirect('add_project?project_unixname=%s&project_description=%s&project_name=%s' %
|
|
|
166 |
(quote_plus(project_unixname),
|
|
|
167 |
quote_plus(project_description),
|
|
|
168 |
quote_plus(project_name)))
|
|
|
169 |
if project_name:
|
151 |
if project_name:
|
170 |
p.name = project_name
|
152 |
c.project.name = project_name
|
171 |
if project_description:
|
153 |
if project_description:
|
172 |
p.short_description = project_description
|
154 |
c.project.short_description = project_description
|
173 |
c.project = p
|
|
|
174 |
ming.orm.ormsession.ThreadLocalORMSession.flush_all()
|
155 |
ming.orm.ormsession.ThreadLocalORMSession.flush_all()
|
175 |
# require(has_project_access('tool'))
|
156 |
# require(has_project_access('tool'))
|
176 |
for i, tool in enumerate(kw):
|
157 |
for i, tool in enumerate(kw):
|
177 |
if kw[tool]:
|
158 |
if kw[tool]:
|
178 |
p.install_app(tool, ordinal=i)
|
159 |
c.project.install_app(tool, ordinal=i)
|
179 |
flash('Welcome to the SourceForge Beta System! '
|
160 |
flash('Welcome to the SourceForge Beta System! '
|
180 |
'To get started, fill out some information about your project.')
|
161 |
'To get started, fill out some information about your project.')
|
181 |
redirect(p.script_name + 'admin/overview')
|
162 |
redirect(c.project.script_name + 'admin/overview')
|
182 |
|
163 |
|
183 |
@expose()
|
164 |
@expose()
|
184 |
def icon(self):
|
165 |
def icon(self):
|
185 |
icon = self.neighborhood.icon
|
166 |
icon = self.neighborhood.icon
|
186 |
if not icon:
|
167 |
if not icon:
|