diff --git a/static/websiteFunctions/websiteFunctions.js b/static/websiteFunctions/websiteFunctions.js index 97ab29fdf..f164d3deb 100644 --- a/static/websiteFunctions/websiteFunctions.js +++ b/static/websiteFunctions/websiteFunctions.js @@ -5974,8 +5974,15 @@ app.controller('manageGIT', function ($scope, $http, $timeout, $window) { }; + var changeBranch = 0; + $scope.changeBranch = function () { + if(changeBranch === 1){ + changeBranch = 0; + return 0; + } + $scope.loadingSticks = false; $("#showStatus").modal(); @@ -6038,6 +6045,7 @@ app.controller('manageGIT', function ($scope, $http, $timeout, $window) { $scope.cyberpanelLoading = false; $scope.commandStatus = ""; $scope.statusBox = false; + changeBranch = 1; url = "/websites/createNewBranch"; @@ -6531,11 +6539,13 @@ app.controller('manageGIT', function ($scope, $http, $timeout, $window) { }; var currentComit; + var fetchFileCheck = 0; $scope.fetchFiles = function (commit) { currentComit = commit; $scope.cyberpanelLoading = false; + fetchFileCheck = 1; url = "/websites/fetchFiles"; @@ -6590,13 +6600,17 @@ app.controller('manageGIT', function ($scope, $http, $timeout, $window) { $scope.fileStatus = true; $scope.fetchChangesInFile = function () { + $scope.fileStatus = true; + if(fetchFileCheck === 1){ + fetchFileCheck = 0; + return 0; + } $scope.cyberpanelLoading = false; $scope.currentSelectedFile = $scope.changeFile; url = "/websites/fetchChangesInFile"; - var data = { domain: $("#domain").text(), folder: $scope.folder, @@ -6623,14 +6637,13 @@ app.controller('manageGIT', function ($scope, $http, $timeout, $window) { $scope.fileStatus = false; document.getElementById("fileChangedContent").innerHTML = response.data.fileChangedContent; } else { + $scope.fileStatus = true; new PNotify({ title: 'Operation Failed!', text: response.data.error_message, type: 'error' }); } - - } function cantLoadInitialDatas(response) { diff --git a/websiteFunctions/static/websiteFunctions/websiteFunctions.js b/websiteFunctions/static/websiteFunctions/websiteFunctions.js index 97ab29fdf..f164d3deb 100755 --- a/websiteFunctions/static/websiteFunctions/websiteFunctions.js +++ b/websiteFunctions/static/websiteFunctions/websiteFunctions.js @@ -5974,8 +5974,15 @@ app.controller('manageGIT', function ($scope, $http, $timeout, $window) { }; + var changeBranch = 0; + $scope.changeBranch = function () { + if(changeBranch === 1){ + changeBranch = 0; + return 0; + } + $scope.loadingSticks = false; $("#showStatus").modal(); @@ -6038,6 +6045,7 @@ app.controller('manageGIT', function ($scope, $http, $timeout, $window) { $scope.cyberpanelLoading = false; $scope.commandStatus = ""; $scope.statusBox = false; + changeBranch = 1; url = "/websites/createNewBranch"; @@ -6531,11 +6539,13 @@ app.controller('manageGIT', function ($scope, $http, $timeout, $window) { }; var currentComit; + var fetchFileCheck = 0; $scope.fetchFiles = function (commit) { currentComit = commit; $scope.cyberpanelLoading = false; + fetchFileCheck = 1; url = "/websites/fetchFiles"; @@ -6590,13 +6600,17 @@ app.controller('manageGIT', function ($scope, $http, $timeout, $window) { $scope.fileStatus = true; $scope.fetchChangesInFile = function () { + $scope.fileStatus = true; + if(fetchFileCheck === 1){ + fetchFileCheck = 0; + return 0; + } $scope.cyberpanelLoading = false; $scope.currentSelectedFile = $scope.changeFile; url = "/websites/fetchChangesInFile"; - var data = { domain: $("#domain").text(), folder: $scope.folder, @@ -6623,14 +6637,13 @@ app.controller('manageGIT', function ($scope, $http, $timeout, $window) { $scope.fileStatus = false; document.getElementById("fileChangedContent").innerHTML = response.data.fileChangedContent; } else { + $scope.fileStatus = true; new PNotify({ title: 'Operation Failed!', text: response.data.error_message, type: 'error' }); } - - } function cantLoadInitialDatas(response) { diff --git a/websiteFunctions/templates/websiteFunctions/manageGIT.html b/websiteFunctions/templates/websiteFunctions/manageGIT.html index f1ec7fde5..bd76f3491 100755 --- a/websiteFunctions/templates/websiteFunctions/manageGIT.html +++ b/websiteFunctions/templates/websiteFunctions/manageGIT.html @@ -674,8 +674,7 @@ -
-
+
@@ -691,7 +690,6 @@ - diff --git a/websiteFunctions/website.py b/websiteFunctions/website.py index 982f8be57..ca6c7198b 100755 --- a/websiteFunctions/website.py +++ b/websiteFunctions/website.py @@ -2941,14 +2941,14 @@ StrictHostKeyChecking no if ProcessUtilities.outputExecutioner(command, self.externalApp).find('No such file or directory') > -1: command = 'cat /home/%s/.ssh/%s.pub' % (self.domain, website.externalApp) - deploymentKey = ProcessUtilities.outputExecutioner(command, website.externalApp) + deploymentKey = ProcessUtilities.outputExecutioner(command) if deploymentKey.find('No such file or directory') > -1: command = "ssh-keygen -f /home/%s/.ssh/%s -t rsa -N ''" % (self.domain, website.externalApp) - ProcessUtilities.executioner(command, website.externalApp) + ProcessUtilities.executioner(command) command = 'cat /home/%s/.ssh/%s.pub' % (self.domain, website.externalApp) - deploymentKey = ProcessUtilities.outputExecutioner(command, website.externalApp) + deploymentKey = ProcessUtilities.outputExecutioner(command) home = 0 if self.folder == '/home/%s/public_html' % (self.domain): @@ -2962,24 +2962,24 @@ StrictHostKeyChecking no ## Find git branches command = 'git -C %s branch' % (self.folder) - branches = ProcessUtilities.outputExecutioner(command, self.externalApp).split('\n')[:-1] + branches = ProcessUtilities.outputExecutioner(command).split('\n')[:-1] ## Fetch key command = 'cat /home/%s/.ssh/%s.pub' % (self.domain, website.externalApp) - deploymentKey = ProcessUtilities.outputExecutioner(command, website.externalApp) + deploymentKey = ProcessUtilities.outputExecutioner(command) if deploymentKey.find('No such file or directory') > -1: command = "ssh-keygen -f /home/%s/.ssh/%s -t rsa -N ''" % (self.domain, website.externalApp) - ProcessUtilities.executioner(command, website.externalApp) + ProcessUtilities.executioner(command) command = 'cat /home/%s/.ssh/%s.pub' % (self.domain, website.externalApp) - deploymentKey = ProcessUtilities.outputExecutioner(command, website.externalApp) + deploymentKey = ProcessUtilities.outputExecutioner(command) ## Find Remote if any command = 'git -C %s remote -v' % (self.folder) - remoteResult = ProcessUtilities.outputExecutioner(command, self.externalApp) + remoteResult = ProcessUtilities.outputExecutioner(command ) remote = 1 if remoteResult.find('origin') == -1: @@ -2989,7 +2989,7 @@ StrictHostKeyChecking no ## Find Total commits on current branch command = 'git -C %s rev-list --count HEAD' % (self.folder) - totalCommits = ProcessUtilities.outputExecutioner(command, self.externalApp) + totalCommits = ProcessUtilities.outputExecutioner(command ) if totalCommits.find('fatal') > -1: totalCommits = '0' @@ -3029,10 +3029,20 @@ StrictHostKeyChecking no else: return ACLManager.loadErrorJson() + website = Websites.objects.get(domain=self.domain) + command = 'git -C %s init' % (self.folder) - result = ProcessUtilities.outputExecutioner(command, self.externalApp) + result = ProcessUtilities.outputExecutioner(command ) if result.find('Initialized empty Git repository in') > -1: + + command = 'git -C %s config --local user.email %s' % (self.folder, website.adminEmail) + ProcessUtilities.executioner(command ) + + command = 'git -C %s config --local user.name "%s %s"' % ( + self.folder, website.admin.firstName, website.admin.lastName) + ProcessUtilities.executioner(command ) + data_ret = {'status': 1} json_data = json.dumps(data_ret) return HttpResponse(json_data) @@ -3087,12 +3097,12 @@ StrictHostKeyChecking no else: command = 'git -C %s remote set-url origin git@%s:%s/%s.git' % (self.folder, self.gitHost, self.gitUsername, self.gitReponame) - possibleError = ProcessUtilities.outputExecutioner(command, self.externalApp) + possibleError = ProcessUtilities.outputExecutioner(command ) ## Check if set correctly. command = 'git -C %s remote -v' % (self.folder) - remoteResult = ProcessUtilities.outputExecutioner(command, self.externalApp) + remoteResult = ProcessUtilities.outputExecutioner(command ) if remoteResult.find(self.gitUsername) > -1: data_ret = {'status': 1} @@ -3135,7 +3145,7 @@ StrictHostKeyChecking no return HttpResponse(json_data) command = 'git -C %s checkout %s' % (self.folder, self.branchName.strip(' ')) - commandStatus = ProcessUtilities.outputExecutioner(command, self.externalApp) + commandStatus = ProcessUtilities.outputExecutioner(command ) if commandStatus.find('Switched to branch') > -1: data_ret = {'status': 1, 'commandStatus': commandStatus + 'Refreshing page in 3 seconds..'} @@ -3172,7 +3182,7 @@ StrictHostKeyChecking no return ACLManager.loadErrorJson() command = 'git -C %s checkout -b "%s"' % (self.folder, self.newBranchName) - commandStatus = ProcessUtilities.outputExecutioner(command, self.externalApp) + commandStatus = ProcessUtilities.outputExecutioner(command ) if commandStatus.find(self.newBranchName) > -1: data_ret = {'status': 1, 'commandStatus': commandStatus} @@ -3211,10 +3221,10 @@ StrictHostKeyChecking no ## Check if remote exists command = 'git -C %s add -A' % (self.folder) - ProcessUtilities.outputExecutioner(command, self.externalApp) + ProcessUtilities.outputExecutioner(command ) command = 'git -C %s commit -m "%s"' % (self.folder, self.commitMessage) - commandStatus = ProcessUtilities.outputExecutioner(command, self.externalApp) + commandStatus = ProcessUtilities.outputExecutioner(command ) if commandStatus.find('nothing to commit') == -1: data_ret = {'status': 1, 'commandStatus': commandStatus} @@ -3254,9 +3264,9 @@ StrictHostKeyChecking no externalApp = Websites.objects.get(domain=self.domain).externalApp - command = 'git -C %s config --local core.sshCommand "ssh -i /home/%s/.ssh/%s"' % ( + command = 'git -C %s config --local core.sshCommand "ssh -i /home/%s/.ssh/%s -o "StrictHostKeyChecking=no""' % ( self.folder, self.domain, externalApp) - ProcessUtilities.executioner(command, self.externalApp) + ProcessUtilities.executioner(command ) ## Check if remote exists @@ -3301,21 +3311,26 @@ StrictHostKeyChecking no externalApp = Websites.objects.get(domain=self.domain).externalApp - command = 'git -C %s config --local core.sshCommand "ssh -i /home/%s/.ssh/%s"' % ( + command = 'git -C %s config --local core.sshCommand "ssh -i /home/%s/.ssh/%s -o "StrictHostKeyChecking=no""' % ( self.folder, self.domain, externalApp) - ProcessUtilities.executioner(command, self.externalApp) + ProcessUtilities.executioner(command ) ## command = 'git -C %s push' % (self.folder) - commandStatus = ProcessUtilities.outputExecutioner(command, self.externalApp) + commandStatus = ProcessUtilities.outputExecutioner(command ) if commandStatus.find('has no upstream branch') > -1: command = 'git -C %s rev-parse --abbrev-ref HEAD' % (self.folder) - currentBranch = ProcessUtilities.outputExecutioner(command, self.externalApp).rstrip('\n') + currentBranch = ProcessUtilities.outputExecutioner(command ).rstrip('\n') + + if currentBranch.find('fatal: ambiguous argument') > -1: + data_ret = {'status': 0, 'error_message': 'You need to commit first.', 'commandStatus': 'You need to commit first.'} + json_data = json.dumps(data_ret) + return HttpResponse(json_data) command = 'git -C %s push --set-upstream origin %s' % (self.folder, currentBranch) - commandStatus = ProcessUtilities.outputExecutioner(command, self.externalApp) + commandStatus = ProcessUtilities.outputExecutioner(command ) if commandStatus.find('Everything up-to-date') == -1 and commandStatus.find('rejected') == -1: data_ret = {'status': 1, 'commandStatus': commandStatus} @@ -3366,9 +3381,9 @@ StrictHostKeyChecking no ## Set defauly key - externalApp = Websites.objects.get(domain=self.domain).externalApp + website = Websites.objects.get(domain=self.domain) - command = 'git config --global core.sshCommand "ssh -i /home/%s/.ssh/%s -o "StrictHostKeyChecking=no""' % (self.domain, externalApp) + command = 'git config --global core.sshCommand "ssh -i /home/%s/.ssh/%s -o "StrictHostKeyChecking=no""' % (self.domain, website.externalApp) ProcessUtilities.executioner(command) ## @@ -3383,6 +3398,12 @@ StrictHostKeyChecking no fm = FileManager(None, None) fm.fixPermissions(self.domain) + command = 'git -C %s config --local user.email %s' % (self.folder, website.adminEmail) + ProcessUtilities.executioner(command) + + command = 'git -C %s config --local user.name "%s %s"' % (self.folder, website.admin.firstName, website.admin.lastName) + ProcessUtilities.executioner(command) + data_ret = {'status': 1, 'commandStatus': commandStatus} json_data = json.dumps(data_ret) return HttpResponse(json_data) @@ -3424,7 +3445,7 @@ StrictHostKeyChecking no return ACLManager.loadErrorJson() command = 'rm -rf %s/.git' % (self.folder) - ProcessUtilities.executioner(command, self.externalApp) + ProcessUtilities.executioner(command ) data_ret = {'status': 1} json_data = json.dumps(data_ret) @@ -3456,7 +3477,7 @@ StrictHostKeyChecking no return ACLManager.loadErrorJson() command = 'cat %s/.gitignore' % (self.folder) - gitIgnoreContent = ProcessUtilities.outputExecutioner(command, self.externalApp) + gitIgnoreContent = ProcessUtilities.outputExecutioner(command ) if gitIgnoreContent.find('No such file or directory') > -1: gitIgnoreContent = 'File is currently empty.' @@ -3542,7 +3563,7 @@ StrictHostKeyChecking no initCommand = """log --pretty=format:"%h|%s|%cn|%cd" -50""" command = 'git -C %s %s' % (self.folder, initCommand) - commits = ProcessUtilities.outputExecutioner(command, self.externalApp).split('\n') + commits = ProcessUtilities.outputExecutioner(command).split('\n') json_data = "[" checker = 0 @@ -3592,7 +3613,7 @@ StrictHostKeyChecking no return ACLManager.loadErrorJson() command = 'git -C %s diff-tree --no-commit-id --name-only -r %s' % (self.folder, self.commit) - files = ProcessUtilities.outputExecutioner(command, self.externalApp).split('\n') + files = ProcessUtilities.outputExecutioner(command).split('\n') data_ret = {'status': 1, 'files': files} json_data = json.dumps(data_ret) @@ -3625,18 +3646,24 @@ StrictHostKeyChecking no return ACLManager.loadErrorJson() command = 'git -C %s show %s -- %s/%s' % (self.folder, self.commit, self.folder, self.file.strip('\n').strip(' ')) - fileChangedContent = ProcessUtilities.outputExecutioner(command, self.externalApp).split('\n') - + fileChangedContent = ProcessUtilities.outputExecutioner(command).split('\n') + initialNumber = 0 ## Find initial line numbers + for items in fileChangedContent: + if len(items) == 0: + initialNumber = initialNumber + 1 + elif items[0] == '@': + break + else: + initialNumber = initialNumber + 1 - lineNumber = int(fileChangedContent[10].split('+')[1].split(',')[0]) + lineNumber = int(fileChangedContent[initialNumber].split('+')[1].split(',')[0]) fileLen = len(fileChangedContent) - finalConent = '' % ('#', fileChangedContent[10]) - - for i in range(11, fileLen-1): + finalConent = '' % ('#', fileChangedContent[initialNumber]) + for i in range(initialNumber + 1, fileLen-1): if fileChangedContent[i][0] == '@': lineNumber = int(fileChangedContent[i].split('+')[1].split(',')[0]) finalConent = finalConent + '' % ('#', fileChangedContent[i]) @@ -3644,22 +3671,25 @@ StrictHostKeyChecking no else: if fileChangedContent[i][0] == '+': - content = '

%s

' % (fileChangedContent[i]) + content = '

%s

' % (fileChangedContent[i].replace('<', "<").replace('>', ">")) finalConent = finalConent + '' % (str(lineNumber), content) lineNumber = lineNumber + 1 elif fileChangedContent[i][0] == '-': - content = '

%s

' % (fileChangedContent[i]) + content = '

%s

' % (fileChangedContent[i].replace('<', "<").replace('>', ">")) finalConent = finalConent + '' % (str(lineNumber), content) lineNumber = lineNumber + 1 else: - content = '

%s

' % (fileChangedContent[i]) + content = '

%s

' % (fileChangedContent[i].replace('<', "<").replace('>', ">")) finalConent = finalConent + '' % (str(lineNumber), content) lineNumber = lineNumber + 1 data_ret = {'status': 1, 'fileChangedContent': finalConent} json_data = json.dumps(data_ret) return HttpResponse(json_data) - + except IndexError: + data_ret = {'status': 0, 'error_message': 'Not a text file.'} + 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)
%s

%s

%s

%s

%s

%s

%s%s
%s%s
%s%s