tramway-admin 1.19.0.2 → 1.20

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 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