diff options
author | 2018-06-23 11:54:34 -0400 | |
---|---|---|
committer | 2018-06-23 11:54:34 -0400 | |
commit | 83ac4e09560943937e03567d9d4a789a46deb9bc (patch) | |
tree | 18a123bebf20d32d2b11917b2081aa748af135ec /pysite | |
parent | Some improvements (diff) |
Show more helpful error messages when editing team repo
Diffstat (limited to 'pysite')
-rw-r--r-- | pysite/views/main/jams/team_edit_repo.py | 36 |
1 files changed, 26 insertions, 10 deletions
diff --git a/pysite/views/main/jams/team_edit_repo.py b/pysite/views/main/jams/team_edit_repo.py index 8830f799..3aa37ba6 100644 --- a/pysite/views/main/jams/team_edit_repo.py +++ b/pysite/views/main/jams/team_edit_repo.py @@ -8,15 +8,15 @@ from rethinkdb import ReqlNonExistenceError from urllib3.util import parse_url from werkzeug.exceptions import BadRequest, NotFound, Unauthorized -from pysite.base_route import RouteView -from pysite.constants import GITLAB_ACCESS_TOKEN +from pysite.base_route import APIView +from pysite.constants import GITLAB_ACCESS_TOKEN, ErrorCodes from pysite.decorators import csrf from pysite.mixins import DBMixin, OAuthMixin log = logging.getLogger(__name__) -class JamsTeamEditRepo(RouteView, DBMixin, OAuthMixin): +class JamsTeamEditRepo(APIView, DBMixin, OAuthMixin): path = "/jams/teams/<string:team_id>/edit_repo" name = "jams.team.edit_repo" @@ -58,16 +58,23 @@ class JamsTeamEditRepo(RouteView, DBMixin, OAuthMixin): project_path = url.path.strip("/") if len(project_path.split("/")) < 2: - raise BadRequest() + return self.error( + ErrorCodes.incorrect_parameters, + "Not a valid repository." + ) word_regex = re.compile("^[\-\w]+$") for segment in project_path.split("/"): if not word_regex.fullmatch(segment): - raise BadRequest() + return self.error( + ErrorCodes.incorrect_parameters, + "Not a valid repository." + ) project_path_encoded = quote(project_path, safe='') - if not self.validate_project(team, project_path_encoded): - return + validation = self.validate_project(team, project_path_encoded) + if validation is not True: + return validation team_obj = self.db.get(self.table_name, team_id) team_obj["repo"] = project_path @@ -84,7 +91,10 @@ class JamsTeamEditRepo(RouteView, DBMixin, OAuthMixin): query_response = self.request_project(project_path) if query_response.status_code != 200: - raise BadRequest() + return self.error( + ErrorCodes.incorrect_parameters, + "Not a valid repository." + ) if "repo" not in team["jam"]: return True @@ -92,7 +102,10 @@ class JamsTeamEditRepo(RouteView, DBMixin, OAuthMixin): project_data = query_response.json() if "forked_from_project" not in project_data: - raise BadRequest() + return self.error( + ErrorCodes.incorrect_parameters, + "This repository is not a fork of the jam's repository." + ) # check if it's a fork for the right repo forked_from_project = project_data["forked_from_project"] @@ -105,7 +118,10 @@ class JamsTeamEditRepo(RouteView, DBMixin, OAuthMixin): jam_repo_data = jam_repo_response.json() if jam_repo_data["id"] != forked_from_project["id"]: - raise BadRequest() + return self.error( + ErrorCodes.incorrect_parameters, + "This repository is not a fork of the jam's repository." + ) return True |