def edit_repo(repo_id):
session = request.db_session
if not request.user.can_manage:
return abort(403)
if repo_id is not None:
repo = session.query(Repository).get(repo_id)
else:
repo = None
errors = []
if request.method == 'POST':
secret = request.form.get('repo_secret', '')
clone_url = request.form.get('repo_clone_url', '')
repo_name = request.form.get('repo_name', '').strip()
ref_whitelist = request.form.get('repo_ref_whitelist', '')
if len(repo_name) < 3 or repo_name.count('/') != 1:
errors.append('Invalid repository name. Format must be owner/repo')
if not clone_url:
errors.append('No clone URL specified')
other = session.query(Repository).filter_by(name=repo_name).one_or_none()
if (other and not repo) or (other and other.id != repo.id):
errors.append('Repository {!r} already exists'.format(repo_name))
if not errors:
if not repo:
repo = Repository(name=repo_name, clone_url=clone_url, secret=secret,
build_count=0, ref_whitelist=ref_whitelist)
else:
repo.name = repo_name
repo.clone_url = clone_url
repo.secret = secret
repo.ref_whitelist = ref_whitelist
session.add(repo)
session.commit()
return redirect(repo.url())
return render_template('edit_repo.html', user=request.user, repo=repo, errors=errors)
评论列表
文章目录