tramway-admin 1.19.0.2 → 1.20

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6bec6b6c92559c5bd1f19b768e8185ba179bd21a778922761d0ee583788f61d3
4
- data.tar.gz: 4172028dda60bf3b081791521d177c60cc9edccb3fb551e882e1315e84a1fa17
3
+ metadata.gz: 702d94df42264ec7071d530f1ebc90de8ac9aaf381509476b1cb0b3b4761bdfb
4
+ data.tar.gz: ba7ef0a0220664b4db23509cd29a445cc29c7c7ac39a6ab799a8fe43370fa38c
5
5
  SHA512:
6
- metadata.gz: 599b34cec359eb6215728bc1dcf1f4d0561447a2a3cfc7126d966002c77ad7cf65575118cd3a7f3f1f1706f513c09f497861732491f9b809cb9eec008c338b12
7
- data.tar.gz: 128488fd7c659f216ed11c8c4e7c52cd91c7d715d407db21300ce640609de88835440d5f36c914b79ec9c5276b49b809952dc4a824d9b7106824aae00cc0def8
6
+ metadata.gz: 007abdd45e940b99aca62a1b0ef3ec6106d9be2a039f2f4a426adb510edd6efb8915ddda257d6d0939edb672427982a6df36b637c7f90b11a7442a768a544dd7
7
+ data.tar.gz: 60e457aad9172456e90dc276588cd9b80179facd370441e550349c678eba13d108be043a4fa62e63ff2a96523e67a470b5ddd3af4c87e7d12d519b76dff85bf2
@@ -31,7 +31,9 @@ module Tramway
31
31
 
32
32
  def collections_counts
33
33
  @counts = decorator_class.collections.reduce({}) do |hash, collection|
34
- hash.merge! collection => model_class.active.send(collection).count
34
+ records = model_class.active.send(collection)
35
+ records = records.send "#{current_user.role}_scope", current_user.id unless current_user.role.admin?
36
+ hash.merge! collection => records.count
35
37
  end
36
38
  end
37
39
 
@@ -88,7 +90,8 @@ module Tramway
88
90
  end
89
91
 
90
92
  def available_models_given?
91
- ::Tramway::Admin.available_models.any? && params[:model].in?(::Tramway::Admin.available_models.map(&:to_s))
93
+ models = ::Tramway::Admin.available_models(role: current_user.role)
94
+ models.any? && params[:model].in?(models.map(&:to_s))
92
95
  end
93
96
 
94
97
  def singleton_models_given?
@@ -6,6 +6,7 @@ class Tramway::Admin::RecordsController < ::Tramway::Admin::ApplicationControlle
6
6
  records = model_class.active.order(id: :desc).send scope
7
7
  records = records.full_text_search params[:search] if params[:search]
8
8
  records = records.ransack(params[:filter]).result if params[:filter].present?
9
+ records = records.send "#{current_user.role}_scope", current_user.id unless current_user.role.admin?
9
10
  @records = decorator_class.decorate records.page params[:page]
10
11
  end
11
12
 
@@ -9,9 +9,9 @@
9
9
  .navbar-collapse.collapse#navbar
10
10
  - if signed_in?
11
11
  %ul.navbar-nav
12
- - ::Tramway::Admin.singleton_models_for(@application_engine || @application.name)&.each do |model|
12
+ - ::Tramway::Admin.singleton_models_for(@application_engine || @application.name, role: current_user.role)&.each do |model|
13
13
  = model_menu_item model: model, route: ::Tramway::Admin::Engine.routes.url_helpers.singleton_path(model: model)
14
- - ::Tramway::Admin.available_models_for(@application_engine || @application.name)&.each do |model|
14
+ - ::Tramway::Admin.available_models_for(@application_engine || @application.name, role: current_user.role)&.each do |model|
15
15
  = model_menu_item model: model, route: ::Tramway::Admin::Engine.routes.url_helpers.records_path(model: model, scope: decorator_class(model).collections.first)
16
16
  %ul.nav.navbar-nav.ml-auto
17
17
  - if signed_in?
data/lib/tramway/admin.rb CHANGED
@@ -1,6 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'tramway/admin/engine'
4
+ require 'tramway/admin/singleton_models'
5
+ require 'tramway/admin/records_models'
6
+ require 'tramway/admin/additional_buttons'
4
7
  require 'tramway/error'
5
8
 
6
9
  module Tramway
@@ -8,69 +11,10 @@ module Tramway
8
11
 
9
12
  module Admin
10
13
  class << self
