diff --git a/app.rb b/app.rb index ccc1766..4844c68 100644 --- a/app.rb +++ b/app.rb @@ -211,6 +211,10 @@ post "/recips/:rcp_id" do session[:rcpcreate_error] = @error_data redirect url("/recips/#{rcp_id}") else + session[:rcp_old_filepath] = nil + session[:rcp_old_description] = nil + session[:rcp_old_codedata] = nil + session[:rcp_old_gitlst] = nil redirect "/recips" end end @@ -265,6 +269,10 @@ post "/rcpcreate" do session[:rcpcreate_error] = @error_data redirect "/rcpcreate" else + session[:rcp_old_filepath] = nil + session[:rcp_old_description] = nil + session[:rcp_old_codedata] = nil + session[:rcp_old_gitlst] = nil redirect "/recips" end end @@ -316,6 +324,28 @@ get "/prjcreate" do erb :prjcrt end +post "/prjcreate" do + session[:prj_old_name] = params["projname"] + session[:prj_old_description] = params["description"] + session[:prj_old_list] = params["conflist"] + if params["projname"].nil? || params["description"].nil? || params["projname"].strip == "" || params["description"].strip == "" || params["conflist"].nil? || params["conflist"].strip == "" + session[:rcpcreate_error] = "Имя проекта, описание и окружение сборки не должны быть пустыми" + redirect "/prjcreate" + else + prj = ProjectsActions.new(cfg.get_projects_path, db) + result = prj.create_project(params["projname"], params["description"], params["conflist"]) + if result != 0 + session[:prjcreate_error] = prj.error + redirect "/prjcreate" + else + session[:prj_old_name] = nil + session[:prj_old_description] = nil + session[:prj_old_list] = nil + redirect "/projs" + end + end +end + not_found do status 404 @page_name = "Кто-то потерялся" diff --git a/classes/db.rb b/classes/db.rb index c1c463c..653885d 100644 --- a/classes/db.rb +++ b/classes/db.rb @@ -121,9 +121,9 @@ class DBase def proj_create(proj_name, proj_descr) @error = nil - data = Projects.where(projname: project_name).first + data = Projects.where(projname: proj_name).first if data.nil? - id = Projects.insert(projname: project_name, descr: description, public: 1) + id = Projects.insert(projname: proj_name, descr: proj_descr, public: 1) @last_id = id else @error = "Данный проект уже существует" diff --git a/classes/projects.rb b/classes/projects.rb index bdfe153..0187885 100644 --- a/classes/projects.rb +++ b/classes/projects.rb @@ -48,22 +48,27 @@ class ProjectsActions @error = "Проект с таким именем уже существует: #{project_name}" ret_val = 1 else - Dir.mkdir(fname) created = false - PROJECTS_STRUCTURE.each_pair do |key, value| - new_path = File.join(fname, value) - Dir.mkdir(new_path) - end - if File.exist?(configuration) - conf_path = File.join(@path, PROJECTS_STRUCTURE[:CONFIGS], project_name) - FileUtils.cp(configuration, conf_path) - @error = @db.proj_create(project_name, description) - if @error.nil? - created = true + begin + Dir.mkdir(fname) + PROJECTS_STRUCTURE.each_pair do |key, value| + new_path = File.join(fname, value) + Dir.mkdir(new_path) + end + if File.exist?(configuration) + conf_path = File.join(fname, PROJECTS_STRUCTURE[:CONFIGS], "#{project_name}.cfg") + FileUtils.cp(configuration, conf_path) + @error = @db.proj_create(project_name, description) + if @error.nil? + created = true + end + else + ret_val = 1 + @error = "Конфигурация #{configuration} не существует" end - else + rescue => e ret_val = 1 - @error = "Конфигурация #{configuration} не существует" + @error = e.message end unless created FileUtils.rm_rf(fname, secure: true) diff --git a/db/migrations/202502150000000_create.rb b/db/migrations/202502150000000_create.rb index dce80c3..2c190f9 100644 --- a/db/migrations/202502150000000_create.rb +++ b/db/migrations/202502150000000_create.rb @@ -14,6 +14,7 @@ Sequel.migration do primary_key :id String :projname String :descr, text: true + Integer :public Datetime :create_at, default: Sequel.lit("CURRENT_TIMESTAMP") end diff --git a/views/prjcrt.erb b/views/prjcrt.erb index 9ae8737..24a7db4 100644 --- a/views/prjcrt.erb +++ b/views/prjcrt.erb @@ -2,7 +2,7 @@ <% unless @error_data.nil? %>