brick 1.0.194 → 1.0.195

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: 241617832338faa570f73caad241a98dd065fc9e1428fe54801bfbb57a26a392
4
- data.tar.gz: 86a7427f5b382bc478eec07e42c42eac1f5aeda56e29bad839e947acfec6c08f
3
+ metadata.gz: 48a47a4a4fd18918a7e1b3f90ffb1953afb11c569e19664920d3921e4806b4fe
4
+ data.tar.gz: 2a50f06d5790c7facfec994693c5f88f747b96825f62cf6b51a81dbf97f88aca
5
5
  SHA512:
6
- metadata.gz: 25392afb2c248e305decfe4c641c415f96f7836c46aeda2bad56b59016ee140c780a008dfa57a563d987ed75c7be929d786d95bfa2f15aa58128f67a043429b7
7
- data.tar.gz: afc21602ca3c3be41b686534c78b49507f1d1c06a6abe90a224c5302e8ebefaf5963bc75e181b4bd31b7b5eae9fe0970c871f33945ec192fe63bcb4e336b7baa
6
+ metadata.gz: dc9840fb52d71e04ef8a899d16289276d11556f55492d9190aaf6387659d520c105c7885c80c65a5ddba5a4294c0f088cbf03adb70969b9f948dd85721865fe2
7
+ data.tar.gz: 2846f746ad0f325ea5915b8ad68db9bb39d8a81061adf3ca6dfa996bc209d193887eea22b4eb9c6bdf65131c1c82f2ce980eedea9f7be886b0d9084017fcd553
@@ -436,12 +436,12 @@ module ActiveRecord
436
436
  order_by = ordering&.each_with_object([]) do |ord_part, s| # %%% If a term is also used as an eqi-condition in the WHERE clause, it can be omitted from ORDER BY
437
437
  case ord_part
438
438
  when String
439
- if ord_part.index('^^^')
440
- ord_expr = ord_part.gsub('^^^', _br_quoted_name(table_name))
441
- s << Arel.sql(ord_expr)
442
- else
443
- s << Arel.sql(_br_quoted_name(ord_part))
444
- end
439
+ ord_expr = if ord_part.index('^^^')
440
+ ord_part.gsub('^^^', _br_quoted_name(table_name))
441
+ else
442
+ _br_quoted_name(ord_part)
443
+ end
444
+ s << Arel.sql(ord_expr)
445
445
  order_by_txt&.<<("Arel.sql(#{ord_expr.inspect})")
446
446
  else # Expecting only Symbol
447
447
  ord_part = ord_part.to_s
@@ -1860,14 +1860,14 @@ class Object
1860
1860
  end
1861
1861
  end
1862
1862
 
1863
- def default_ordering(table_name, pk)
1863
+ def default_ordering(table_name, pk, omit_table_name = nil)
1864
1864
  case (order_tbl = ::Brick.config.order[table_name]) && (order_default = order_tbl[:_brick_default])
1865
1865
  when Array
1866
1866
  order_default.map { |od_part| order_tbl[od_part] || od_part }
1867
1867
  when Symbol
1868
1868
  order_tbl[order_default] || order_default
1869
1869
  else
