First tests
This commit is contained in:
43
app.rb
43
app.rb
@@ -1185,6 +1185,49 @@ get "/prjgitbld/:id/:git_id" do
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
get "/prjdelete/:id" do
|
||||||
|
prj = ProjectsActions.new(cfg.get_projects_path, db)
|
||||||
|
if prj.path.nil?
|
||||||
|
print_error_page(503, "Путь к проектам не существует")
|
||||||
|
else
|
||||||
|
prj_info = prj.get_project(params["id"])
|
||||||
|
if prj_info.nil?
|
||||||
|
print_error_page(503, "Путь к проектам не существует")
|
||||||
|
else
|
||||||
|
@page_name = "Удалить проект #{prj_info[:projname]} "
|
||||||
|
@proj_name = prj_info[:projname]
|
||||||
|
@proj_id = params["id"]
|
||||||
|
|
||||||
|
erb :deleteprj
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
post "/prjdelete/:id" do
|
||||||
|
prj = ProjectsActions.new(cfg.get_projects_path, db)
|
||||||
|
if prj.path.nil?
|
||||||
|
print_error_page(503, "Путь к проектам не существует")
|
||||||
|
else
|
||||||
|
prj_info = prj.get_project(params["id"])
|
||||||
|
if prj_info.nil?
|
||||||
|
print_error_page(503, "Путь к проектам не существует")
|
||||||
|
else
|
||||||
|
git_info = repo.get_repo_short_info_by_id(params["git_id"].to_i)
|
||||||
|
if params["cancel"].nil? && params["delete"] == "delete" && !params["isdelete"].nil?
|
||||||
|
err = prj.delete_project(params["id"])
|
||||||
|
unless err.nil?
|
||||||
|
session[:prj_modal_info] = "Ошибка удаления git репозитория из проекта"
|
||||||
|
session[:prj_modal_text] = err
|
||||||
|
redirect "/prjedit/#{params["id"]}"
|
||||||
|
else
|
||||||
|
redirect "/projs"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
redirect "/prjedit/#{params["id"]}"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
not_found do
|
not_found do
|
||||||
status 404
|
status 404
|
||||||
@page_name = "Кто-то потерялся"
|
@page_name = "Кто-то потерялся"
|
||||||
|
|||||||
@@ -307,7 +307,7 @@ class DBase
|
|||||||
end
|
end
|
||||||
|
|
||||||
def get_builds()
|
def get_builds()
|
||||||
$DDB["select t1.id as buildid, t1.create_at as createat, t1.result as state, t2.reponame as reponame, t2.id as gitid, t3.id as projid, t3.projname as prjname, count(*) as pkgcnt from buildtask as t1 join repos as t2 on t1.repo_id = t2.id join projects as t3 on t1.proj_id = t3.id join build_rpm as t4 on t4.build_id = t1.id group by buildid, createat, state, reponame, projid, prjname, gitid order by t1.id"].all
|
$DDB["select t1.id as buildid, t1.create_at as createat, t1.result as state, t2.reponame as reponame, t2.id as gitid, t3.id as projid, t3.projname as prjname, count(*) as pkgcnt from buildtask as t1 join repos as t2 on t1.repo_id = t2.id join projects as t3 on t1.proj_id = t3.id left join build_rpm as t4 on t4.build_id = t1.id group by buildid, createat, state, reponame, projid, prjname, gitid order by t1.id"].all
|
||||||
end
|
end
|
||||||
|
|
||||||
def get_build_info(build_id)
|
def get_build_info(build_id)
|
||||||
@@ -328,19 +328,30 @@ class DBase
|
|||||||
end
|
end
|
||||||
|
|
||||||
def get_builds_for_project(prj_id)
|
def get_builds_for_project(prj_id)
|
||||||
$DDB["select t1.id as buildid, t1.create_at as createat, t1.result as state, t2.reponame as reponame, t2.id as gitid, t3.id as projid, t3.projname as prjname, count(*) as pkgcnt from buildtask as t1 join repos as t2 on t1.repo_id = t2.id join projects as t3 on t1.proj_id = t3.id join build_rpm as t4 on t4.build_id = t1.id where t1.proj_id = ? group by buildid, createat, state, reponame, projid, prjname, gitid order by t1.id", prj_id.to_i].all
|
$DDB["select t1.id as buildid, t1.create_at as createat, t1.result as state, t2.reponame as reponame, t2.id as gitid, t3.id as projid, t3.projname as prjname, count(*) as pkgcnt from buildtask as t1 join repos as t2 on t1.repo_id = t2.id join projects as t3 on t1.proj_id = t3.id left join build_rpm as t4 on t4.build_id = t1.id where t1.proj_id = ? group by buildid, createat, state, reponame, projid, prjname, gitid order by t1.id", prj_id.to_i].all
|
||||||
end
|
end
|
||||||
|
|
||||||
def get_builds_for_project_git(prj_id, git_id)
|
def get_builds_for_project_git(prj_id, git_id)
|
||||||
$DDB["select t1.id as buildid, t1.create_at as createat, t1.result as state, t2.reponame as reponame, t2.id as gitid, t3.id as projid, t3.projname as prjname, count(*) as pkgcnt from buildtask as t1 join repos as t2 on t1.repo_id = t2.id join projects as t3 on t1.proj_id = t3.id join build_rpm as t4 on t4.build_id = t1.id where t1.proj_id = ? and t1.repo_id = ? group by buildid, createat, state, reponame, projid, prjname, gitid order by t1.id", prj_id.to_i, git_id.to_i].all
|
$DDB["select t1.id as buildid, t1.create_at as createat, t1.result as state, t2.reponame as reponame, t2.id as gitid, t3.id as projid, t3.projname as prjname, count(*) as pkgcnt from buildtask as t1 join repos as t2 on t1.repo_id = t2.id join projects as t3 on t1.proj_id = t3.id left join build_rpm as t4 on t4.build_id = t1.id where t1.proj_id = ? and t1.repo_id = ? group by buildid, createat, state, reponame, projid, prjname, gitid order by t1.id", prj_id.to_i, git_id.to_i].all
|
||||||
end
|
|
||||||
|
|
||||||
def get_builds_for_project_git_rpm(prj_id, git_id)
|
|
||||||
$DDB["select t3.savepath, t3.signpath, t3.sign from buildtask as t1 join build_rpm as t2 on t2.build_id = t1.id join rpms as t3 on t3.id = t2.rpm_id where t1.proj_id = ? and t1.repo_id = ?", prj_id.to_i, git_id.to_i].all
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def delete_git_from_project(prj_id, git_id)
|
def delete_git_from_project(prj_id, git_id)
|
||||||
ReposProjects.where(proj_id: prj_id.to_i, repo_id: git_id.to_i).delete
|
ReposProjects.where(proj_id: prj_id.to_i, repo_id: git_id.to_i).delete
|
||||||
ProjectsReposSpec.where(proj_id: prj_id.to_i, repo_id: git_id.to_i).delete
|
ProjectsReposSpec.where(proj_id: prj_id.to_i, repo_id: git_id.to_i).delete
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def delete_project(prj_id)
|
||||||
|
ReposProjects.where(proj_id: prj_id.to_i).delete
|
||||||
|
ProjectsReposSpec.where(proj_id: prj_id.to_i).delete
|
||||||
|
builds = BuildTask.where(proj_id: prj_id.to_i)
|
||||||
|
build.each do |item|
|
||||||
|
rpms = BuildRpms.where(build_id: item[:id])
|
||||||
|
Rpms.where(id: rpms[:rpm_id]).delete
|
||||||
|
end
|
||||||
|
BuildTask.where(proj_id: prj_id.to_i).delete
|
||||||
|
end
|
||||||
|
|
||||||
|
def projects_with_current_as_link(prj_id)
|
||||||
|
ProjectsProjects.where(proj_id_repository: prj_id.to_i).all
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -333,6 +333,7 @@ class ProjectsActions
|
|||||||
if active_build
|
if active_build
|
||||||
@error = "Нельзя удалить git репозиторий с незавершенными сборками"
|
@error = "Нельзя удалить git репозиторий с незавершенными сборками"
|
||||||
else
|
else
|
||||||
|
proj_path = get_project_path(prj_id)
|
||||||
git_name = @db.get_repo_info_by_id(git_id)
|
git_name = @db.get_repo_info_by_id(git_id)
|
||||||
git_source = File.join(proj_path, PROJECTS_STRUCTURE[:SRC], git_name[:reponame])
|
git_source = File.join(proj_path, PROJECTS_STRUCTURE[:SRC], git_name[:reponame])
|
||||||
FileUtils.rm_rf(git_source, secure: true)
|
FileUtils.rm_rf(git_source, secure: true)
|
||||||
@@ -340,4 +341,29 @@ class ProjectsActions
|
|||||||
end
|
end
|
||||||
@error
|
@error
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def delete_project(prj_id)
|
||||||
|
@error = nil
|
||||||
|
builds_lst = db.get_builds_for_project(prj_id)
|
||||||
|
active_build = false
|
||||||
|
builds_lst.each do |item|
|
||||||
|
if item[:state] == 0
|
||||||
|
active_build = true
|
||||||
|
break
|
||||||
|
end
|
||||||
|
end
|
||||||
|
if active_build
|
||||||
|
@error = "Нельзя удалить git репозиторий с незавершенными сборками"
|
||||||
|
else
|
||||||
|
linked = @db.projects_with_current_as_link(prj_id)
|
||||||
|
if linked.nil?
|
||||||
|
proj_path = get_project_path(prj_id)
|
||||||
|
FileUtils.rm_rf(proj_path, secure: true)
|
||||||
|
@db.delete_project(prj_id, git_id)
|
||||||
|
else
|
||||||
|
@error = "На текущий проект ссылаются другие проекты. Удаление запрещено"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
@error
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
18
views/deleteprj.erb
Normal file
18
views/deleteprj.erb
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
<%= erb :header %>
|
||||||
|
<div class="container">
|
||||||
|
<h2 class="text-center">Удаление проекта <%= @proj_name %></h2>
|
||||||
|
<form action="/prjdelete/<%= ERB::Util.url_encode(@proj_id) %>" method="post">
|
||||||
|
<div class="form-check form-switch text-center pb-3">
|
||||||
|
<input class="form-check-input" type="checkbox" role="switch" id="isdelete" name="isdelete">
|
||||||
|
<label class="form-check-label" for="isdelete">
|
||||||
|
Вы уверены, что хотите удалить данный проект?<br />
|
||||||
|
Все репозитории проекта и сборки будут удалены, действие не подлежит отмене.
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
<div class="mb-3 text-center">
|
||||||
|
<button type="submit" class="btn btn-primary" name="cancel" value="cancel">Отменить</button>
|
||||||
|
<button type="submit" class="btn btn-danger" name="delete" value="delete">Удалить</button>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
<%= erb :footer %>
|
||||||
Reference in New Issue
Block a user