Added deletion rpms
This commit is contained in:
170
app.rb
170
app.rb
@@ -419,6 +419,176 @@ get "/prjedit/:id" do
|
||||
end
|
||||
end
|
||||
|
||||
get "/prjclean/: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_descr = prj_info[:descr]
|
||||
@proj_id = prj_info[:id]
|
||||
@proj_public = prj_info[:public]
|
||||
@proj_tmpbuild = prj_info[:tmpstpbuild]
|
||||
|
||||
erb :prjclean1
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
post "/prjclean/: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
|
||||
if params["cancel"].nil? && params["delete"] == "delete" && !params["isclean"].nil?
|
||||
redirect "/prjclean_step2/#{params["id"]}"
|
||||
end
|
||||
redirect "/prjedit/#{params["id"]}"
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
get "/prjclean_step2/: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"])
|
||||
@page_name = prj_info[:projname]
|
||||
@proj_name = prj_info[:projname]
|
||||
@proj_id = prj_info[:id]
|
||||
filepath = ""
|
||||
proj_path = prj.get_project_repo(params["id"])
|
||||
f_path = File.join(proj_path, filepath)
|
||||
if File.exist?(f_path)
|
||||
erb :prjclean2
|
||||
else
|
||||
print_error_page(503, "Файл не существует")
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
post "/prjclean_step2/: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
|
||||
if params["cancel"].nil? && params["delete"] == "delete" && params["inputvernum"].to_i > 0
|
||||
numb = params["inputvernum"]
|
||||
redirect "/prjclean_step3/#{params["id"]}?numb=#{numb}"
|
||||
end
|
||||
redirect "/prjedit/#{params["id"]}"
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
get "/prjclean_step3/:id" do
|
||||
prj = ProjectsActions.new(cfg.get_projects_path, db)
|
||||
if prj.path.nil?
|
||||
print_error_page(503, "Путь к проектам не существует")
|
||||
else
|
||||
if params["numb"].to_i > 0
|
||||
prj_info = prj.get_project(params["id"])
|
||||
@page_name = prj_info[:projname]
|
||||
@proj_name = prj_info[:projname]
|
||||
@proj_descr = prj_info[:descr]
|
||||
@proj_id = prj_info[:id]
|
||||
filepath = ""
|
||||
proj_path = prj.get_project_repo(params["id"])
|
||||
f_path = File.join(proj_path, filepath)
|
||||
rpm_list_stay = []
|
||||
if File.exist?(f_path)
|
||||
rpm_list = get_rpms_list_full(f_path)
|
||||
repo = RepoManager.new(f_path)
|
||||
rpm_result_list = {}
|
||||
numb = params["numb"].to_i
|
||||
rpm_list.each do |item|
|
||||
f_name = File.basename item
|
||||
rpm_info = repo.get_rpm_info(item)
|
||||
if rpm_info[:error].nil?
|
||||
p_name = "#{rpm_info[:pkginfo].name}"
|
||||
if f_name =~ /\.src\.rpm$/
|
||||
p_name = "#{rpm_info[:pkginfo].name}_src"
|
||||
end
|
||||
if rpm_result_list[p_name].nil?
|
||||
rpm_result_list[p_name] = [[rpm_info[:pkginfo], item, rpm_info[:pkginfo].version]]
|
||||
else
|
||||
rpm_result_list[p_name] << [rpm_info[:pkginfo], item, rpm_info[:pkginfo].version]
|
||||
rpm_result_list[p_name].sort! do |a, b|
|
||||
if a[2] < b[2]
|
||||
1
|
||||
elsif a[2] > b[2]
|
||||
-1
|
||||
else
|
||||
a[2] <=> b[2]
|
||||
end
|
||||
end
|
||||
if rpm_result_list[p_name].length > numb
|
||||
rpm_result_list[p_name].pop
|
||||
end
|
||||
end
|
||||
else
|
||||
rpm_list_stay << item
|
||||
end
|
||||
|
||||
end
|
||||
rpm_result_list.each_pair do |k, v|
|
||||
v.each do |item|
|
||||
rpm_list_stay << item[1]
|
||||
end
|
||||
end
|
||||
|
||||
delete_rpm_list = rpm_list - rpm_list_stay
|
||||
@del_list = delete_rpm_list
|
||||
erb :prjclean3
|
||||
else
|
||||
print_error_page(503, "Файл не существует")
|
||||
end
|
||||
else
|
||||
print_error_page(503, "Число оставшихся пакетов должно быть более 0")
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
post "/prjclean_step3/: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
|
||||
if params["cancel"].nil? && params["delete"] == "delete" && params["prjrpmlst"].length > 0
|
||||
@page_name = prj_info[:projname]
|
||||
@proj_name = prj_info[:projname]
|
||||
@proj_descr = prj_info[:descr]
|
||||
@proj_id = prj_info[:id]
|
||||
params["prjrpmlst"].each do |item|
|
||||
File.unlink(item)
|
||||
end
|
||||
@rpm_list = params["prjrpmlst"]
|
||||
erb :prjclean3_post
|
||||
else
|
||||
redirect "/prjedit/#{params["id"]}"
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
post "/prjagit/:id" do
|
||||
prj = ProjectsActions.new(cfg.get_projects_path, db)
|
||||
if prj.path.nil?
|
||||
|
||||
Reference in New Issue
Block a user