From 71470cab3adde79a170305f696a08bb884396a10 Mon Sep 17 00:00:00 2001 From: Pierre-Yves Chibon Date: Apr 14 2016 10:18:24 +0000 Subject: Allow a single slash in the name of the projects This would allow us to simulate namespacing without impacting on all the projects. --- diff --git a/pagure/__init__.py b/pagure/__init__.py index 16cbd64..78213d4 100644 --- a/pagure/__init__.py +++ b/pagure/__init__.py @@ -35,6 +35,8 @@ from pygments.formatters import HtmlFormatter from flask_multistatic import MultiStaticFlask +from werkzeug.routing import BaseConverter + # Create the application. APP = MultiStaticFlask(__name__) APP.jinja_env.trim_blocks = True @@ -76,6 +78,18 @@ if APP.config.get('THEME_STATIC_FOLDER', False): ] +class RepoConverter(BaseConverter): + + """Like the default :class:`UnicodeConverter`, but it allows matching + a single slash. + :param map: the :class:`Map`. + """ + regex = '[^/]*/?[^/]*' + #weight = 200 + + +APP.url_map.converters['repo'] = RepoConverter + import pagure.doc_utils import pagure.forms import pagure.lib @@ -407,10 +421,7 @@ def get_repo_path(repo): """ Return the path of the git repository corresponding to the provided Repository object from the DB. """ - if repo.is_fork: - repopath = os.path.join(APP.config['FORK_FOLDER'], repo.path) - else: - repopath = os.path.join(APP.config['GIT_FOLDER'], repo.path) + repopath = os.path.join(APP.config['GIT_FOLDER'], repo.path) if not os.path.exists(repopath): flask.abort(404, 'No git repo found') diff --git a/pagure/forms.py b/pagure/forms.py index 7a520d1..fe46a8e 100644 --- a/pagure/forms.py +++ b/pagure/forms.py @@ -16,7 +16,7 @@ import wtforms STRICT_REGEX = '^[a-zA-Z0-9-_]+$' TAGS_REGEX = '^[a-zA-Z0-9-_, .]+$' -PROJECT_NAME_REGEX = '^[a-zA-z0-9_][a-zA-Z0-9-_]+$' +PROJECT_NAME_REGEX = '^[a-zA-z0-9_][a-zA-Z0-9-_]*/?[a-zA-Z0-9-_]+$' class ProjectFormSimplified(wtf.Form): diff --git a/pagure/ui/app.py b/pagure/ui/app.py index c2f8105..3612a28 100644 --- a/pagure/ui/app.py +++ b/pagure/ui/app.py @@ -622,7 +622,6 @@ def reconfirm_email(): return flask.redirect(flask.url_for('.user_settings')) - @APP.route('/settings/email/confirm//') @APP.route('/settings/email/confirm/') def confirm_email(token): diff --git a/pagure/ui/fork.py b/pagure/ui/fork.py index fed6f06..248036c 100644 --- a/pagure/ui/fork.py +++ b/pagure/ui/fork.py @@ -125,10 +125,10 @@ def _get_pr_info(repo_obj, orig_repo, branch_from, branch_to): return(diff, diff_commits, orig_commit) -@APP.route('//pull-requests/') -@APP.route('//pull-requests') -@APP.route('/fork///pull-requests/') -@APP.route('/fork///pull-requests') +@APP.route('//pull-requests/') +@APP.route('//pull-requests') +@APP.route('/fork///pull-requests/') +@APP.route('/fork///pull-requests') def request_pulls(repo, username=None): """ Request pulling the changes from the fork into the project. """ @@ -200,10 +200,10 @@ def request_pulls(repo, username=None): ) -@APP.route('//pull-request//') -@APP.route('//pull-request/') -@APP.route('/fork///pull-request//') -@APP.route('/fork///pull-request/') +@APP.route('//pull-request//') +@APP.route('//pull-request/') +@APP.route('/fork///pull-request//') +@APP.route('/fork///pull-request/') def request_pull(repo, requestid, username=None): """ Request pulling the changes from the fork into the project. """ @@ -289,12 +289,11 @@ def request_pull(repo, requestid, username=None): ) -@APP.route('//pull-request/.patch') -@APP.route('/fork///pull-request/.patch') +@APP.route('//pull-request/.patch') +@APP.route('/fork///pull-request/.patch') def request_pull_patch(repo, requestid, username=None): """ Returns the commits from the specified pull-request as patches. """ - repo = pagure.lib.get_project(SESSION, repo, user=username) if not repo: @@ -360,13 +359,13 @@ def request_pull_patch(repo, requestid, username=None): return flask.Response(patch, content_type="text/plain;charset=UTF-8") -@APP.route('//pull-request//edit/', +@APP.route('//pull-request//edit/', methods=('GET', 'POST')) -@APP.route('//pull-request//edit', +@APP.route('//pull-request//edit', methods=('GET', 'POST')) -@APP.route('/fork///pull-request//edit/', +@APP.route('/fork///pull-request//edit/', methods=('GET', 'POST')) -@APP.route('/fork///pull-request//edit', +@APP.route('/fork///pull-request//edit', methods=('GET', 'POST')) @login_required def request_pull_edit(repo, requestid, username=None): @@ -425,13 +424,13 @@ def request_pull_edit(repo, requestid, username=None): ) -@APP.route('//pull-request//comment', +@APP.route('//pull-request//comment', methods=['POST']) -@APP.route('//pull-request//comment//' +@APP.route('//pull-request//comment//' '/', methods=('GET', 'POST')) -@APP.route('/fork///pull-request//comment', +@APP.route('/fork///pull-request//comment', methods=['POST']) -@APP.route('/fork///pull-request//comment/' +@APP.route('/fork///pull-request//comment/' '//', methods=('GET', 'POST')) @login_required def pull_request_add_comment( @@ -511,9 +510,9 @@ def pull_request_add_comment( ) -@APP.route('//pull-request//comment/drop', +@APP.route('//pull-request//comment/drop', methods=['POST']) -@APP.route('/fork///pull-request//comment/drop', +@APP.route('/fork///pull-request//comment/drop', methods=['POST']) @login_required def pull_request_drop_comment(repo, requestid, username=None): @@ -574,9 +573,9 @@ def pull_request_drop_comment(repo, requestid, username=None): repo=repo.name, requestid=requestid)) -@APP.route('//pull-request//comment//edit', +@APP.route('//pull-request//comment//edit', methods=('GET', 'POST')) -@APP.route('/fork///pull-request//comment' +@APP.route('/fork///pull-request//comment' '//edit', methods=('GET', 'POST')) @login_required def pull_request_edit_comment(repo, requestid, commentid, username=None): @@ -656,8 +655,8 @@ def pull_request_edit_comment(repo, requestid, commentid, username=None): ) -@APP.route('//pull-request//merge', methods=['POST']) -@APP.route('/fork///pull-request//merge', +@APP.route('//pull-request//merge', methods=['POST']) +@APP.route('/fork///pull-request//merge', methods=['POST']) @login_required def merge_request_pull(repo, requestid, username=None): @@ -730,9 +729,9 @@ def merge_request_pull(repo, requestid, username=None): return flask.redirect(flask.url_for('view_repo', repo=repo.name)) -@APP.route('//pull-request/cancel/', +@APP.route('//pull-request/cancel/', methods=['POST']) -@APP.route('/fork///pull-request/cancel/', +@APP.route('/fork///pull-request/cancel/', methods=['POST']) @login_required def cancel_request_pull(repo, requestid, username=None): @@ -781,8 +780,8 @@ def cancel_request_pull(repo, requestid, username=None): return flask.redirect(flask.url_for('view_repo', repo=repo)) -@APP.route('//pull-request//assign', methods=['POST']) -@APP.route('/fork///pull-request//assign', +@APP.route('//pull-request//assign', methods=['POST']) +@APP.route('/fork///pull-request//assign', methods=['POST']) @login_required def set_assignee_requests(repo, requestid, username=None): @@ -833,8 +832,8 @@ def set_assignee_requests(repo, requestid, username=None): # Specific actions -@APP.route('/do_fork/', methods=['POST']) -@APP.route('/do_fork//', methods=['POST']) +@APP.route('/do_fork/', methods=['POST']) +@APP.route('/do_fork/fork//', methods=['POST']) @login_required def fork_project(repo, username=None): """ Fork the project specified into the user's namespace @@ -884,15 +883,15 @@ def fork_project(repo, username=None): return flask.redirect(flask.url_for('view_repo', repo=repo.name)) -@APP.route('//diff/../', +@APP.route('//diff/../', methods=('GET', 'POST')) -@APP.route('//diff/..', +@APP.route('//diff/..', methods=('GET', 'POST')) @APP.route( - '/fork///diff/../', + '/fork///diff/../', methods=('GET', 'POST')) @APP.route( - '/fork///diff/..', + '/fork///diff/..', methods=('GET', 'POST')) def new_request_pull(repo, branch_to, branch_from, username=None): """ Request pulling the changes from the fork into the project. @@ -1024,12 +1023,12 @@ def new_request_pull(repo, branch_to, branch_from, username=None): ) -@APP.route('//diff/remote/', methods=('GET', 'POST')) -@APP.route('//diff/remote', methods=('GET', 'POST')) +@APP.route('//diff/remote/', methods=('GET', 'POST')) +@APP.route('//diff/remote', methods=('GET', 'POST')) @APP.route( - '/fork///diff/remote/', methods=('GET', 'POST')) + '/fork///diff/remote/', methods=('GET', 'POST')) @APP.route( - '/fork///diff/remote', methods=('GET', 'POST')) + '/fork///diff/remote', methods=('GET', 'POST')) @login_required def new_remote_request_pull(repo, username=None): """ Request pulling the changes from a remote fork into the project. diff --git a/pagure/ui/issues.py b/pagure/ui/issues.py index 064df8d..37eb567 100644 --- a/pagure/ui/issues.py +++ b/pagure/ui/issues.py @@ -29,11 +29,11 @@ from pagure import (APP, SESSION, LOG, __get_file_in_tree, # URLs -@APP.route('//issue//update/', methods=['GET', 'POST']) -@APP.route('//issue//update', methods=['GET', 'POST']) -@APP.route('/fork///issue//update/', +@APP.route('//issue//update/', methods=['GET', 'POST']) +@APP.route('//issue//update', methods=['GET', 'POST']) +@APP.route('/fork///issue//update/', methods=['GET', 'POST']) -@APP.route('/fork///issue//update', +@APP.route('/fork///issue//update', methods=['GET', 'POST']) @login_required def update_issue(repo, issueid, username=None): @@ -250,10 +250,10 @@ def update_issue(repo, issueid, username=None): 'view_issue', username=username, repo=repo.name, issueid=issueid)) -@APP.route('//tag//edit/', methods=('GET', 'POST')) -@APP.route('//tag//edit', methods=('GET', 'POST')) -@APP.route('/fork///tag//edit/', methods=('GET', 'POST')) -@APP.route('/fork///tag//edit', methods=('GET', 'POST')) +@APP.route('//tag//edit/', methods=('GET', 'POST')) +@APP.route('//tag//edit', methods=('GET', 'POST')) +@APP.route('/fork///tag//edit/', methods=('GET', 'POST')) +@APP.route('/fork///tag//edit', methods=('GET', 'POST')) @login_required def edit_tag(repo, tag, username=None): """ Edit the specified tag of a project. @@ -299,8 +299,8 @@ def edit_tag(repo, tag, username=None): ) -@APP.route('//droptag/', methods=['POST']) -@APP.route('/fork///droptag/', methods=['POST']) +@APP.route('//droptag/', methods=['POST']) +@APP.route('/fork///droptag/', methods=['POST']) @login_required def remove_tag(repo, username=None): """ Remove the specified tag from the project. @@ -341,10 +341,10 @@ def remove_tag(repo, username=None): ) -@APP.route('//issues/') -@APP.route('//issues') -@APP.route('/fork///issues/') -@APP.route('/fork///issues') +@APP.route('//issues/') +@APP.route('//issues') +@APP.route('/fork///issues/') +@APP.route('/fork///issues') def view_issues(repo, username=None): """ List all issues associated to a repo """ @@ -444,10 +444,10 @@ def view_issues(repo, username=None): ) -@APP.route('//new_issue/', methods=('GET', 'POST')) -@APP.route('//new_issue', methods=('GET', 'POST')) -@APP.route('/fork///new_issue/', methods=('GET', 'POST')) -@APP.route('/fork///new_issue', methods=('GET', 'POST')) +@APP.route('//new_issue/', methods=('GET', 'POST')) +@APP.route('//new_issue', methods=('GET', 'POST')) +@APP.route('/fork///new_issue/', methods=('GET', 'POST')) +@APP.route('/fork///new_issue', methods=('GET', 'POST')) @login_required def new_issue(repo, username=None): """ Create a new issue @@ -545,10 +545,10 @@ def new_issue(repo, username=None): ) -@APP.route('//issue//') -@APP.route('//issue/') -@APP.route('/fork///issue//') -@APP.route('/fork///issue/') +@APP.route('//issue//') +@APP.route('//issue/') +@APP.route('/fork///issue//') +@APP.route('/fork///issue/') def view_issue(repo, issueid, username=None): """ List all issues associated to a repo """ @@ -595,8 +595,8 @@ def view_issue(repo, issueid, username=None): ) -@APP.route('//issue//drop', methods=['POST']) -@APP.route('/fork///issue//drop', +@APP.route('//issue//drop', methods=['POST']) +@APP.route('/fork///issue//drop', methods=['POST']) def delete_issue(repo, issueid, username=None): """ Delete the specified issue @@ -641,11 +641,11 @@ def delete_issue(repo, issueid, username=None): 'view_issue', username=username, repo=repo.name, issueid=issueid)) -@APP.route('//issue//edit/', methods=('GET', 'POST')) -@APP.route('//issue//edit', methods=('GET', 'POST')) -@APP.route('/fork///issue//edit/', +@APP.route('//issue//edit/', methods=('GET', 'POST')) +@APP.route('//issue//edit', methods=('GET', 'POST')) +@APP.route('/fork///issue//edit/', methods=('GET', 'POST')) -@APP.route('/fork///issue//edit', +@APP.route('/fork///issue//edit', methods=('GET', 'POST')) @login_required def edit_issue(repo, issueid, username=None): @@ -744,8 +744,8 @@ def edit_issue(repo, issueid, username=None): ) -@APP.route('//issue//upload', methods=['POST']) -@APP.route('/fork///issue//upload', +@APP.route('//issue//upload', methods=['POST']) +@APP.route('/fork///issue//upload', methods=['POST']) @login_required def upload_issue(repo, issueid, username=None): @@ -790,8 +790,8 @@ def upload_issue(repo, issueid, username=None): return flask.jsonify({'output': 'notok'}) -@APP.route('//issue/raw/') -@APP.route('/fork///issue/raw/') +@APP.route('//issue/raw/') +@APP.route('/fork///issue/raw/') def view_issue_raw_file(repo, filename=None, username=None): """ Displays the raw content of a file of a commit for the specified ticket repo. @@ -847,9 +847,9 @@ def view_issue_raw_file(repo, filename=None, username=None): return (data, 200, headers) -@APP.route('//issue//comment//edit', +@APP.route('//issue//comment//edit', methods=('GET', 'POST')) -@APP.route('/fork///issue//comment' +@APP.route('/fork///issue//comment' '//edit', methods=('GET', 'POST')) @login_required def edit_comment_issue(repo, issueid, commentid, username=None): diff --git a/pagure/ui/repo.py b/pagure/ui/repo.py index 8e0f0fe..d6f0fea 100644 --- a/pagure/ui/repo.py +++ b/pagure/ui/repo.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- """ - (c) 2014-2015 - Copyright Red Hat Inc + (c) 2014-2016 - Copyright Red Hat Inc Authors: Pierre-Yves Chibon @@ -45,10 +45,10 @@ from pagure import (APP, SESSION, LOG, __get_file_in_tree, login_required, # pylint: disable=E1101 -@APP.route('//') -@APP.route('/') -@APP.route('/fork///') -@APP.route('/fork//') +@APP.route('//') +@APP.route('/') +@APP.route('/fork///') +@APP.route('/fork//') def view_repo(repo, username=None): """ Front page of a specific repo. """ @@ -153,8 +153,8 @@ def view_repo(repo, username=None): ) -@APP.route('//branch/') -@APP.route('/fork///branch/') +@APP.route('//branch/') +@APP.route('/fork///branch/') def view_repo_branch(repo, branchname, username=None): ''' Returns the list of branches in the repo. ''' @@ -255,12 +255,12 @@ def view_repo_branch(repo, branchname, username=None): ) -@APP.route('//commits/') -@APP.route('//commits') -@APP.route('//commits/') -@APP.route('/fork///commits/') -@APP.route('/fork///commits') -@APP.route('/fork///commits/') +@APP.route('//commits/') +@APP.route('//commits') +@APP.route('//commits/') +@APP.route('/fork///commits/') +@APP.route('/fork///commits') +@APP.route('/fork///commits/') def view_commits(repo, branchname=None, username=None): """ Displays the commits of the specified repo. """ @@ -372,8 +372,8 @@ def view_commits(repo, branchname=None, username=None): ) -@APP.route('//blob//f/') -@APP.route('/fork///blob//f/') +@APP.route('//blob//f/') +@APP.route('/fork///blob//f/') def view_file(repo, identifier, filename, username=None): """ Displays the content of a file or a tree for the specified repo. """ @@ -477,9 +477,9 @@ def view_file(repo, identifier, filename, username=None): ) -@APP.route('//raw/', defaults={'filename': None}) -@APP.route('//raw//f/') -@APP.route('/fork///raw/', +@APP.route('//raw/', defaults={'filename': None}) +@APP.route('//raw//f/') +@APP.route('/fork///raw/', defaults={'filename': None}) @APP.route('/fork///raw//f/') def view_raw_file(repo, identifier, filename=None, username=None): @@ -561,10 +561,26 @@ def view_raw_file(repo, identifier, filename=None, username=None): return (data, 200, headers) -@APP.route('///') -@APP.route('//') -@APP.route('/fork////') -@APP.route('/fork///') +#@APP.route('///') +#@APP.route('//') +#@APP.route('/fork////') +#@APP.route('/fork///') +#def view_commit_old(repo, commitid, username=None): + #""" Render a commit in a repo + #""" + #print repo, commitid, username + #tmp = '%s/%s' % (repo, commitid) + #if not pagure.lib.get_project(SESSION, tmp, user=username): + #return flask.redirect(flask.url_for( + #'view_commit', repo=repo, commitid=commitid, username=username)) + #else: + #return view_repo(tmp, username=username) + + +@APP.route('//c//') +@APP.route('//c/') +@APP.route('/fork///c//') +@APP.route('/fork///c/') def view_commit(repo, commitid, username=None): """ Render a commit in a repo """ @@ -606,8 +622,8 @@ def view_commit(repo, commitid, username=None): ) -@APP.route('//.patch') -@APP.route('/fork///.patch') +@APP.route('//c/.patch') +@APP.route('/fork///c/.patch') def view_commit_patch(repo, commitid, username=None): """ Render a commit in a repo as patch """ @@ -633,12 +649,12 @@ def view_commit_patch(repo, commitid, username=None): return flask.Response(patch, content_type="text/plain;charset=UTF-8") -@APP.route('//tree/') -@APP.route('//tree') -@APP.route('//tree/') -@APP.route('/fork///tree/') -@APP.route('/fork///tree') -@APP.route('/fork///tree/') +@APP.route('//tree/') +@APP.route('//tree') +@APP.route('//tree/') +@APP.route('/fork///tree/') +@APP.route('/fork///tree') +@APP.route('/fork///tree/') def view_tree(repo, identifier=None, username=None): """ Render the tree of the repo """ @@ -694,10 +710,10 @@ def view_tree(repo, identifier=None, username=None): ) -@APP.route('//forks/') -@APP.route('//forks') -@APP.route('/fork///forks/') -@APP.route('/fork///forks') +@APP.route('//forks/') +@APP.route('//forks') +@APP.route('/fork///forks/') +@APP.route('/fork///forks') def view_forks(repo, username=None): """ Presents all the forks of the project. """ @@ -715,10 +731,10 @@ def view_forks(repo, username=None): ) -@APP.route('//releases/') -@APP.route('//releases') -@APP.route('/fork///releases/') -@APP.route('/fork///releases') +@APP.route('//releases/') +@APP.route('//releases') +@APP.route('/fork///releases/') +@APP.route('/fork///releases') def view_tags(repo, username=None): """ Presents all the tags of the project. """ @@ -742,10 +758,10 @@ def view_tags(repo, username=None): ) -@APP.route('//upload/', methods=('GET', 'POST')) -@APP.route('//upload', methods=('GET', 'POST')) -@APP.route('/fork///upload/', methods=('GET', 'POST')) -@APP.route('/fork///upload', methods=('GET', 'POST')) +@APP.route('//upload/', methods=('GET', 'POST')) +@APP.route('//upload', methods=('GET', 'POST')) +@APP.route('/fork///upload/', methods=('GET', 'POST')) +@APP.route('/fork///upload', methods=('GET', 'POST')) @login_required def new_release(repo, username=None): """ Upload a new release. @@ -792,10 +808,10 @@ def new_release(repo, username=None): ) -@APP.route('//settings/', methods=('GET', 'POST')) -@APP.route('//settings', methods=('GET', 'POST')) -@APP.route('/fork///settings/', methods=('GET', 'POST')) -@APP.route('/fork///settings', methods=('GET', 'POST')) +@APP.route('//settings/', methods=('GET', 'POST')) +@APP.route('//settings', methods=('GET', 'POST')) +@APP.route('/fork///settings/', methods=('GET', 'POST')) +@APP.route('/fork///settings', methods=('GET', 'POST')) @login_required def view_settings(repo, username=None): """ Presents the settings of the project. @@ -878,8 +894,8 @@ def view_settings(repo, username=None): ) -@APP.route('//update', methods=['POST']) -@APP.route('/fork///update', methods=['POST']) +@APP.route('//update', methods=['POST']) +@APP.route('/fork///update', methods=['POST']) @login_required def update_project(repo, username=None): """ Update the description of a project. @@ -1015,8 +1031,8 @@ def update_priorities(repo, username=None): 'view_settings', username=username, repo=repo.name)) -@APP.route('//default/branch/', methods=['POST']) -@APP.route('/fork///default/branch/', methods=['POST']) +@APP.route('//default/branch/', methods=['POST']) +@APP.route('/fork///default/branch/', methods=['POST']) @login_required def change_ref_head(repo, username=None): """ Change HEAD reference @@ -1055,8 +1071,8 @@ def change_ref_head(repo, username=None): 'view_settings', username=username, repo=repo.name)) -@APP.route('//delete', methods=['POST']) -@APP.route('/fork///delete', methods=['POST']) +@APP.route('//delete', methods=['POST']) +@APP.route('/fork///delete', methods=['POST']) @login_required def delete_repo(repo, username=None): """ Delete the present project. @@ -1115,8 +1131,8 @@ def delete_repo(repo, username=None): flask.url_for('view_user', username=flask.g.fas_user.username)) -@APP.route('//hook_token', methods=['POST']) -@APP.route('/fork///hook_token', methods=['POST']) +@APP.route('//hook_token', methods=['POST']) +@APP.route('/fork///hook_token', methods=['POST']) @login_required def new_repo_hook_token(repo, username=None): """ Re-generate a hook token for the present project. @@ -1158,8 +1174,8 @@ def new_repo_hook_token(repo, username=None): flask.url_for('view_settings', repo=repo.name, username=username)) -@APP.route('//dropuser/', methods=['POST']) -@APP.route('/fork///dropuser/', methods=['POST']) +@APP.route('//dropuser/', methods=['POST']) +@APP.route('/fork///dropuser/', methods=['POST']) @login_required def remove_user(repo, userid, username=None): """ Remove the specified user from the project. @@ -1211,10 +1227,10 @@ def remove_user(repo, userid, username=None): ) -@APP.route('//adduser/', methods=('GET', 'POST')) -@APP.route('//adduser', methods=('GET', 'POST')) -@APP.route('/fork///adduser/', methods=('GET', 'POST')) -@APP.route('/fork///adduser', methods=('GET', 'POST')) +@APP.route('//adduser/', methods=('GET', 'POST')) +@APP.route('//adduser', methods=('GET', 'POST')) +@APP.route('/fork///adduser/', methods=('GET', 'POST')) +@APP.route('/fork///adduser', methods=('GET', 'POST')) @login_required def add_user(repo, username=None): """ Add the specified user from the project. @@ -1270,10 +1286,10 @@ def add_user(repo, username=None): ) -@APP.route('//addgroup/', methods=('GET', 'POST')) -@APP.route('//addgroup', methods=('GET', 'POST')) -@APP.route('/fork///addgroup/', methods=('GET', 'POST')) -@APP.route('/fork///addgroup', methods=('GET', 'POST')) +@APP.route('//addgroup/', methods=('GET', 'POST')) +@APP.route('//addgroup', methods=('GET', 'POST')) +@APP.route('/fork///addgroup/', methods=('GET', 'POST')) +@APP.route('/fork///addgroup', methods=('GET', 'POST')) @login_required def add_group_project(repo, username=None): """ Add the specified group from the project. @@ -1329,8 +1345,8 @@ def add_group_project(repo, username=None): ) -@APP.route('//regenerate', methods=['POST']) -@APP.route('/fork///regenerate', methods=['POST']) +@APP.route('//regenerate', methods=['POST']) +@APP.route('/fork///regenerate', methods=['POST']) @login_required def regenerate_git(repo, username=None): """ Regenerate the specified git repo with the content in the project. @@ -1377,10 +1393,10 @@ def regenerate_git(repo, username=None): ) -@APP.route('//token/new/', methods=('GET', 'POST')) -@APP.route('//token/new', methods=('GET', 'POST')) -@APP.route('/fork///token/new/', methods=('GET', 'POST')) -@APP.route('/fork///token/new', methods=('GET', 'POST')) +@APP.route('//token/new/', methods=('GET', 'POST')) +@APP.route('//token/new', methods=('GET', 'POST')) +@APP.route('/fork///token/new/', methods=('GET', 'POST')) +@APP.route('/fork///token/new', methods=('GET', 'POST')) @login_required def add_token(repo, username=None): """ Add a token to a specified project. @@ -1435,8 +1451,8 @@ def add_token(repo, username=None): ) -@APP.route('//token/revoke/', methods=['POST']) -@APP.route('/fork///token/revoke/', +@APP.route('//token/revoke/', methods=['POST']) +@APP.route('/fork///token/revoke/', methods=['POST']) @login_required def revoke_api_token(repo, token_id, username=None): @@ -1487,10 +1503,10 @@ def revoke_api_token(repo, token_id, username=None): @APP.route( - '//edit//f/', + '//edit//f/', methods=('GET', 'POST')) @APP.route( - '/fork///edit//f/', + '/fork///edit//f/', methods=('GET', 'POST')) @login_required def edit_file(repo, branchname, filename, username=None): @@ -1577,8 +1593,8 @@ def edit_file(repo, branchname, filename, username=None): ) -@APP.route('///delete', methods=['POST']) -@APP.route('/fork////delete', +@APP.route('//b//delete', methods=['POST']) +@APP.route('/fork///b//delete', methods=['POST']) @login_required def delete_branch(repo, branchname, username=None): @@ -1615,10 +1631,10 @@ def delete_branch(repo, branchname, username=None): flask.url_for('view_repo', repo=repo, username=username)) -@APP.route('/docs//') -@APP.route('/docs//') -@APP.route('/docs/fork///') -@APP.route('/docs/fork///') +@APP.route('/docs//') +@APP.route('/docs//') +@APP.route('/docs/fork///') +@APP.route('/docs/fork///') def view_docs(repo, username=None, filename=None): """ Display the documentation """