1870
- pk.map { |part| "#{table_name}.#{part}"} # If it's not a custom ORDER BY, just use the key
1870
+ pk.map { |part| "#{"#{table_name}." unless omit_table_name}#{part}"} # If it's not a custom ORDER BY, just use the key
1871
1871
  end
1872
1872
  end
1873
1873
 
@@ -1917,7 +1917,7 @@ class Object
1917
1917
  cspd.select! { |val| val == "'self'" }
1918
1918
  cspd << style_value
1919
1919
  else
1920
- cspd << "'sha256-Q8t+pETkz0RtyV4XprwdP+uEkVaFyMnx1mXif0wDoxw='"
1920
+ cspd << "'sha256-ZMGrNwNigXBkvHBZrPrNurCVlJycGWtt2uvoEigUowg='"
1921
1921
  end
1922
1922
  cspd << 'https://cdn.jsdelivr.net'
1923
1923
  end
@@ -2035,6 +2035,7 @@ class Object
2035
2035
  end
2036
2036
 
2037
2037
  self.protect_from_forgery unless: -> { self.request.format.js? }
2038
+ plural_table_name = table_name.split('.').last.pluralize
2038
2039
  unless is_avo
2039
2040
  self.define_method :index do
2040
2041
  request_ver = request.path.split('/')[-2]
@@ -2220,7 +2221,7 @@ class Object
2220
2221
  end
2221
2222
  end
2222
2223
  ar_select = ar_relation.respond_to?(:_select!) ? ar_relation.dup._select!(*selects, *counts) : ar_relation.select(selects + counts)
2223
- instance_variable_set("@#{table_name.split('.').last}".to_sym, ar_select)
2224
+ instance_variable_set("@#{plural_table_name}".to_sym, ar_select)
2224
2225
  table_name_no_schema = singular_table_name.pluralize
2225
2226
  if namespace && (idx = lookup_context.prefixes.index(table_name_no_schema))
2226
2227
  lookup_context.prefixes[idx] = "#{namespace.name.underscore}/#{lookup_context.prefixes[idx]}"
@@ -2259,10 +2260,10 @@ class Object
2259
2260
  end
2260
2261
  end
2261
2262
 
2262
- _, order_by_txt = model._brick_calculate_ordering(default_ordering(table_name, pk)) if pk
2263
+ _, order_by_txt = model._brick_calculate_ordering(default_ordering(table_name, pk, true)) if pk
2263
2264
  code << " def index\n"
2264
- code << " @#{table_name.pluralize} = #{model.name}#{pk&.present? ? ".order(#{order_by_txt.join(', ')})" : '.all'}\n"
2265
- code << " @#{table_name.pluralize}.brick_select(params)\n"
2265
+ code << " @#{plural_table_name} = #{model.name}#{pk&.present? ? ".order(#{order_by_txt.join(', ')})" : '.all'}\n"
2266
+ code << " @#{plural_table_name}.brick_select(params)\n"
2266
2267
  code << " end\n"
2267
2268
 
2268
2269
  is_pk_string = nil
@@ -2562,12 +2563,8 @@ class Object
2562
2563
  assoc_name = assoc_parts.join('.')
2563
2564
  else
2564
2565
  class_name_parts = ::Brick.namify(hm_assoc[:inverse_table], :underscore).split('.')
2565
- last_idx = class_name_parts.length - 1
2566
- class_name_parts[last_idx] = class_name_parts[last_idx].singularize
2567
- real_name = class_name_parts.map(&:camelize).join('::')
2568
- needs_class = (real_name != hm_assoc[:inverse_table].camelize)
2566
+ needs_class = assoc_name.singularize.camelize != class_name_parts.last.singularize.camelize
2569
2567
  end
2570
- # hm_assoc[:assoc_name] = assoc_name
2571
2568
  [assoc_name, needs_class]
2572
2569
  end
2573
2570
  # Already have the HM class around?
@@ -2616,7 +2613,7 @@ end.class_exec do
2616
2613
  # https://discuss.rubyonrails.org/t/failed-write-transaction-upgrades-in-sqlite3/81480/2
2617
2614
  if ActiveRecord::Base.connection.adapter_name == 'SQLite'
2618
2615
  arca = ::ActiveRecord::ConnectionAdapters
2619
- db_statements = arca::SQLite3::DatabaseStatements
2616
+ db_statements = arca::SQLite3.const_defined?('DatabaseStatements') ? arca::SQLite3::DatabaseStatements : arca::SQLite3::SchemaStatements
2620
2617
  # Rails 7.1 and later
2621
2618
  if arca::AbstractAdapter.private_instance_methods.include?(:with_raw_connection)
2622
2619
  db_statements.define_method(:begin_db_transaction) do
@@ -3084,7 +3081,7 @@ ORDER BY 1, 2, c.internal_column_id, acc.position"
3084
3081
  INNER JOIN pg_class child ON pg_inherits.inhrelid = child.oid
3085
3082
  INNER JOIN pg_catalog.pg_namespace n ON n.oid = parent.relnamespace#{
3086
3083
  if schema
3087
- params = params << schema
3084
+ params << schema
3088
3085
  "
3089
3086
  WHERE n.nspname = COALESCE(?, 'public')"
3090
3087
  end}
@@ -3099,7 +3096,7 @@ ORDER BY 1, 2, c.internal_column_id, acc.position"
3099
3096
  FROM pg_class
3100
3097
  INNER JOIN pg_catalog.pg_namespace n ON n.oid = pg_class.relnamespace#{
3101
3098
  if schema
3102
- params = params << schema
3099
+ params << schema
3103
3100
  "
3104
3101
  WHERE n.nspname = COALESCE(?, 'public')"
3105
3102
  end}
@@ -1002,6 +1002,10 @@ a.big-arrow {
1002
1002
  color: red;
1003
1003
  white-space: nowrap;
1004
1004
  }
1005
+ .thumbImg {
1006
+ max-width: 96px;
1007
+ max-height: 96px;
1008
+ }
1005
1009
  .danger {
1006
1010
  background-color: red;
1007
1011
  color: white;
@@ -1376,7 +1380,7 @@ end %>#{"
1376
1380
  end
1377
1381
  \"<tr><td colspan=\\\"#\{td_count}\\\">Children: #\{child_links.join(' ')}</tr>\".html_safe
1378
1382
  end
1379
- %><%= if (page_num = @#{table_name}._brick_page_num)
1383
+ %><%= if (page_num = @#{res_name = table_name.pluralize}._brick_page_num)
1380
1384
  \"<tr><td colspan=\\\"#\{td_count}\\\">Page #\{page_num}</td></tr>\".html_safe
1381
1385
  end %></table>#{template_link}<%
1382
1386
  if description.present? %><span class=\"__brick\"><%=
@@ -1418,19 +1422,19 @@ end
1418
1422
 
1419
1423
  <%= # Consider getting the name from the association -- hm.first.name -- if a more \"friendly\" alias should be used for a screwy table name
1420
1424
  # If the resource is missing, has the user simply created an inappropriately pluralised name for a table?
1421
- @#{table_name} ||= if (dym_list = instance_variables.reject do |entry|
1425
+ @#{res_name} ||= if (dym_list = instance_variables.reject do |entry|
1422
1426
  entry.to_s.start_with?('@_') ||
1423
1427
  ['@cache_hit', '@marked_for_same_origin_verification', '@view_renderer', '@view_flow', '@output_buffer', '@virtual_path'].include?(entry.to_s)
1424
1428
  end).present?
1425
- msg = +\"Can't find resource \\\"#{table_name}\\\".\"
1429
+ msg = +\"Can't find resource \\\"#{res_name}\\\".\"
1426
1430
  # Can't be sure otherwise of what is up, so check DidYouMean and offer a suggestion.
1427
- if (dym = DidYouMean::SpellChecker.new(dictionary: dym_list).correct('@#{table_name}')).present?
1431
+ if (dym = DidYouMean::SpellChecker.new(dictionary: dym_list).correct('@#{res_name}')).present?
1428
1432
  msg << \"\nIf you meant \\\"#\{found_dym = dym.first[1..-1]}\\\" then to avoid this message add this entry into inflections.rb:\n\"
1429
1433
  msg << \" inflect.irregular '#{obj_name}', '#\{found_dym}'\"
1430
1434
  puts
1431
1435
  puts \"WARNING: #\{msg}\"
1432
1436
  puts
1433
- @#{table_name} = instance_variable_get(dym.first.to_sym)
1437
+ @#{res_name} = instance_variable_get(dym.first.to_sym)
1434
1438
  else
1435
1439
  raise ActiveRecord::RecordNotFound.new(msg)
1436
1440
  end
@@ -1450,7 +1454,7 @@ end
1450
1454
  # Rails.application.reloader.to_prepare do ... end
1451
1455
  self.class.class_exec { include ::Brick::Rails::FormTags } unless respond_to?(:brick_grid)
1452
1456
  # Write out the mega-grid
1453
- brick_grid(@#{table_name}, @_brick_sequence, @_brick_incl, @_brick_excl,
1457
+ brick_grid(@#{res_name}, @_brick_sequence, @_brick_incl, @_brick_excl,
1454
1458
  cols, bt_descrip: @_brick_bt_descrip, poly_cols: poly_cols, bts: bts, hms_keys: #{hms_keys.inspect}, hms_cols: {#{hms_columns.join(', ')}}) %>
1455
1459
 
1456
1460
  #{"<hr><%= link_to(\"New #{new_path_name = "new_#{path_obj_name}_path"
@@ -55,7 +55,10 @@ module Brick::Rails::FormBuilder
55
55
  is_revert = false
56
56
  out << ::Brick::Rails::FormBuilder.hide_bcrypt(val, nil, 1000)
57
57
  elsif col_type == :string
58
- if model.respond_to?(:enumerized_attributes) && (opts = (attr = model.enumerized_attributes[method])&.options).present?
58
+ if model.respond_to?(:uploaders) && model.uploaders.key?(col.name&.to_sym) &&
59
+ (url = self.object.send(col.name)&.url) # Carrierwave image?
60
+ out << "<img src=\"#{url}\" title=\"#{val}\">"
61
+ elsif model.respond_to?(:enumerized_attributes) && (opts = (attr = model.enumerized_attributes[method])&.options).present?
59
62
  enum_html_options = attr.kind_of?(Enumerize::Multiple) ? html_options.merge({ multiple: true, size: opts.length + 1 }) : html_options
60
63
  out << self.select(method.to_sym, [["(No #{method} chosen)", '^^^brick_NULL^^^']] + opts, { value: val || '^^^brick_NULL^^^' }, enum_html_options)
61
64
  else
@@ -149,9 +152,10 @@ module Brick::Rails::FormBuilder
149
152
  else
150
153
  if val.is_a?(String)
151
154
  return ::Brick::Rails.display_binary(val) unless (val_utf8 = val.dup.force_encoding('UTF-8')).valid_encoding?
155
+
152
156
  val = val_utf8.strip
153
157
  return CGI.escapeHTML(val) if is_xml
154
-
158
+
155
159
  if val.length > max_len
156
160
  if val[0] == '<' # Seems to be HTML?
157
161
  cur_len = 0
@@ -229,6 +229,9 @@ module Brick::Rails::FormTags
229
229
  # binding.pry if col.is_a?(Array)
230
230
  out << if @_brick_monetized_attributes&.include?(col_name)
231
231
  val ? Money.new(val.to_i).format : ''
232
+ elsif klass.respond_to?(:uploaders) && klass.uploaders.key?(col_name.to_sym) &&
233
+ (url = obj.send(col_name)&.url) # Carrierwave image?
234
+ "<img class=\"thumbImg\" src=\"#{url}\" title=\"#{val}\">"
232
235
  else
233
236
  lat_lng = if [:float, :decimal].include?(col.type) &&
234
237
  (
@@ -5,7 +5,7 @@ module Brick
5
5
  module VERSION
6
6
  MAJOR = 1
7
7
  MINOR = 0
8
- TINY = 194
8
+ TINY = 195
9
9
 
10
10
  # PRE is nil unless it's a pre-release (beta, RC, etc.)
11
11
  PRE = nil
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: brick
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.194
4
+ version: 1.0.195
5
5
  platform: ruby
6
6
  authors:
7
7
  - Lorin Thwaits
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-12-28 00:00:00.000000000 Z
11
+ date: 2023-12-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -284,7 +284,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
284
284
  - !ruby/object:Gem::Version
285
285
  version: 1.3.6
286
286
  requirements: []
287
- rubygems_version: 3.2.33
287
+ rubygems_version: 3.1.6
288
288
  signing_key:
289
289
  specification_version: 4
290
290
  summary: Create a Rails app from data alone