rhino_project_core 0.30.0.alpha.7 → 0.30.0.alpha.14

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: 00cd621849bf263dd9915b3abf6fd183a4a314710147b2650a51424ae6df4c82
4
- data.tar.gz: b9837b83fd0cf963da31dc90f830b9a05fff1cf433f42692ff0fc8c83810e183
3
+ metadata.gz: 94494b306f6725a3889a08333c9b7d6bd6ae9c58e49d225234f359781130fc8c
4
+ data.tar.gz: 52c65110920f52ec46271dfc16ffeb738c80f344db9860f865dfcd09814d178b
5
5
  SHA512:
6
- metadata.gz: 65c31457636e04b633912fb9eb1b164d042f7d55c8e65a4a1f2f48ea40900ab2e86dc110f2f4792928cefd424a0a7119334cc7c3589939f77b32cad7c203acf6
7
- data.tar.gz: 120246ea15e61cdbd792d3817ee5b1c6feb225b3f7b4fe5222bdeae9d9d025eee006ee3dea80007f49859a3e3514cb4fef982eebec19b91a5de124cc260988f0
6
+ metadata.gz: 345595919d14b989b121a1d71b9a724efbb1046b1f3d964c98f65ebf6fc49d6e2215444dada9769dadcea40498ab1fdca6cf9d0d9b26ddca3b52a1e30428141e
7
+ data.tar.gz: 24e722ec2baf21dee4d34098d1c04282c17cfd26eba0c794d3ca242f28d2fb22502e521da6bd6870b9faeba6e3e296e5473eb53cdd0840a66b45f26083539409
@@ -0,0 +1,36 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "active_admin/resource_dsl"
4
+
5
+ module ActiveAdmin
6
+ # This is the class where all the register blocks are evaluated.
7
+ class ResourceDSL
8
+ # Runs in the context of the ResourceDSL
9
+ def rhino_filters
10
+ klass = self.config.resource_class_name.constantize
11
+ klass.ransackable_filters.each do |attr|
12
+ filter attr.to_sym
13
+ end
14
+ end
15
+
16
+ # Runs in the context of the controller
17
+ def rhino_permit_params(permitted: [])
18
+ permit_params do
19
+ klass = self.active_admin_config.resource_class_name.constantize
20
+
21
+ permitted += klass.creatable_properties.map(&:to_sym) if params[:action] == "create"
22
+ permitted += klass.updatable_properties.map(&:to_sym) if params[:action] == "update"
23
+
24
+ # Allow owner and other references to be assigned or changed by admin
25
+ # All possible relations
26
+ references = klass.describe[:properties].select { |_p, d| d[:type] == :reference }.keys
27
+
28
+ # Restrict to the valid create/update properties
29
+ references.select! { |r| permitted.include?(r.to_sym) }
30
+ permitted += references.map { |r| klass.reflections[r].foreign_key }
31
+
32
+ permitted.uniq
33
+ end
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "rails/generators"
4
+
5
+ module Rhino
6
+ class AdminGenerator < Rails::Generators::NamedBase
7
+ source_root File.expand_path("templates", __dir__)
8
+
9
+ def admin
10
+ template "resource.rb", "app/admin/#{file_path.tr('/', '_').pluralize}.rb" unless options[:skip_admin]
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,4 @@
1
+ ActiveAdmin.register <%= class_name %> do
2
+ rhino_filters
3
+ rhino_permit_params
4
+ end
@@ -15,8 +15,6 @@ module Rhino
15
15
  class_option :db_port, type: :numeric, default: 5432, group: :database
16
16
  class_option :db_user, type: :string, group: :database
17
17
  class_option :db_password, type: :string, group: :database
18
- class_option :redis_port, type: :numeric, default: 6379, group: :redis
19
- class_option :redis_database, type: :numeric, default: 0, group: :redis
20
18
 
21
19
  attr_reader :server_port,
22
20
  :db_name,
