Mercurial > kallithea
changeset 8297:2fa9f497faac
repos: separate repo creation from form validation
The broad catching of Exception in the repo creation controller is conceptually
bad. It also caused misleading "Error creating repository None" when form
validation failed with anything but formencode.Invalid . For now, just
constrain the broad exception handling to only cover repo creation. It is a bug
if form validation fails in unexpected ways, and we want it reported as a crash
that we can fix.
author | Mads Kiilerich <mads@kiilerich.com> |
---|---|
date | Tue, 17 Mar 2020 17:15:59 +0100 |
parents | e98f6338829c |
children | 7a939ea3510a |
files | kallithea/controllers/admin/repos.py |
diffstat | 1 files changed, 5 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/kallithea/controllers/admin/repos.py Tue Mar 17 00:16:52 2020 +0100 +++ b/kallithea/controllers/admin/repos.py Tue Mar 17 17:15:59 2020 +0100 @@ -112,17 +112,11 @@ @NotAnonymous() def create(self): self.__load_defaults() - form_result = {} try: # CanWriteGroup validators checks permissions of this POST form_result = RepoForm(repo_groups=c.repo_groups, landing_revs=c.landing_revs_choices)() \ .to_python(dict(request.POST)) - - # create is done sometimes async on celery, db transaction - # management is handled there. - task = RepoModel().create(form_result, request.authuser.user_id) - task_id = task.task_id except formencode.Invalid as errors: log.info(errors) return htmlfill.render( @@ -133,6 +127,11 @@ force_defaults=False, encoding="UTF-8") + try: + # create is done sometimes async on celery, db transaction + # management is handled there. + task = RepoModel().create(form_result, request.authuser.user_id) + task_id = task.task_id except Exception: log.error(traceback.format_exc()) msg = (_('Error creating repository %s')