From e68e781759108138ed1466b7d3c96a4936c35429 Mon Sep 17 00:00:00 2001 From: alexey Date: Sun, 23 Feb 2025 23:59:45 +0300 Subject: [PATCH] Added projects. Part 1 --- app.rb | 26 ++++++++++++++++++++++---- classes/config.rb | 8 ++++++++ classes/db.rb | 10 ++++++++++ classes/projects.rb | 30 ++++++++++++++++++++++++++++++ locks/prjcreate | 0 views/index.erb | 2 +- views/prjlist.erb | 35 +++++++++++++++++++++++++++++++++++ 7 files changed, 106 insertions(+), 5 deletions(-) create mode 100644 classes/projects.rb create mode 100644 locks/prjcreate create mode 100644 views/prjlist.erb diff --git a/app.rb b/app.rb index e6df777..f830668 100644 --- a/app.rb +++ b/app.rb @@ -15,6 +15,7 @@ require_relative "classes/gitinfo" require_relative "classes/db" require_relative "classes/systeminfo" require_relative "classes/utilities" +require_relative "classes/projects" def print_error_page(error_status, error_meaasge) @page_name = "Ошибка выполнения" @@ -36,10 +37,16 @@ get "/" do if repo.path.nil? print_error_page(503, "Путь к репозиториям не существует") else - repo_data = repo.getrepos - @repos_number = repo_data.length - @rcp_number = db.get_recips.length - erb :index + prj = ProjectsActions.new(cfg.get_projects_path, db) + if prj.path.nil? + print_error_page(503, "Путь к проектам не существует") + else + repo_data = repo.getrepos + @repos_number = repo_data.length + @rcp_number = db.get_recips.length + @prj_number = prj.get_projects.length + erb :index + end end end @@ -283,6 +290,17 @@ get "/bldcfginfo" do end end +get "/projs" do + @page_name = "Список проектов" + prj = ProjectsActions.new(cfg.get_projects_path, db) + if prj.path.nil? + print_error_page(503, "Путь к проектам не существует") + else + @prj_list = prj.get_projects + erb :prjlist + end +end + not_found do status 404 @page_name = "Кто-то потерялся" diff --git a/classes/config.rb b/classes/config.rb index 0aa800c..17a1bae 100644 --- a/classes/config.rb +++ b/classes/config.rb @@ -54,4 +54,12 @@ class IniConfig [] end end + + def get_projects_path() + unless @config["projects"]["path"].nil? + @config["projects"]["path"].to_s + else + "projects" + end + end end diff --git a/classes/db.rb b/classes/db.rb index 77188d9..abf2939 100644 --- a/classes/db.rb +++ b/classes/db.rb @@ -12,6 +12,12 @@ end class RepocRecips < Sequel::Model(:repos_recips) end +class Projects < Sequel::Model(:projects) +end + +class ReposProjects < Sequel::Model(:repos_projects) +end + class DBase attr :error, :last_id @@ -108,4 +114,8 @@ class DBase RepocRecips.where(recip_id: id.to_i).delete Recips.where(id: id.to_i).delete end + + def proj_list + Projects.order(:id).all + end end diff --git a/classes/projects.rb b/classes/projects.rb new file mode 100644 index 0000000..fa2352e --- /dev/null +++ b/classes/projects.rb @@ -0,0 +1,30 @@ +require_relative "db" + +class ProjectsActions + attr :path, :error, :db + + def initialize(path, db) + @path = nil + @error = nil + @db = db + if File.absolute_path?(path) + if File.exist?(path) + @path = path + end + else + apath = File.realpath(path) + if File.exist?(apath) + @path = apath + end + end + end + + def get_projects + prj = [] + File.open("locks/prjcreate", "r") do |f| + f.flock(File::LOCK_SH) + prj = @db.proj_list + end + prj + end +end diff --git a/locks/prjcreate b/locks/prjcreate new file mode 100644 index 0000000..e69de29 diff --git a/views/index.erb b/views/index.erb index 4640a4c..4f05d54 100644 --- a/views/index.erb +++ b/views/index.erb @@ -8,7 +8,7 @@
-

5

+

<%= @prj_number %>

Проектов

diff --git a/views/prjlist.erb b/views/prjlist.erb new file mode 100644 index 0000000..e48a9e7 --- /dev/null +++ b/views/prjlist.erb @@ -0,0 +1,35 @@ +<%= erb :header %> +
+
+
+

Существующие проекты

+

Страница управления проектами

+
+ +
+
+
+
+
+ <% @prj_list.each do |item| %> +
+
+
+
<%= item[:projname] %>
+

<%= item[:descr] %>

+ Редактировать +
+
+
+ <% end %> +
+
+
+<%= erb :footer %> \ No newline at end of file