@@ -24,9 +22,6 @@ module Rhino
24
22
  :db_port,
25
23
  :db_user,
26
24
  :db_password,
27
- :redis_host,
28
- :redis_port,
29
- :redis_database,
30
25
  :dockerized
31
26
 
32
27
  source_root File.expand_path("templates", __dir__)
@@ -92,18 +87,6 @@ module Rhino
92
87
  options[:db_password] || ENV["DB_PASSWORD"] || ""
93
88
  end
94
89
 
95
- def redis_host_default
96
- options[:redis_host] || ENV["REDIS_HOST"] || "localhost"
97
- end
98
-
99
- def redis_port_default
100
- options[:redis_port] || ENV["REDIS_PORT"]
101
- end
102
-
103
- def redis_database_default
104
- options[:redis_database] || ENV["REDIS_DATABASE"]
105
- end
106
-
107
90
  def dockerized_default
108
91
  options[:defaults] == "docker" ? "Y" : "N"
109
92
  end
@@ -114,7 +97,6 @@ module Rhino
114
97
  @server_port = ask_prompt("Port?", server_port_default)
115
98
 
116
99
  collect_database_info
117
- collect_redis_info
118
100
  end
119
101
 
120
102
  def collect_docker_info
@@ -126,9 +108,6 @@ module Rhino
126
108
  @db_user = "postgres"
127
109
  @db_password = "password"
128
110
  @db_port = 5432
129
- @redis_host = "redis"
130
- @redis_port = 6379
131
- @redis_database = 0
132
111
 
133
112
  puts <<~HERE
134
113
  The following docker configuration has been automatically set for you:
@@ -136,9 +115,6 @@ module Rhino
136
115
  Database port: #{db_port}
137
116
  Database user: #{db_user}
138
117
  Database password: #{db_password}
139
- Redis host: #{redis_host}
140
- Redis port: #{redis_port}
141
- Redis database: #{redis_database}
142
118
  HERE
143
119
  end
144
120
 
@@ -152,14 +128,6 @@ module Rhino
152
128
  nil
153
129
  end
154
130
 
155
- def collect_redis_info
156
- @redis_host ||= ask_prompt("Redis host?", redis_host_default)
157
- @redis_port ||= ask_prompt("Redis port?", redis_port_default)
158
- @redis_database ||= ask_prompt("Redis database?", redis_database_default)
159
-
160
- nil
161
- end
162
-
163
131
  def project_file(file)
164
132
  File.join(project_dir, file)
165
133
  end
@@ -9,9 +9,6 @@ DB_HOST=<%= db_host %>
9
9
  DB_PORT=<%= db_port %>
10
10
  DB_USERNAME=<%= db_user %>
11
11
  DB_PASSWORD=<%= db_password %>
12
- REDIS_HOST=<%= redis_host %>
13
- REDIS_PORT=<%= redis_port %>
14
- REDIS_DATABASE=<%= redis_database %>
15
12
 
16
13
  # Client
17
14
  VITE_API_ROOT_PATH=$ROOT_URL
@@ -11,6 +11,7 @@ module Rhino
11
11
  class_option :owner, type: :string, desc: "The model is owned by the reference attribute", group: :owner
12
12
  class_option :base_owner, type: :boolean, default: false, desc: "The model is owned by the base owner", group: :owner
13
13
  class_option :global_owner, type: :boolean, default: false, desc: "The model is globally owned", group: :owner
14
+ class_option :skip_admin, type: :boolean, default: false, desc: "Skip generating ActiveAdmin resources", group: :admin
14
15
 
15
16
  # Parent source paths
16
17
  def source_paths
@@ -52,6 +53,10 @@ module Rhino
52
53
  end
53
54
  end
54
55
 
56
+ def active_admin_resource
57
+ generate "rhino:admin", class_name unless options[:skip_admin]
58
+ end
59
+
55
60
  protected
56
61
  def check_ownership
