Add check for existing repo with the same name

This commit is contained in:
Joseph Schorr 2013-10-31 15:04:07 -04:00
parent 834cb28d30
commit c3b10c12bb
4 changed files with 24 additions and 6 deletions

View file

@ -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,

View file

@ -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;

View file

@ -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');
});
}); });
}; };

View file

@ -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>