11
- def set_available_models(*models, project:)
12
- @available_models ||= {}
13
- @available_models[project] ||= []
14
- @available_models[project] += models
15
- end
16
-
17
- def available_models_for(project)
18
- if project_is_engine?(project)
19
- get_models_by_key(@available_models, project) + engine_class(project).dependencies.map do |dependency|
20
- if @available_models[dependency].present?
21
- @available_models[dependency]
22
- else
23
- error = Tramway::Error.new(
24
- plugin: :admin,
25
- method: :available_models_for,
26
- message: "There is no dependency `#{dependency}` for plugin: #{project}. Please, check file `tramway-#{project}/lib/tramway/#{project}/#{project}.rb`"
27
- )
28
- raise error
29
- end
30
- end.flatten.compact
31
- else
32
- get_models_by_key(@available_models, project)
33
- end
34
- end
35
-
36
- def available_models
37
- if @available_models
38
- @available_models.values.flatten
39
- else
40
- error = Tramway::Error.new(plugin: :admin, method: :available_models, message: 'List of available_models is empty. You should add some of them using `::Tramway::Admin.set_available_models(*list_of_classes, project: :your_project_name)` in `config/initializers/tramway.rb`')
41
- raise error.message
42
- end
43
- end
44
-
45
- def set_singleton_models(*models, project:)
46
- @singleton_models ||= {}
47
- @singleton_models[project] ||= []
48
- @singleton_models[project] += models
49
- end
50
14
 
51
- def singleton_models_for(project)
52
- if project_is_engine?(project)
53
- get_models_by_key(@singleton_models, project) + engine_class(project).dependencies.map do |dependency|
54
- @singleton_models[dependency]
55
- end.flatten.compact
56
- else
57
- get_models_by_key(@singleton_models, project)
58
- end
59
- end
60
-
61
- def singleton_models
62
- @singleton_models&.values&.flatten || []
63
- end
64
-
65
- def set_additional_buttons(buttons, project:)
66
- @additional_buttons ||= {}
67
- @additional_buttons[project] ||= {}
68
- @additional_buttons[project].merge! buttons
69
- end
70
-
71
- def additional_buttons(view: nil, record: nil, project: nil)
72
- @additional_buttons&.dig record, view
73
- end
15
+ include ::Tramway::Admin::RecordsModels
16
+ include ::Tramway::Admin::SingletonModels
17
+ include ::Tramway::Admin::AdditionalButtons
74
18
 
75
19
  attr_reader :customized_admin_navbar
76
20
 
@@ -83,8 +27,8 @@ module Tramway
83
27
  engine_class(project)
84
28
  end
85
29
 
86
- def get_models_by_key(checked_models, project)
87
- checked_models && checked_models != [] && checked_models[project.to_sym] || []
30
+ def get_models_by_key(checked_models, project, role)
31
+ checked_models && checked_models != [] && checked_models[project][role] || []
88
32
  end
89
33
 
90
34
  def set_notificable_queries(**queries)
@@ -0,0 +1,11 @@
1
+ module Tramway::Admin::AdditionalButtons
2
+ def set_additional_buttons(buttons, project:)
3
+ @additional_buttons ||= {}
4
+ @additional_buttons[project] ||= {}
5
+ @additional_buttons[project].merge! buttons
6
+ end
7
+
8
+ def additional_buttons(view: nil, record: nil, project: nil)
9
+ @additional_buttons&.dig record, view
10
+ end
11
+ end
@@ -0,0 +1,39 @@
1
+ module Tramway::Admin::RecordsModels
2
+ def set_available_models(*models, project:, role: :admin)
3
+ @available_models ||= {}
4
+ @available_models[project] ||= {}
5
+ @available_models[project][role] ||= []
6
+ @available_models[project][role] += models
7
+ @available_models = @available_models.with_indifferent_access
8
+ end
9
+
10
+ def available_models_for(project, role: :admin)
11
+ models = get_models_by_key(@available_models, project, role)
12
+ if project_is_engine?(project)
13
+ models += engine_class(project).dependencies.map do |dependency|
14
+ if @available_models[dependency].present?
15
+ @available_models[dependency]
16
+ else
17
+ error = Tramway::Error.new(
18
+ plugin: :admin,
19
+ method: :available_models_for,
20
+ message: "There is no dependency `#{dependency}` for plugin: #{project}. Please, check file `tramway-#{project}/lib/tramway/#{project}/#{project}.rb`"
21
+ )
22
+ raise error
23
+ end
24
+ end.flatten.compact
25
+ end
26
+ models
27
+ end
28
+
29
+ def available_models(role:)
30
+ if @available_models
31
+ @available_models.map do |projects|
32
+ projects[1][role]
33
+ end.flatten
34
+ else
35
+ error = Tramway::Error.new(plugin: :admin, method: :available_models, message: 'List of available_models is empty. You should add some of them using `::Tramway::Admin.set_available_models(*list_of_classes, project: :your_project_name)` in `config/initializers/tramway.rb`')
36
+ raise error.message
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,22 @@
1
+ module Tramway::Admin::SingletonModels
2
+ def set_singleton_models(*models, project:, role: :admin)
3
+ @singleton_models ||= {}
4
+ @singleton_models[project] ||= {}
5
+ @singleton_models[project][role] ||= []
6
+ @singleton_models[project][role] += models
7
+ end
8
+
9
+ def singleton_models_for(project, role: :admin)
10
+ models = get_models_by_key(@singleton_models, project, role)
11
+ if project_is_engine?(project)
12
+ models += engine_class(project).dependencies.map do |dependency|
13
+ @singleton_models[dependency]
14
+ end.flatten.compact
15
+ end
16
+ models
17
+ end
18
+
19
+ def singleton_models
20
+ @singleton_models&.values&.flatten || []
21
+ end
22
+ end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Tramway
4
4
  module Admin
