diff --git a/rhodecode/controllers/files.py b/rhodecode/controllers/files.py --- a/rhodecode/controllers/files.py +++ b/rhodecode/controllers/files.py @@ -36,7 +36,7 @@ from pylons.decorators import jsonify from vcs.conf import settings from vcs.exceptions import RepositoryError, ChangesetDoesNotExistError, \ - EmptyRepositoryError, ImproperArchiveTypeError, VCSError + EmptyRepositoryError, ImproperArchiveTypeError, VCSError, NodeAlreadyExistsError from vcs.nodes import FileNode, NodeKind from vcs.utils import diffs as differ @@ -73,9 +73,9 @@ class FilesController(BaseRepoController return None url_ = url('files_add_home', repo_name=c.repo_name, - revision=0,f_path='') - add_new = '[%s]' % (url_,_('add new')) - h.flash(h.literal(_('There are no files yet %s' % add_new)), + revision=0, f_path='') + add_new = '[%s]' % (url_, _('add new')) + h.flash(h.literal(_('There are no files yet %s' % add_new)), category='warning') redirect(h.url('summary_home', repo_name=repo_name)) @@ -295,7 +295,7 @@ class FilesController(BaseRepoController @HasRepoPermissionAnyDecorator('repository.write', 'repository.admin') def add(self, repo_name, revision, f_path): r_post = request.POST - c.cs = self.__get_cs_or_redirect(revision, repo_name, + c.cs = self.__get_cs_or_redirect(revision, repo_name, redirect_after=False) if c.cs is None: c.cs = EmptyChangeset(alias=c.rhodecode_repo.alias) @@ -310,6 +310,12 @@ class FilesController(BaseRepoController % (f_path)) location = r_post.get('location') filename = r_post.get('filename') + file_obj = r_post.get('upload_file', None) + + if file_obj is not None and hasattr(file_obj, 'filename'): + filename = file_obj.filename + content = file_obj.file + node_path = os.path.join(location, filename) author = self.rhodecode_user.full_contact @@ -320,7 +326,7 @@ class FilesController(BaseRepoController if not filename: h.flash(_('No filename'), category='warning') return redirect(url('changeset_home', repo_name=c.repo_name, - revision='tip')) + revision='tip')) try: self.scm_model.create_node(repo=c.rhodecode_repo, @@ -330,7 +336,8 @@ class FilesController(BaseRepoController content=content, f_path=node_path) h.flash(_('Successfully committed to %s' % node_path), category='success') - + except NodeAlreadyExistsError, e: + h.flash(_(e), category='error') except Exception: log.error(traceback.format_exc()) h.flash(_('Error occurred during commit'), category='error')