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 = ""
|
filepath = ""
|
||||||
proj_path = prj.get_project_repo(params["id"])
|
proj_path = prj.get_project_repo(params["id"])
|
||||||
f_path = File.join(proj_path, filepath)
|
f_path = File.join(proj_path, filepath)
|
||||||
|
@rpms_list = []
|
||||||
if File.exist?(f_path)
|
if File.exist?(f_path)
|
||||||
@snap_list = prj.get_snap_list(prj_info[:id])
|
@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
|
erb :prjshot1
|
||||||
else
|
else
|
||||||
print_error_page(503, "Репозиторий не существует")
|
print_error_page(503, "Репозиторий не существует")
|
||||||
@@ -1705,6 +1712,74 @@ post "/prjsnap_delete/:id" do
|
|||||||
end
|
end
|
||||||
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
|
get "/sanitize" do
|
||||||
#Подчистим гит проекты, которые есть в базе, но нет в файловой системе
|
#Подчистим гит проекты, которые есть в базе, но нет в файловой системе
|
||||||
all_gits = db.get_gits
|
all_gits = db.get_gits
|
||||||
|
|||||||
@@ -526,4 +526,14 @@ class ProjectsActions
|
|||||||
end
|
end
|
||||||
end
|
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
|
end
|
||||||
|
|||||||
@@ -11,9 +11,11 @@
|
|||||||
<tbody>
|
<tbody>
|
||||||
<% @snap_list.each do |item| %>
|
<% @snap_list.each do |item| %>
|
||||||
<tr>
|
<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
|
<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>
|
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>
|
</tr>
|
||||||
<% end %>
|
<% end %>
|
||||||
</tbody>
|
</tbody>
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="mb-3 text-center">
|
<div class="mb-3 text-center">
|
||||||
<button type="submit" class="btn btn-primary" name="cancel" value="cancel">Отменить</button>
|
<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>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</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