Added work with snapshots. Part 2
This commit is contained in:
77
app.rb
77
app.rb
@@ -1590,9 +1590,16 @@ get "/prjshot/:id" do
|
||||
filepath = ""
|
||||
proj_path = prj.get_project_repo(params["id"])
|
||||
f_path = File.join(proj_path, filepath)
|
||||
@rpms_list = []
|
||||
if File.exist?(f_path)
|
||||
@snap_list = prj.get_snap_list(prj_info[:id])
|
||||
@rpms_list = [ "Снимок не выбран" ]
|
||||
unless params["snap"].nil?
|
||||
snap_shot = prj.get_project_snap(@proj_id, params["snap"])
|
||||
if File.exist?(snap_shot)
|
||||
@rpms_list = get_rpms_list(snap_shot)
|
||||
end
|
||||
end
|
||||
@rpms_list = [ "Снимок не выбран" ] if @rpms_list.length == 0
|
||||
erb :prjshot1
|
||||
else
|
||||
print_error_page(503, "Репозиторий не существует")
|
||||
@@ -1705,6 +1712,74 @@ post "/prjsnap_delete/:id" do
|
||||
end
|
||||
end
|
||||
|
||||
get "/prjsnap_restore/: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_descr = prj_info[:descr]
|
||||
@proj_id = prj_info[:id]
|
||||
@snap_name = params["snap"]
|
||||
if @snap_name.nil?
|
||||
print_error_page(503, "Не указано имя снимка")
|
||||
else
|
||||
filepath = ""
|
||||
proj_path = prj.get_project_snap(params["id"], params["snap"])
|
||||
f_path = File.join(proj_path, filepath)
|
||||
if File.exist?(f_path)
|
||||
erb :prjsnap_restore
|
||||
else
|
||||
print_error_page(503, "Снимок не существует")
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
post "/prjsnap_restore/: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_descr = prj_info[:descr]
|
||||
@proj_id = prj_info[:id]
|
||||
@snap_name = params["snap"]
|
||||
if @snap_name.nil?
|
||||
print_error_page(503, "Не указано имя снимка")
|
||||
else
|
||||
filepath = ""
|
||||
proj_path = prj.get_project_snap(params["id"], params["snap"])
|
||||
f_path = File.join(proj_path, filepath)
|
||||
if File.exist?(f_path)
|
||||
if params["cancel"].nil? && params["restore"] == "restore" && !params["yes"].nil?
|
||||
prj.restore_snapshot(prj_info[:id], @snap_name)
|
||||
end
|
||||
redirect "/prjshot/#{params["id"]}"
|
||||
else
|
||||
print_error_page(503, "Снимок не существует")
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
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
|
||||
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
get "/sanitize" do
|
||||
#Подчистим гит проекты, которые есть в базе, но нет в файловой системе
|
||||
all_gits = db.get_gits
|
||||
|
||||
@@ -526,4 +526,14 @@ class ProjectsActions
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def restore_snapshot(id, snap)
|
||||
repo_path = get_project_repo(id)
|
||||
snap_path = get_project_snap(id, snap)
|
||||
|
||||
if Dir.exist?(repo_path) && Dir.exist?(snap_path)
|
||||
Dir.glob(File.join(repo_path, '*')).each { |file| File.unlink(file) if File.file?(file) || FileUtils.rm_rf(file) }
|
||||
FileUtils.cp_r(Dir.glob(File.join(snap_path, '*')), repo_path)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -11,9 +11,11 @@
|
||||
<tbody>
|
||||
<% @snap_list.each do |item| %>
|
||||
<tr>
|
||||
<td><a href="/prjsnap_info/<%= ERB::Util.url_encode(@proj_id) %>?snap=<%= ERB::Util.url_encode(item) %>"><%= item %></a></td>
|
||||
<td><a href="/prjshot/<%= ERB::Util.url_encode(@proj_id) %>?snap=<%= ERB::Util.url_encode(item) %>"><%= item %></a></td>
|
||||
<td><a href="/prjsnap_delete/<%= ERB::Util.url_encode(@proj_id) %>?snap=<%= ERB::Util.url_encode(item) %>" class="icon-link"><i
|
||||
class="bi bi-trash3"></i></a></td>
|
||||
<td><a href="/prjsnap_restore/<%= ERB::Util.url_encode(@proj_id) %>?snap=<%= ERB::Util.url_encode(item) %>" class="icon-link"><i
|
||||
class="bi bi-capslock"></i></a></td>
|
||||
</tr>
|
||||
<% end %>
|
||||
</tbody>
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
</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="create" value="create">Создать</button>
|
||||
<button type="submit" class="btn btn-success" name="create" value="create">Создать</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
18
views/prjsnap_restore.erb
Normal file
18
views/prjsnap_restore.erb
Normal file
@@ -0,0 +1,18 @@
|
||||
<%= erb :header %>
|
||||
<div class="container">
|
||||
<h2 class="text-center">Удаление сатрых версий пакетов проекта <%= @proj_name %></h2>
|
||||
<form action="/prjsnap_restore/<%= ERB::Util.url_encode(@proj_id) %>?snap=<%= ERB::Util.url_encode(@snap_name) %>" method="post">
|
||||
<div class="form-check form-switch text-center pb-3">
|
||||
<input class="form-check-input" type="checkbox" role="switch" id="yes" name="yes">
|
||||
<label class="form-check-label" for="yes">
|
||||
Вы уверены, что хотите восстановить пакеты из снимка <%= @snap_name %>?<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="restore" value="restore">Восстановить</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<%= erb :footer %>
|
||||
Reference in New Issue
Block a user