5
- VERSION = '1.19.0.2'
5
+ VERSION = '1.20'
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tramway-admin
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.19.0.2
4
+ version: '1.20'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Pavel Kalashnikov
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-01-17 00:00:00.000000000 Z
11
+ date: 2020-01-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bootstrap-kaminari-views
@@ -28,20 +28,20 @@ dependencies:
28
28
  name: copyright_mafa
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - "~>"
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
33
  version: 0.1.2
34
- - - ">="
34
+ - - "~>"
35
35
  - !ruby/object:Gem::Version
36
36
  version: 0.1.2
37
37
  type: :runtime
38
38
  prerelease: false
39
39
  version_requirements: !ruby/object:Gem::Requirement
40
40
  requirements:
41
- - - "~>"
41
+ - - ">="
42
42
  - !ruby/object:Gem::Version
43
43
  version: 0.1.2
44
- - - ">="
44
+ - - "~>"
45
45
  - !ruby/object:Gem::Version
46
46
  version: 0.1.2
47
47
  - !ruby/object:Gem::Dependency
@@ -68,20 +68,20 @@ dependencies:
68
68
  name: kaminari
69
69
  requirement: !ruby/object:Gem::Requirement
70
70
  requirements:
71
- - - "~>"
71
+ - - ">="
72
72
  - !ruby/object:Gem::Version
73
73
  version: 1.1.1
74
- - - ">="
74
+ - - "~>"
75
75
  - !ruby/object:Gem::Version
76
76
  version: 1.1.1
77
77
  type: :runtime
78
78
  prerelease: false
79
79
  version_requirements: !ruby/object:Gem::Requirement
80
80
  requirements:
81
- - - "~>"
81
+ - - ">="
82
82
  - !ruby/object:Gem::Version
83
83
  version: 1.1.1
84
- - - ">="
84
+ - - "~>"
85
85
  - !ruby/object:Gem::Version
86
86
  version: 1.1.1
87
87
  - !ruby/object:Gem::Dependency
@@ -116,20 +116,20 @@ dependencies:
116
116
  name: state_machine_buttons
117
117
  requirement: !ruby/object:Gem::Requirement
118
118
  requirements:
119
- - - "~>"
119
+ - - ">="
120
120
  - !ruby/object:Gem::Version
121
121
  version: 0.4.1
122
- - - ">="
122
+ - - "~>"
123
123
  - !ruby/object:Gem::Version
124
124
  version: 0.4.1
125
125
  type: :runtime
126
126
  prerelease: false
127
127
  version_requirements: !ruby/object:Gem::Requirement
128
128
  requirements:
129
- - - "~>"
129
+ - - ">="
130
130
  - !ruby/object:Gem::Version
131
131
  version: 0.4.1
132
- - - ">="
132
+ - - "~>"
133
133
  - !ruby/object:Gem::Version
134
134
  version: 0.4.1
135
135
  description: Engine for admin
@@ -268,8 +268,11 @@ files:
268
268
  - config/routes.rb
269
269
  - lib/tasks/tramway/admin_tasks.rake
270
270
  - lib/tramway/admin.rb
271
+ - lib/tramway/admin/additional_buttons.rb
271
272
  - lib/tramway/admin/engine.rb
272
273
  - lib/tramway/admin/record_routes_helper.rb
274
+ - lib/tramway/admin/records_models.rb
275
+ - lib/tramway/admin/singleton_models.rb
273
276
  - lib/tramway/admin/version.rb
274
277
  homepage: https://github.com/kalashnikovisme/tramway-dev
275
278
  licenses:
@@ -290,7 +293,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
290
293
  - !ruby/object:Gem::Version
291
294
  version: '0'
292
295
  requirements: []
293
- rubygems_version: 3.1.2
296
+ rubygems_version: 3.0.3
294
297
  signing_key:
295
298
  specification_version: 4
296
299
  summary: Engine for admin