brick 1.0.128 → 1.0.129

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: 4465179ddef5435627439c7123bbb63e951abcda5bd8bd8e20952cca2fc9e274
4
- data.tar.gz: b567eb687c8eea355ece80562a67e424629df4a8b64aae48596e6c6b01c730b4
3
+ metadata.gz: 3b46bf80d393c0d6e4ffea3e8bfc1fbc03dc667902077efc9a887c8ab046a817
4
+ data.tar.gz: 927828e46dfd9ae6b7c14aced0f814bbc1d876e5af14aa872a13d2c13af85083
5
5
  SHA512:
6
- metadata.gz: 162cf46af2e43b2652e59f9fe8f4d2826e490def50fb868869f614aacb256cfeecee3833dfb41807bef5ea64c83e921b7e993e728e6e42730a214ec49601de67
7
- data.tar.gz: 15fdcc9b67bc82b55a195168e020575ca04d9d1ae5830e0d1bcd2c7e04944aba90238342cabc1c93b7b7d01619a369b1bb0a0383dbbe91666e796ffa4051aa55
6
+ metadata.gz: 49073fb48479c8df6805a35632ef321efa3144556feb1e2da701044ce110aa6cfcb8ced12186408929b8c3d6280ca6e393e886ba54eea87f0a622a58f9216e8e
7
+ data.tar.gz: eaccf857c54a108c764e786b5e8abd0f54ff5abbcadec558138dc947a5d7e3015fc1a5510a311301947cee815d086018e535a15958357abd3463ab59ee375908
@@ -864,6 +864,9 @@ JOIN (SELECT #{hm_selects.map { |s| "#{'br_t0.' if from_clause}#{s}" }.join(', '
864
864
  def brick_list
865
865
  pks = klass.primary_key.is_a?(String) ? [klass.primary_key] : klass.primary_key
866
866
  selects = pks.each_with_object([]) { |pk, s| s << pk unless s.include?(pk) }
867
+ # ActiveStorage compatibility
868
+ selects << 'service_name' if klass.name == 'ActiveStorage::Blob' && ActiveStorage::Blob.columns_hash.key?('service_name')
869
+ selects << 'blob_id' if klass.name == 'ActiveStorage::Attachment' && ActiveStorage::Attachment.columns_hash.key?('blob_id')
867
870
  pieces, my_dsl = klass.brick_parse_dsl(join_array = ::Brick::JoinArray.new, [], translations = {}, false, nil, true)
868
871
  brick_select(
869
872
  where_values_hash, selects, nil, translations, join_array,
@@ -58,7 +58,7 @@ module Brick
58
58
  '(Add RGeo gem to parse geometry detail)'
59
59
  end
60
60
  when :binary
61
- ::Brick::Rails.display_binary(val) if val
61
+ ::Brick::Rails.display_binary(val)
62
62
  else
63
63
  if col_type
64
64
  ::Brick::Rails::FormBuilder.hide_bcrypt(val, col_type == :xml)
@@ -69,8 +69,12 @@ module Brick
69
69
  end
70
70
 
71
71
  def display_binary(val)
72
+ return unless val
73
+
72
74
  @image_signatures ||= { (+"\xFF\xD8\xFF\xEE").force_encoding('ASCII-8BIT') => 'jpeg',
73
75
  (+"\xFF\xD8\xFF\xE0\x00\x10\x4A\x46\x49\x46\x00\x01").force_encoding('ASCII-8BIT') => 'jpeg',
76
+ (+"\xFF\xD8\xFF\xDB").force_encoding('ASCII-8BIT') => 'jpeg',
77
+ (+"\xFF\xD8\xFF\xE1").force_encoding('ASCII-8BIT') => 'jpeg',
74
78
  (+"\x89PNG\r\n\x1A\n").force_encoding('ASCII-8BIT') => 'png',
75
79
  '<svg' => 'svg+xml', # %%% Not yet very good detection for SVG
76
80
  (+'BM').force_encoding('ASCII-8BIT') => 'bmp',
@@ -90,7 +94,8 @@ module Brick
90
94
  val = val[object_start...object_start + real_object_size]
91
95
  end
92
96
 
93
- if (signature = @image_signatures.find { |k, _v| val[0...k.length] == k })
97
+ if (signature = @image_signatures.find { |k, _v| val[0...k.length] == k }) ||
98
+ (val[0..3] == 'RIFF' && val[8..11] == 'WEBP' && (signature = 'webp'))
94
99
  if val.length < 500_000
95
100
  "<img src=\"data:image/#{signature.last};base64,#{Base64.encode64(val)}\">"
96
101
  else
@@ -1290,7 +1295,7 @@ erDiagram
1290
1295
  </head>
1291
1296
  <body>
1292
1297
  <div id=\"titleBox\"><div id=\"titleSticky\">
1293
- <p style=\"color: green\"><%= notice %></p>#{"
1298
+ <p style=\"color: green\"><%= notice if request.respond_to?(:flash) %></p>#{"
1294
1299
  #{schema_options}" if schema_options}
1295
1300
  <select id=\"tbl\">#{table_options}</select>
1296
1301
  <table id=\"resourceName\"><tr>
@@ -1411,7 +1416,8 @@ end
1411
1416
  brick_grid(@#{table_name}, @_brick_bt_descrip, @_brick_sequence, @_brick_incl, @_brick_excl,
1412
1417
  cols, poly_cols, bts, #{hms_keys.inspect}, {#{hms_columns.join(', ')}}) %>
1413
1418
 
1414
- #{"<hr><%= link_to \"New #{obj_name}\", new_#{path_obj_name}_path %>" unless @_brick_model.is_view?}
1419
+ #{"<hr><%= link_to(\"New #{new_path_name = "new_#{path_obj_name}_path"
1420
+ obj_name}\", #{new_path_name}) if respond_to?(:#{new_path_name}) %>" unless @_brick_model.is_view?}
1415
1421
  #{script}
1416
1422
  </body>
1417
1423
  </html>
@@ -1423,7 +1429,7 @@ end
1423
1429
  # Must load all models, and then find what table names are represented
1424
1430
  # Easily could be multiple files involved (STI for instance)
1425
1431
  +"#{css}
1426
- <p style=\"color: green\"><%= notice %></p>#{"
1432
+ <p style=\"color: green\"><%= notice if request.respond_to?(:flash) %></p>#{"
1427
1433
  #{schema_options}" if schema_options}
1428
1434
  <select id=\"tbl\">#{table_options}</select>
1429
1435
  <h1>Status</h1>
@@ -1473,7 +1479,7 @@ end
1473
1479
  when 'orphans'
1474
1480
  if is_orphans
1475
1481
  +"#{css}
1476
- <p style=\"color: green\"><%= notice %></p>#{"
1482
+ <p style=\"color: green\"><%= notice if request.respond_to?(:flash) %></p>#{"
1477
1483
  #{schema_options}" if schema_options}
1478
1484
  <select id=\"tbl\">#{table_options}</select>
1479
1485
  <h1>Orphans<%= \" for #\{}\" if false %></h1>
@@ -1520,7 +1526,7 @@ end
1520
1526
  c23.141-70.188,89.141-120.906,167.063-120.906c97.25,0,176,78.813,176,176C511.828,227.078,404.391,119.641,271.844,119.641z\" />
1521
1527
  </svg>
1522
1528
 
1523
- <p style=\"color: green\"><%= notice %></p>#{"
1529
+ <p style=\"color: green\"><%= notice if request.respond_to?(:flash) %></p>#{"
1524
1530
  #{schema_options}" if schema_options}
1525
1531
  <select id=\"tbl\">#{table_options}</select>
1526
1532
  <table><td><h1><%= page_title %></h1></td>
@@ -1555,14 +1561,13 @@ end
1555
1561
  %><%= link_to \"(See all #\{model_name.pluralize})\", see_all_path %>
1556
1562
  #{erd_markup}
1557
1563
  <% if obj
1558
- # path_options = [obj.#{pk}]
1559
- # path_options << { '_brick_schema': } if
1560
- # url = send(:#\{model._brick_index(:singular)}_path, obj.#{pk})
1561
- options = {}
1562
- if ::Brick.config.path_prefix
1563
- path_helper = obj.new_record? ? #{model_name}._brick_index : #{model_name}._brick_index(:singular)
1564
- options[:url] = send(\"#\{path_helper}_path\".to_sym, obj)
1565
- end
1564
+ # path_options = [obj.#{pk}]
1565
+ # path_options << { '_brick_schema': } if
1566
+ options = {}
1567
+ if ::Brick.config.path_prefix
1568
+ path_helper = obj.new_record? ? #{model_name}._brick_index : #{model_name}._brick_index(:singular)
1569
+ options[:url] = send(\"#\{path_helper}_path\".to_sym, obj)
1570
+ end
1566
1571
  %>
1567
1572
  <br><br>
1568
1573
  <%= form_for(obj.becomes(#{model_name}), options) do |f| %>
@@ -1570,11 +1575,11 @@ end
1570
1575
  <% has_fields = false
1571
1576
  @#{obj_name}.attributes.each do |k, val|
1572
1577
  next if !(col = #{model_name}.columns_hash[k]) ||
1573
- (#{(pk || []).inspect}.include?(k) && !bts.key?(k)) ||
1578
+ (#{(pk.map(&:to_s) || []).inspect}.include?(k) && !bts.key?(k)) ||
1574
1579
  ::Brick.config.metadata_columns.include?(k) %>
1575
1580
  <tr>
1576
1581
  <th class=\"show-field\"<%= \" title=\\\"#\{col.comment}\\\"\".html_safe if col.respond_to?(:comment) && !col.comment.blank? %>>
1577
- <% has_fields = true
1582
+ <% has_fields = true
1578
1583
  if (bt = bts[k])
1579
1584
  # Add a final member in this array with descriptive options to be used in <select> drop-downs
1580
1585
  bt_name = bt[1].map { |x| x.first.name }.join('/')
@@ -1627,7 +1632,11 @@ end
1627
1632
  <% else %>
1628
1633
  <tr><td colspan=\"2\">(No displayable fields)</td></tr>
1629
1634
  <% end %>
1630
- </table>
1635
+ </table>#{
1636
+ "<%= binary = begin
1637
+ ::Brick::Rails.display_binary(obj&.blob&.download)&.html_safe
1638
+ rescue
1639
+ end %>" if model_name == 'ActiveStorage::Attachment'}
1631
1640
  <% end %>
1632
1641
 
1633
1642
  #{unless args.first == 'new'
@@ -1660,6 +1669,12 @@ end
1660
1669
  # In order to apply DSL properly, evaluate this HO the other way around as if it were as a BT
1661
1670
  collection = assoc.klass.where(assoc.foreign_key => @#{obj_name}.#{pk})
1662
1671
  collection = collection.instance_exec(&assoc.scopes.first) if assoc.scopes.present?
1672
+ if assoc.klass.name == 'ActiveStorage::Attachment'
1673
+ br_descrip = begin
1674
+ ::Brick::Rails.display_binary(obj.send(assoc.name)&.blob&.download)&.html_safe
1675
+ rescue
1676
+ end
1677
+ end
1663
1678
  else
1664
1679
  collection = @#{obj_name}.#{hm_name}
1665
1680
  end
@@ -1677,9 +1692,9 @@ end
1677
1692
  <tr><td>(none)</td></tr>
1678
1693
  <% else
1679
1694
  collection2.each do |#{hm_singular_name}| %>
1680
- <tr><td><%= br_descrip = #{hm_singular_name}.brick_descrip(
1681
- descrip_cols&.first&.map { |col| #{hm_singular_name}.send(col.last) }
1682
- )
1695
+ <tr><td><%= br_descrip ||= #{hm_singular_name}.brick_descrip(
1696
+ descrip_cols&.first&.map { |col| #{hm_singular_name}.send(col.last) }
1697
+ )
1683
1698
  link_to(br_descrip, #{hm.first.klass._brick_index(:singular)}_path(slashify(#{obj_pk}))) %></td></tr>
1684
1699
  <% end %>
1685
1700
  <% end %>
@@ -115,7 +115,14 @@ module Brick::Rails::FormTags
115
115
  if col[2] == 'HO'
116
116
  descrips = bt_descrip[col_name.to_sym][hm_klass]
117
117
  if (ho_id = (ho_id_col = descrips.last).map { |id_col| obj.send(id_col.to_sym) })&.first
118
- ho_txt = hm_klass.brick_descrip(obj, descrips[0..-2].map { |id| obj.send(id.last[0..62]) }, ho_id_col)
118
+ ho_txt = if hm_klass.name == 'ActiveStorage::Attachment'
119
+ begin
120
+ ::Brick::Rails.display_binary(obj.send(col[3])&.blob&.download)&.html_safe
121
+ rescue
122
+ end
123
+ else
124
+ hm_klass.brick_descrip(obj, descrips[0..-2].map { |id| obj.send(id.last[0..62]) }, ho_id_col)
125
+ end
119
126
  out << link_to(ho_txt, send("#{hm_klass.base_class._brick_index(:singular)}_path".to_sym, ho_id))
120
127
  end
121
128
  else
@@ -5,7 +5,7 @@ module Brick
5
5
  module VERSION
6
6
  MAJOR = 1
7
7
  MINOR = 0
8
- TINY = 128
8
+ TINY = 129
9
9
 
10
10
  # PRE is nil unless it's a pre-release (beta, RC, etc.)
11
11
  PRE = nil
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: brick
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.128
4
+ version: 1.0.129
5
5
  platform: ruby
6
6
  authors:
7
7
  - Lorin Thwaits