57
62
  raise Thor::Error, "Exactly one owner must be defined on a reference or globally" unless base_owner? ^ global_owner? ^ reference_owner?
@@ -11,6 +11,8 @@ module Rhino
11
11
  included do
12
12
  attribute :url
13
13
  attribute :url_attachment
14
+ attribute :previews, :json, default: {}
15
+ attribute :representations, :json, default: {}
14
16
  attribute :variants, :json, default: {}
15
17
 
16
18
  rhino_policy :active_storage_attachment
@@ -23,20 +25,35 @@ module Rhino
23
25
  url(attachment, disposition: :attachment)
24
26
  end
25
27
 
26
- def variants
27
- # Not everything may be processed into a variant based on mime type
28
- return unless variable?
28
+ def representations
29
+ return unless representable?
29
30
 
30
31
  record.attachment_reflections[self.name]&.named_variants&.keys&.index_with do |v|
31
- variant = variant(v)
32
+ representation = representation(v)
32
33
 
33
34
  {
34
- url: url(variant),
35
- url_attachment: url_attachment(variant)
35
+ url: url(representation),
36
+ url_attachment: url_attachment(representation)
36
37
  }
37
38
  end
38
39
  end
39
40
 
41
+ # FIXME: Cache for performance
42
+ def previews
43
+ # Not everything may be processed into a preview based on mime type
44
+ return unless previewable?
45
+
46
+ representations
47
+ end
48
+
49
+ # FIXME: Cache for performance
50
+ def variants
51
+ # Not everything may be processed into a variant based on mime type
52
+ return unless variable?
53
+
54
+ representations
55
+ end
56
+
40
57
  def display_name
41
58
  filename.to_s
42
59
  end
@@ -44,7 +61,7 @@ module Rhino
44
61
 
45
62
  class_methods do
46
63
  def readable_properties
47
- super + [ "variants", "signed_id"]
64
+ super + [ "previews", "representations", "variants", "signed_id"]
48
65
  end
49
66
  end
50
67
 
@@ -13,7 +13,7 @@ module Rhino
13
13
  @param = params[:order]
14
14
 
15
15
  # Always append id to the end of the order clause to ensure a stable sort for pagination
16
- result = apply_order.order(scope.primary_key)
16
+ result = apply_order.order(scope.primary_key.to_sym)
17
17
  @app.resolve(result, params)
18
18
  end
19
19
 
data/lib/rhino/version.rb CHANGED
@@ -10,7 +10,7 @@ module Rhino
10
10
  MAJOR = 0
11
11
  MINOR = 30
12
12
  TINY = 0
13
- PRE = "alpha.7"
13
+ PRE = "alpha.14"
14
14
 
15
15
  STRING = [MAJOR, MINOR, TINY, PRE].compact.join(".")
16
16
  end
metadata CHANGED
@@ -1,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rhino_project_core
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.30.0.alpha.7
4
+ version: 0.30.0.alpha.14
5
5
  platform: ruby
6
6
  authors:
7
7
  - JP Rosevear
8
- autorequire:
9
8
  bindir: bin
10
9
  cert_chain: []
11
- date: 2024-12-27 00:00:00.000000000 Z
10
+ date: 2025-02-01 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
13
  name: rails
@@ -16,20 +15,20 @@ dependencies:
16
15
  requirements:
17
16
  - - "~>"
18
17
  - !ruby/object:Gem::Version
19
- version: 7.2.0
18
+ version: 8.0.0
20
19
  - - ">="
21
20
  - !ruby/object:Gem::Version
22
- version: 7.2.0
21
+ version: 8.0.0
23
22
  type: :runtime
24
23
  prerelease: false
25
24
  version_requirements: !ruby/object:Gem::Requirement
26
25
  requirements:
27
26
  - - "~>"
28
27
  - !ruby/object:Gem::Version
29
- version: 7.2.0
28
+ version: 8.0.0
30
29
  - - ">="
31
30
  - !ruby/object:Gem::Version
