rhino_project_core 0.30.0.alpha.6 → 0.30.0.alpha.13
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/app/overrides/activeadmin/resource_dsl_override.rb +36 -0
- data/lib/generators/rhino/admin/admin_generator.rb +13 -0
- data/lib/generators/rhino/admin/templates/resource.rb.tt +4 -0
- data/lib/generators/rhino/dev/setup/setup_generator.rb +0 -32
- data/lib/generators/rhino/dev/setup/templates/env.tt +0 -3
- data/lib/generators/rhino/model/model_generator.rb +5 -0
- data/lib/rhino/resource/active_record_extension/properties_describe.rb +6 -0
- data/lib/rhino/resource/active_storage_extension.rb +24 -7
- data/lib/rhino/version.rb +1 -1
- metadata +5 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 16f50327ef636c37b845d5f8f2feeb58dfb2e53c86245e8f8f730dff87c9fab8
|
4
|
+
data.tar.gz: 2ee355cca95557979d484733a19117d11431772a1c89a9db6c76d5b164eb9ef2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: af624adac026cfa723d19489c9bca5af76927b44e02d0f308a2a0a7917a581e3509564a98f8ca34d783a46e9d2701753bce053e674ba902f2b97c6ef27176c99
|
7
|
+
data.tar.gz: 2e82c35378c75899ac9b36d9212d3934bb4f15aa9f3624463b80a88c19f7af81b599cf7d92429ca870f91031f4270c42b222d43cea5f1cc7ba8b84c841b8c289
|
@@ -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
|
@@ -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?
|
@@ -77,6 +77,12 @@ module Rhino
|
|
77
77
|
# Identifier is a special format for identification on the front end
|
78
78
|
format = :identifier if name == identifier_property
|
79
79
|
|
80
|
+
# Float is double precision in postgres by default
|
81
|
+
if type == :float
|
82
|
+
type = :number
|
83
|
+
format = :double
|
84
|
+
end
|
85
|
+
|
80
86
|
# Dates and times are strings
|
81
87
|
if DATE_FORMATS.include?(type)
|
82
88
|
format = type
|
@@ -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
|
27
|
-
|
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
|
-
|
32
|
+
representation = representation(v)
|
32
33
|
|
33
34
|
{
|
34
|
-
url: url(
|
35
|
-
url_attachment: url_attachment(
|
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
|
|
data/lib/rhino/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
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.
|
4
|
+
version: 0.30.0.alpha.13
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- JP Rosevear
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2025-01-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -395,6 +395,7 @@ files:
|
|
395
395
|
- app/models/rhino/current.rb
|
396
396
|
- app/models/rhino/user.rb
|
397
397
|
- app/overrides/active_record/nested_error_override.rb
|
398
|
+
- app/overrides/activeadmin/resource_dsl_override.rb
|
398
399
|
- app/overrides/activestorage/direct_uploads_controller_override.rb
|
399
400
|
- app/overrides/activestorage/redirect_controller_override.rb
|
400
401
|
- app/overrides/activestorage/redirect_representation_controller_override.rb
|
@@ -426,6 +427,8 @@ files:
|
|
426
427
|
- lib/commands/rhino/module/new_command.rb
|
427
428
|
- lib/commands/rhino/module/rails_command.rb
|
428
429
|
- lib/commands/rhino/module/test_command.rb
|
430
|
+
- lib/generators/rhino/admin/admin_generator.rb
|
431
|
+
- lib/generators/rhino/admin/templates/resource.rb.tt
|
429
432
|
- lib/generators/rhino/dev/setup/setup_generator.rb
|
430
433
|
- lib/generators/rhino/dev/setup/templates/env.tt
|
431
434
|
- lib/generators/rhino/dev/setup/templates/prepare-commit-msg
|