Add check for existing repo with the same name
This commit is contained in:
parent
834cb28d30
commit
c3b10c12bb
4 changed files with 24 additions and 6 deletions
|
@ -187,6 +187,11 @@ def create_repo_api():
|
||||||
|
|
||||||
namespace_name = owner.username
|
namespace_name = owner.username
|
||||||
repository_name = request.get_json()['repository']
|
repository_name = request.get_json()['repository']
|
||||||
|
|
||||||
|
existing = model.get_repository(namespace_name, repository_name)
|
||||||
|
if existing:
|
||||||
|
return make_response('Repository already exists', 400)
|
||||||
|
|
||||||
visibility = request.get_json()['visibility']
|
visibility = request.get_json()['visibility']
|
||||||
|
|
||||||
repo = model.create_repository(namespace_name, repository_name, owner,
|
repo = model.create_repository(namespace_name, repository_name, owner,
|
||||||
|
|
|
@ -179,10 +179,14 @@
|
||||||
color: #444 !important;
|
color: #444 !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.new-repo .new-header {
|
.new-repo .new-header span {
|
||||||
font-size: 22px;
|
font-size: 22px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.new-repo .new-header .popover {
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
|
||||||
.new-repo .new-header .repo-circle {
|
.new-repo .new-header .repo-circle {
|
||||||
margin-right: 14px;
|
margin-right: 14px;
|
||||||
}
|
}
|
||||||
|
@ -366,6 +370,10 @@
|
||||||
padding: 20px;
|
padding: 20px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.landing .popover {
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
|
||||||
.landing {
|
.landing {
|
||||||
color: white;
|
color: white;
|
||||||
|
|
||||||
|
|
|
@ -953,7 +953,7 @@ function V1Ctrl($scope, $location, UserService) {
|
||||||
}, true);
|
}, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
function NewRepoCtrl($scope, $location, $http, UserService, Restangular, PlanService) {
|
function NewRepoCtrl($scope, $location, $http, $timeout, UserService, Restangular, PlanService) {
|
||||||
$scope.$watch( function () { return UserService.currentUser(); }, function (currentUser) {
|
$scope.$watch( function () { return UserService.currentUser(); }, function (currentUser) {
|
||||||
$scope.user = currentUser;
|
$scope.user = currentUser;
|
||||||
}, true);
|
}, true);
|
||||||
|
@ -1069,6 +1069,8 @@ function NewRepoCtrl($scope, $location, $http, UserService, Restangular, PlanSer
|
||||||
};
|
};
|
||||||
|
|
||||||
$scope.createNewRepo = function() {
|
$scope.createNewRepo = function() {
|
||||||
|
$('#repoName').popover('hide');
|
||||||
|
|
||||||
var uploader = $('#file-drop')[0];
|
var uploader = $('#file-drop')[0];
|
||||||
if ($scope.repo.initialize && uploader.files.length < 1) {
|
if ($scope.repo.initialize && uploader.files.length < 1) {
|
||||||
$('#missingfileModal').modal();
|
$('#missingfileModal').modal();
|
||||||
|
@ -1096,9 +1098,12 @@ function NewRepoCtrl($scope, $location, $http, UserService, Restangular, PlanSer
|
||||||
|
|
||||||
// Otherwise, redirect to the repo page.
|
// Otherwise, redirect to the repo page.
|
||||||
$location.path('/repository/' + created.namespace + '/' + created.name);
|
$location.path('/repository/' + created.namespace + '/' + created.name);
|
||||||
}, function() {
|
}, function(result) {
|
||||||
$('#cannotcreateModal').modal();
|
|
||||||
$scope.creating = false;
|
$scope.creating = false;
|
||||||
|
$scope.createError = result.data;
|
||||||
|
$timeout(function() {
|
||||||
|
$('#repoName').popover('show');
|
||||||
|
});
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -20,7 +20,7 @@
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="container new-repo" ng-show="!user.anonymous && !creating && !uploading && !building">
|
<div class="container new-repo" ng-show="!user.anonymous && !creating && !uploading && !building">
|
||||||
<form method="post" name="newRepoForm" ng-submit="createNewRepo()">
|
<form method="post" name="newRepoForm" id="newRepoForm" ng-submit="createNewRepo()">
|
||||||
|
|
||||||
<!-- Header -->
|
<!-- Header -->
|
||||||
<div class="row">
|
<div class="row">
|
||||||
|
@ -29,7 +29,7 @@
|
||||||
<div class="section">
|
<div class="section">
|
||||||
<div class="new-header">
|
<div class="new-header">
|
||||||
<span class="repo-circle no-background" repo="repo"></span>
|
<span class="repo-circle no-background" repo="repo"></span>
|
||||||
<span style="color: #444;"> {{user.username}}</span> <span style="color: #ccc">/</span> <span class="name-container"><input id="repoName" name="repoName" type="text" class="form-control" placeholder="Repository Name" ng-model="repo.name" required autofocus></span>
|
<span style="color: #444;"> {{user.username}}</span> <span style="color: #ccc">/</span> <span class="name-container"><input id="repoName" name="repoName" type="text" class="form-control" placeholder="Repository Name" ng-model="repo.name" required autofocus data-trigger="manual" data-content="{{ createError }}" data-placement="right"></span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
Reference in a new issue