32
- version: 7.2.0
31
+ version: 8.0.0
33
32
  - !ruby/object:Gem::Dependency
34
33
  name: activeadmin
35
34
  requirement: !ruby/object:Gem::Requirement
@@ -50,14 +49,14 @@ dependencies:
50
49
  requirements:
51
50
  - - '='
52
51
  - !ruby/object:Gem::Version
53
- version: 11.0.0
52
+ version: 12.0.0
54
53
  type: :runtime
55
54
  prerelease: false
56
55
  version_requirements: !ruby/object:Gem::Requirement
57
56
  requirements:
58
57
  - - '='
59
58
  - !ruby/object:Gem::Version
60
- version: 11.0.0
59
+ version: 12.0.0
61
60
  - !ruby/object:Gem::Dependency
62
61
  name: analytics-ruby
63
62
  requirement: !ruby/object:Gem::Requirement
@@ -92,14 +91,14 @@ dependencies:
92
91
  requirements:
93
92
  - - '='
94
93
  - !ruby/object:Gem::Version
95
- version: 2.15.0
94
+ version: 2.16.0
96
95
  type: :runtime
97
96
  prerelease: false
98
97
  version_requirements: !ruby/object:Gem::Requirement
99
98
  requirements:
100
99
  - - '='
101
100
  - !ruby/object:Gem::Version
102
- version: 2.15.0
101
+ version: 2.16.0
103
102
  - !ruby/object:Gem::Dependency
104
103
  name: countries
105
104
  requirement: !ruby/object:Gem::Requirement
@@ -134,14 +133,14 @@ dependencies:
134
133
  requirements:
135
134
  - - '='
136
135
  - !ruby/object:Gem::Version
137
- version: 1.2.4
136
+ version: 1.2.5
138
137
  type: :runtime
139
138
  prerelease: false
140
139
  version_requirements: !ruby/object:Gem::Requirement
141
140
  requirements:
142
141
  - - '='
143
142
  - !ruby/object:Gem::Version
144
- version: 1.2.4
143
+ version: 1.2.5
145
144
  - !ruby/object:Gem::Dependency
146
145
  name: friendly_id
147
146
  requirement: !ruby/object:Gem::Requirement
@@ -395,6 +394,7 @@ files:
395
394
  - app/models/rhino/current.rb
396
395
  - app/models/rhino/user.rb
397
396
  - app/overrides/active_record/nested_error_override.rb
397
+ - app/overrides/activeadmin/resource_dsl_override.rb
398
398
  - app/overrides/activestorage/direct_uploads_controller_override.rb
399
399
  - app/overrides/activestorage/redirect_controller_override.rb
400
400
  - app/overrides/activestorage/redirect_representation_controller_override.rb
@@ -426,6 +426,8 @@ files:
426
426
  - lib/commands/rhino/module/new_command.rb
427
427
  - lib/commands/rhino/module/rails_command.rb
428
428
  - lib/commands/rhino/module/test_command.rb
429
+ - lib/generators/rhino/admin/admin_generator.rb
430
+ - lib/generators/rhino/admin/templates/resource.rb.tt
429
431
  - lib/generators/rhino/dev/setup/setup_generator.rb
430
432
  - lib/generators/rhino/dev/setup/templates/env.tt
431
433
  - lib/generators/rhino/dev/setup/templates/prepare-commit-msg
@@ -508,7 +510,6 @@ homepage: ''
508
510
  licenses:
509
511
  - MIT
510
512
  metadata: {}
511
- post_install_message:
512
513
  rdoc_options: []
513
514
  require_paths:
514
515
  - lib
@@ -523,8 +524,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
523
524
  - !ruby/object:Gem::Version
524
525
  version: '0'
525
526
  requirements: []
526
- rubygems_version: 3.5.22
527
- signing_key:
527
+ rubygems_version: 3.6.2
528
528
  specification_version: 4
529
529
  summary: ''
530
530
  test_files: []