student_gem 0.1.0 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/{checking_attr_writer.rb → lib/checking_attr_writer.rb} +2 -0
- data/{controller.rb → lib/controller.rb} +7 -1
- data/{data_list.rb → lib/data_list.rb} +3 -2
- data/{data_list_student_short.rb → lib/data_list_student_short.rb} +1 -0
- data/{data_table.rb → lib/data_table.rb} +1 -0
- data/{student.rb → lib/student.rb} +3 -1
- data/{student_ancestor.rb → lib/student_ancestor.rb} +1 -0
- data/{student_list.rb → lib/student_list.rb} +2 -1
- data/{student_short.rb → lib/student_short.rb} +1 -0
- data/{view.rb → lib/view.rb} +10 -1
- data/sql/ddl.sql +10 -0
- data/sql/dml.sql +51 -0
- metadata +13 -11
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: a702216837e16e05dd2c9d7db66ce027a78c5551c98ee81905045b0d57db3d29
|
|
4
|
+
data.tar.gz: 11ffbcf1a9f0d46a012942e6137b04d8cfe898c4097fcd895201602ee02befee
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 5d8e7cfeefc00b6fc1ec5c90171b82ef7a5791fbffbccafcd70e829dbb34aed351a8962085b38499dbd32696c836c7b1a616f207a9c368758094e0a2ea0fe38c
|
|
7
|
+
data.tar.gz: c90e74c115102570d70be9ff4760c68877acefb76db5c184d2399b2d95c2d62997c0f97190d93ac565210842d4bb62d7411aed6ec2edd572e5c44512002e5f87
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
# миксин, замещающий обычный сеттер на сеттер с валидацией
|
|
1
2
|
module CheckingAttrWriter
|
|
2
3
|
|
|
3
4
|
# переопределение сеттера для валидации
|
|
@@ -17,6 +18,7 @@ module CheckingAttrWriter
|
|
|
17
18
|
end
|
|
18
19
|
end
|
|
19
20
|
|
|
21
|
+
# переопределение аксессора для валидации
|
|
20
22
|
def attr_accessor(*attrs)
|
|
21
23
|
attr_reader *attrs
|
|
22
24
|
attr_writer *attrs
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
require_relative 'student_list.rb'
|
|
1
|
+
require_relative '../student_list.rb'
|
|
2
2
|
|
|
3
|
+
# общий интерфейс для всех контроллеров
|
|
3
4
|
class Student_list_controller
|
|
4
5
|
|
|
5
6
|
# общий для любого контроллера главного окна фрагмент конструктора
|
|
@@ -10,6 +11,8 @@ class Student_list_controller
|
|
|
10
11
|
|
|
11
12
|
end
|
|
12
13
|
|
|
14
|
+
|
|
15
|
+
# контроллер основного окна
|
|
13
16
|
class Main_window_controller < Student_list_controller
|
|
14
17
|
|
|
15
18
|
# константа числа строк на странице
|
|
@@ -126,6 +129,7 @@ class Main_window_controller < Student_list_controller
|
|
|
126
129
|
end
|
|
127
130
|
|
|
128
131
|
|
|
132
|
+
# интерфейс контроллера модального окна для стратегии
|
|
129
133
|
class Modal_window_controller < Student_list_controller
|
|
130
134
|
|
|
131
135
|
def create
|
|
@@ -159,9 +163,11 @@ class Modal_window_controller < Student_list_controller
|
|
|
159
163
|
end
|
|
160
164
|
end
|
|
161
165
|
|
|
166
|
+
# контроллер модального окна при вставке
|
|
162
167
|
class Insertion_controller < Modal_window_controller
|
|
163
168
|
end
|
|
164
169
|
|
|
170
|
+
# контроллер модального окна при изменении
|
|
165
171
|
class Updation_controller < Modal_window_controller
|
|
166
172
|
def fill_text_fields(id)
|
|
167
173
|
student = @student_list.get_student(id).to_h
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
require_relative 'data_table.rb'
|
|
1
|
+
require_relative '../data_table.rb'
|
|
2
2
|
|
|
3
|
+
# класс работы с массивом объектов определенного класса
|
|
3
4
|
class Data_list
|
|
4
5
|
|
|
5
6
|
# сеттер, учитывающий то, что атрибуты не могут меняться
|
|
@@ -62,9 +63,9 @@ class Data_list
|
|
|
62
63
|
end
|
|
63
64
|
|
|
64
65
|
|
|
65
|
-
# защищенный метод проверки атрибутов класса
|
|
66
66
|
protected
|
|
67
67
|
|
|
68
|
+
# защищенный метод проверки атрибутов класса
|
|
68
69
|
def check_names?(list)
|
|
69
70
|
true if list.empty?
|
|
70
71
|
unless self.class.private_method_defined?(:check_class_names)
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
require_relative 'student_ancestor.rb'
|
|
1
|
+
require_relative '../student_ancestor.rb'
|
|
2
2
|
require_relative 'checking_attr_writer.rb'
|
|
3
3
|
|
|
4
|
+
# класс студента с различными методами валидации его полей
|
|
4
5
|
class Student < StudentAncestor
|
|
5
6
|
|
|
6
7
|
# методы класса
|
|
@@ -96,6 +97,7 @@ class Student < StudentAncestor
|
|
|
96
97
|
str += "#{git.nil? ? "" : ", git - #{git}"}"
|
|
97
98
|
end
|
|
98
99
|
|
|
100
|
+
# полное содержимое объекта в виде Hash
|
|
99
101
|
def to_h
|
|
100
102
|
hash = {}
|
|
101
103
|
hash["last_name"] = @last_name
|
|
@@ -3,6 +3,7 @@ require 'logger'
|
|
|
3
3
|
require_relative 'student.rb'
|
|
4
4
|
require_relative 'data_list_student_short.rb'
|
|
5
5
|
|
|
6
|
+
# класс модели для работы с базой данных с использованием PostgreSQL
|
|
6
7
|
class Student_list
|
|
7
8
|
ACTION_LOGGER = Logger.new(File.join(__dir__, 'log', 'actions.log'))
|
|
8
9
|
ACTION_LOGGER.level = Logger::INFO
|
|
@@ -67,9 +68,9 @@ class Student_list
|
|
|
67
68
|
end
|
|
68
69
|
|
|
69
70
|
|
|
70
|
-
# подключение к базе данных и выполнение запроса
|
|
71
71
|
private
|
|
72
72
|
|
|
73
|
+
# подключение к базе данных и выполнение запроса
|
|
73
74
|
def sql(command, dbname: 'student_db', user: 'postgres', password: 'postgres', host: '127.0.0.1', port: 5432)
|
|
74
75
|
result = []
|
|
75
76
|
begin
|
data/{view.rb → lib/view.rb}
RENAMED
|
@@ -2,6 +2,7 @@ require 'fox16'
|
|
|
2
2
|
include Fox
|
|
3
3
|
require_relative 'controller.rb'
|
|
4
4
|
|
|
5
|
+
# интерфейс подписчика модели
|
|
5
6
|
module View
|
|
6
7
|
|
|
7
8
|
def set_table_params(column_names, whole_entities_count)
|
|
@@ -14,10 +15,14 @@ module View
|
|
|
14
15
|
|
|
15
16
|
end
|
|
16
17
|
|
|
18
|
+
|
|
19
|
+
# класс основного окна представления
|
|
17
20
|
class MainWindow < FXMainWindow
|
|
18
21
|
|
|
22
|
+
# подключение интерфейса подписчика
|
|
19
23
|
include View
|
|
20
24
|
|
|
25
|
+
# геттеры для обращения к полю количества страниц и кнопкам для обновления их состояния
|
|
21
26
|
attr_reader :page_count, :previous_button, :next_button, :insert_button, :update_button
|
|
22
27
|
|
|
23
28
|
# конструктор страницы и начальное заполнение данными
|
|
@@ -161,10 +166,13 @@ class MainWindow < FXMainWindow
|
|
|
161
166
|
end
|
|
162
167
|
|
|
163
168
|
|
|
169
|
+
# класс модельного окна для добавления и изменения записей
|
|
164
170
|
class ModalWindow < FXDialogBox
|
|
165
171
|
|
|
166
|
-
|
|
172
|
+
# геттеры для обращения к текстовым полям и к кнопке "Сохранить"
|
|
173
|
+
attr_reader :last_name, :first_name, :patronymic, :telegram, :email, :phone, :git, :ok_button
|
|
167
174
|
|
|
175
|
+
# конструктор модального окна
|
|
168
176
|
def initialize(owner, controller)
|
|
169
177
|
super(owner, "Создание студента", DECOR_TITLE | DECOR_BORDER, width: 400, height: 350)
|
|
170
178
|
@controller = controller
|
|
@@ -215,6 +223,7 @@ class ModalWindow < FXDialogBox
|
|
|
215
223
|
end
|
|
216
224
|
end
|
|
217
225
|
|
|
226
|
+
# делегация валидации контроллеру
|
|
218
227
|
def text_fields_onchange
|
|
219
228
|
@controller.text_fields_onchange
|
|
220
229
|
end
|
data/sql/ddl.sql
ADDED
data/sql/dml.sql
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
INSERT INTO student (first_name, last_name, patronymic, phone, telegram, email, git)
|
|
2
|
+
VALUES
|
|
3
|
+
('Виктор', 'Уваров', NULL, NULL, '@vik_uvarov', NULL, NULL),
|
|
4
|
+
('Мария', 'Федорова', NULL, NULL, NULL, NULL, NULL),
|
|
5
|
+
('Андрей', 'Харитонов', 'Николаевич', '+79998887766', NULL, NULL, 'https://github.com/andrey'),
|
|
6
|
+
('Людмила', 'Цветкова', NULL, NULL, '@lyuda', 'lyuda@mail.ru', NULL),
|
|
7
|
+
('Егор', 'Чистяков', 'Петрович', NULL, NULL, NULL, NULL),
|
|
8
|
+
('Наталья', 'Шестакова', NULL, NULL, NULL, NULL, 'https://github.com/natalia'),
|
|
9
|
+
('Борис', 'Щербаков', NULL, NULL, NULL, 'boris@example.org', NULL),
|
|
10
|
+
('Ирина', 'Эренбург', 'Андреевна', '+79209998877', '@irina_eren', NULL, 'https://github.com/irina'),
|
|
11
|
+
('Александр', 'Абрамов', 'Сергеевич', '+79151112233', '@a_abramov', 'a.abramov@mail.ru', 'https://github.com/aabramov'),
|
|
12
|
+
('Елена', 'Агафонова', NULL, NULL, '@elena_ag', 'agafonova.e@yandex.ru', NULL),
|
|
13
|
+
('Дмитрий', 'Белов', 'Игоревич', '+79262223344', NULL, NULL, 'https://github.com/dbelov'),
|
|
14
|
+
('Ольга', 'Бирюкова', 'Александровна',NULL, '@olga_bir', 'birykova@mail.ru', NULL),
|
|
15
|
+
('Максим', 'Воронов', NULL, '+79033334455', NULL, 'voronov.m@gmail.com', 'https://github.com/mvoronov'),
|
|
16
|
+
('Анна', 'Гаврилова', 'Петровна', NULL, '@anna_gav', NULL, NULL),
|
|
17
|
+
('Сергей', 'Гордеев', NULL, NULL, NULL, 'gordeev.s@mail.ru', 'https://github.com/sgordeev'),
|
|
18
|
+
('Татьяна', 'Дмитриева', 'Викторовна', '+79014445566', '@t_dmitrieva', NULL, NULL),
|
|
19
|
+
('Павел', 'Ефимов', NULL, NULL, NULL, NULL, 'https://github.com/pefimov'),
|
|
20
|
+
('Ксения', 'Жукова', 'Андреевна', '+79275556677', '@ksenia_zh', 'zhukova.k@yandex.ru', NULL),
|
|
21
|
+
('Никита', 'Зайцев', NULL, NULL, '@n_zaytsev', NULL, 'https://github.com/nzaytsev'),
|
|
22
|
+
('Вероника', 'Иванова', 'Олеговна', '+79186667788', NULL, 'ivanova.v@mail.ru', NULL),
|
|
23
|
+
('Артем', 'Кузнецов', NULL, NULL, NULL, 'kuznetsov.a@gmail.com', 'https://github.com/akuznetsov'),
|
|
24
|
+
('Полина', 'Лебедева', 'Дмитриевна', '+79297778899', '@polina_leb', NULL, NULL),
|
|
25
|
+
('Роман', 'Макаров', NULL, NULL, '@r_makarov', 'makarov.r@mail.ru', 'https://github.com/rmakarov'),
|
|
26
|
+
('Светлана', 'Никитина', 'Сергеевна', NULL, NULL, 'nikitina.s@yandex.ru', NULL),
|
|
27
|
+
('Илья', 'Орлов', NULL, '+79018889900', '@ilya_orlov', NULL, 'https://github.com/iorlov'),
|
|
28
|
+
('Юлия', 'Петрова', 'Максимовна', NULL, NULL, 'petrova.y@gmail.com', NULL),
|
|
29
|
+
('Глеб', 'Романов', NULL, '+79269990011', NULL, NULL, 'https://github.com/gromanov'),
|
|
30
|
+
('Алиса', 'Соколова', 'Игоревна', NULL, '@alisa_sok', 'sokolova.a@mail.ru', NULL),
|
|
31
|
+
('Владимир', 'Тимофеев', NULL, '+79031112244', NULL, 'timofeev.v@yandex.ru', 'https://github.com/vtimofeev'),
|
|
32
|
+
('Дарья', 'Устинова', 'Павловна', NULL, '@d_ustinova', NULL, NULL),
|
|
33
|
+
('Константин','Фомин', NULL, NULL, NULL, 'fomin.k@mail.ru', 'https://github.com/kfomin'),
|
|
34
|
+
('Марина', 'Хохлова', 'Алексеевна', '+79272223355', '@marina_kh', NULL, NULL),
|
|
35
|
+
('Алексей', 'Царев', NULL, NULL, NULL, NULL, 'https://github.com/atsarev'),
|
|
36
|
+
('Екатерина', 'Чернова', 'Викторовна', NULL, '@kate_chernova','chernova.e@gmail.com', NULL),
|
|
37
|
+
('Денис', 'Шилов', NULL, '+79013334466', NULL, 'shilov.d@mail.ru', 'https://github.com/dshilov'),
|
|
38
|
+
('Надежда', 'Щукина', 'Николаевна', NULL, NULL, NULL, NULL),
|
|
39
|
+
('Игорь', 'Юдин', NULL, '+79264445577', '@igor_yudin', 'yudin.i@yandex.ru', NULL),
|
|
40
|
+
('Анастасия', 'Яковлева', 'Сергеевна', NULL, '@nastya_yak', NULL, 'https://github.com/ayakovleva'),
|
|
41
|
+
('Петр', 'Андреев', NULL, NULL, NULL, 'andreev.p@gmail.com', NULL),
|
|
42
|
+
('Кристина', 'Богданова', 'Олеговна', '+79155556688', '@kristina_b', NULL, NULL),
|
|
43
|
+
('Василий', 'Ветров', NULL, NULL, NULL, NULL, 'https://github.com/vvetrov'),
|
|
44
|
+
('Евгения', 'Громова', 'Андреевна', NULL, '@evgenia_g', 'gromova.e@mail.ru', NULL),
|
|
45
|
+
('Антон', 'Дроздов', NULL, '+79087778899', NULL, 'drozdov.a@yandex.ru', 'https://github.com/adrozdov'),
|
|
46
|
+
('Лариса', 'Егорова', 'Петровна', NULL, NULL, NULL, NULL),
|
|
47
|
+
('Станислав', 'Жданов', NULL, NULL, '@stas_zhdanov', 'zhdanov.s@gmail.com', 'https://github.com/szhdanov'),
|
|
48
|
+
('Маргарита', 'Зимина', 'Ильинична', '+79219990022', NULL, NULL, NULL),
|
|
49
|
+
('Федор', 'Исаев', NULL, NULL, '@f_Isaev', 'isaev.f@mail.ru', NULL),
|
|
50
|
+
('Валентина', 'Крылова', 'Дмитриевна', NULL, NULL, 'krylova.v@yandex.ru', 'https://github.com/vkrylova')
|
|
51
|
+
;
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: student_gem
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.1.
|
|
4
|
+
version: 0.1.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- s0195920
|
|
@@ -55,16 +55,18 @@ executables: []
|
|
|
55
55
|
extensions: []
|
|
56
56
|
extra_rdoc_files: []
|
|
57
57
|
files:
|
|
58
|
-
- checking_attr_writer.rb
|
|
59
|
-
- controller.rb
|
|
60
|
-
- data_list.rb
|
|
61
|
-
- data_list_student_short.rb
|
|
62
|
-
- data_table.rb
|
|
63
|
-
- student.rb
|
|
64
|
-
- student_ancestor.rb
|
|
65
|
-
- student_list.rb
|
|
66
|
-
- student_short.rb
|
|
67
|
-
- view.rb
|
|
58
|
+
- lib/checking_attr_writer.rb
|
|
59
|
+
- lib/controller.rb
|
|
60
|
+
- lib/data_list.rb
|
|
61
|
+
- lib/data_list_student_short.rb
|
|
62
|
+
- lib/data_table.rb
|
|
63
|
+
- lib/student.rb
|
|
64
|
+
- lib/student_ancestor.rb
|
|
65
|
+
- lib/student_list.rb
|
|
66
|
+
- lib/student_short.rb
|
|
67
|
+
- lib/view.rb
|
|
68
|
+
- sql/ddl.sql
|
|
69
|
+
- sql/dml.sql
|
|
68
70
|
homepage: https://fpm-gitlab.kubsu.ru/design-patterns-tests/s0195920
|
|
69
71
|
licenses: []
|
|
70
72
|
metadata: {}
|