gitPull and git push

This commit is contained in:
Usman Nasir
2020-03-10 21:04:57 +05:00
parent 2cc1e477fc
commit 3cd3025a3c
6 changed files with 763 additions and 6 deletions

View File

@@ -6146,6 +6146,116 @@ app.controller('manageGIT', function ($scope, $http, $timeout, $window) {
}
};
$scope.gitPull = function () {
$scope.loadingSticks = false;
$("#showStatus").modal();
url = "/websites/gitPull";
var data = {
domain: $("#domain").text(),
folder: $scope.folder,
};
var config = {
headers: {
'X-CSRFToken': getCookie('csrftoken')
}
};
$http.post(url, data, config).then(ListInitialDatas, cantLoadInitialDatas);
function ListInitialDatas(response) {
$scope.loadingSticks = true;
if (response.data.status === 1) {
new PNotify({
title: 'Success',
text: 'Changes applied.',
type: 'success'
});
$scope.commandStatus = response.data.commandStatus;
} else {
new PNotify({
title: 'Operation Failed!',
text: response.data.error_message,
type: 'error'
});
$scope.commandStatus = response.data.commandStatus;
}
}
function cantLoadInitialDatas(response) {
$scope.loadingSticks = true;
new PNotify({
title: 'Operation Failed!',
text: 'Could not connect to server, please refresh this page.',
type: 'error'
});
}
};
$scope.gitPush = function () {
$scope.loadingSticks = false;
$("#showStatus").modal();
url = "/websites/gitPush";
var data = {
domain: $("#domain").text(),
folder: $scope.folder,
};
var config = {
headers: {
'X-CSRFToken': getCookie('csrftoken')
}
};
$http.post(url, data, config).then(ListInitialDatas, cantLoadInitialDatas);
function ListInitialDatas(response) {
$scope.loadingSticks = true;
if (response.data.status === 1) {
new PNotify({
title: 'Success',
text: 'Changes applied.',
type: 'success'
});
$scope.commandStatus = response.data.commandStatus;
} else {
new PNotify({
title: 'Operation Failed!',
text: response.data.error_message,
type: 'error'
});
$scope.commandStatus = response.data.commandStatus;
}
}
function cantLoadInitialDatas(response) {
$scope.loadingSticks = true;
new PNotify({
title: 'Operation Failed!',
text: 'Could not connect to server, please refresh this page.',
type: 'error'
});
}
};
function getCreationStatus() {
url = "/websites/installWordpressStatus";

View File

@@ -83,7 +83,7 @@
<div class="modal-footer">
<button type="button"
class="btn btn-primary"
ng-click="createNewBranch()">Commit<img id="cyberpanelLoading"
ng-click="createNewBranch()">Create New Branch<img id="cyberpanelLoading"
src="/static/images/loading.gif"
style="display: none;">
</button>
@@ -138,7 +138,7 @@
<div class="modal-footer">
<button type="button"
class="btn btn-primary"
ng-click="commitChanges()">Create New Branch<img id="cyberpanelLoading"
ng-click="commitChanges()">Commit<img id="cyberpanelLoading"
src="/static/images/loading.gif"
style="display: none;">
</button>
@@ -151,11 +151,11 @@
</div>
</div>
<a href="#" class="btn btn-info">
<a ng-click="gitPull()" ng-disabled="remote==0" href="#" class="btn btn-info">
<input name="radio-toggle-1" type="radio">
Pull From Remote
</a>
<a href="#" class="btn btn-info">
<a ng-click="gitPush()" ng-disabled="remote==0" href="#" class="btn btn-info">
<input name="radio-toggle-1" type="radio">
Push To Remote
</a>

View File

@@ -126,6 +126,10 @@ urlpatterns = [
url(r'^changeGitBranch$', views.changeGitBranch, name='changeGitBranch'),
url(r'^createNewBranch$', views.createNewBranch, name='createNewBranch'),
url(r'^commitChanges$', views.commitChanges, name='commitChanges'),
url(r'^gitPull$', views.gitPull, name='gitPull'),
url(r'^gitPush$', views.gitPush, name='gitPush'),
## Catch all for domains
url(r'^(?P<domain>(.*))/(?P<childDomain>(.*))$', views.launchChild, name='launchChild'),
url(r'^(?P<domain>(.*))$', views.domain, name='domain'),

View File

@@ -771,5 +771,21 @@ def commitChanges(request):
userID = request.session['userID']
wm = WebsiteManager()
return wm.commitChanges(userID, json.loads(request.body))
except KeyError:
return redirect(loadLoginPage)
def gitPull(request):
try:
userID = request.session['userID']
wm = WebsiteManager()
return wm.gitPull(userID, json.loads(request.body))
except KeyError:
return redirect(loadLoginPage)
def gitPush(request):
try:
userID = request.session['userID']
wm = WebsiteManager()
return wm.gitPush(userID, json.loads(request.body))
except KeyError:
return redirect(loadLoginPage)

View File

@@ -3068,6 +3068,13 @@ StrictHostKeyChecking no
else:
return ACLManager.loadErrorJson()
### set default ssh key
externalApp = Websites.objects.get(domain=self.domain).externalApp
command = 'git -C %s config --local core.sshCommand "ssh -i /home/%s/.ssh/%s"' % (self.folder, self.domain, externalApp)
ProcessUtilities.executioner(command)
## Check if remote exists
command = 'git -C %s remote -v' % (self.folder)
@@ -3221,3 +3228,79 @@ StrictHostKeyChecking no
data_ret = {'status': 0, 'error_message': str(msg)}
json_data = json.dumps(data_ret)
return HttpResponse(json_data)
def gitPull(self, userID=None, data=None):
try:
currentACL = ACLManager.loadedACL(userID)
admin = Administrator.objects.get(pk=userID)
self.domain = data['domain']
self.folder = data['folder']
if ACLManager.checkOwnership(self.domain, admin, currentACL) == 1:
pass
else:
return ACLManager.loadErrorJson('status', 0)
if self.folderCheck():
pass
else:
return ACLManager.loadErrorJson()
## Check if remote exists
command = 'git -C %s pull' % (self.folder)
commandStatus = ProcessUtilities.outputExecutioner(command)
if commandStatus.find('Already up to date') == -1:
data_ret = {'status': 1, 'commandStatus': commandStatus}
json_data = json.dumps(data_ret)
return HttpResponse(json_data)
else:
data_ret = {'status': 0, 'error_message': 'Pull not required.', 'commandStatus': commandStatus}
json_data = json.dumps(data_ret)
return HttpResponse(json_data)
except BaseException as msg:
data_ret = {'status': 0, 'error_message': str(msg)}
json_data = json.dumps(data_ret)
return HttpResponse(json_data)
def gitPush(self, userID=None, data=None):
try:
currentACL = ACLManager.loadedACL(userID)
admin = Administrator.objects.get(pk=userID)
self.domain = data['domain']
self.folder = data['folder']
if ACLManager.checkOwnership(self.domain, admin, currentACL) == 1:
pass
else:
return ACLManager.loadErrorJson('status', 0)
if self.folderCheck():
pass
else:
return ACLManager.loadErrorJson()
command = 'git -C %s push -u origin master' % (self.folder)
commandStatus = ProcessUtilities.outputExecutioner(command)
if commandStatus.find('Everything up-to-date') == -1 and commandStatus.find('rejected') == -1:
data_ret = {'status': 1, 'commandStatus': commandStatus}
json_data = json.dumps(data_ret)
return HttpResponse(json_data)
else:
data_ret = {'status': 0, 'error_message': 'Push not required.', 'commandStatus': commandStatus}
json_data = json.dumps(data_ret)
return HttpResponse(json_data)
except BaseException as msg:
data_ret = {'status': 0, 'error_message': str(msg)}
json_data = json.dumps(data_ret)
return HttpResponse(json_data)