rest_framework 0.8.11 → 0.8.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 076db67d932800e57d2c166d757b60ea6e0d77df03da2385eddff8fd25886f76
4
- data.tar.gz: d8b0fd131b50978e65b767d95a076f9592c8948a2708adff97e7971f84b0fbca
3
+ metadata.gz: 1e6db6727ad85819540fc9d5977205f553523fe2f1f4431c985193ffd47f27bc
4
+ data.tar.gz: cddc4ff0d75aa6d2856d1c6bde681d38f955675a9c11b3853eef617e1abfad8b
5
5
  SHA512:
6
- metadata.gz: f23d1835c49628c2b2f02521df2373438aabdb8ccb4fb12c3bd008cc757e3b660521c1eecf6d54fc92ad4f9b7c04881122acc9931c4d8847253cc78408e1e70d
7
- data.tar.gz: 23dbfba94daee299e86a1e542d17b8b25bccd04989e569fee71731fac79c3996ac987a8ee28a58d4f489ddf1cf3a02d4774f45b022cbfaaeb9d796ddc6e71cb3
6
+ metadata.gz: 86384e43ffa97406feb6a9760cb9ca425cbc725cb41324fe21a688216cf075ccdf2e27b682231dd11d4d7507740a8645eb66c4076df165d69da4a56d87d11efd
7
+ data.tar.gz: 7b22d9730b039452065db1e27d580ee1db4105861f323bd2800906a8c5197ed4d8cf76bb532c193dd3ab3255d491faeb04cbf47a677acbb1dbb46bfc0b6f2fc3
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.8.11
1
+ 0.8.13
@@ -91,9 +91,10 @@ module RESTFramework::BaseModelControllerMixin
91
91
 
92
92
  # Get the available fields. Returning `nil` indicates that anything should be accepted. If
93
93
  # `fallback` is true, then we should fallback to this controller's model columns, or an empty
94
- # array.
94
+ # array. This should always return an array of strings, no symbols, and possibly `nil` (only if
95
+ # `fallback` is false).
95
96
  def get_fields(input_fields: nil, fallback: true)
96
- input_fields ||= self.fields if fallback
97
+ input_fields ||= self.fields&.map(&:to_s) if fallback
97
98
 
98
99
  # If fields is a hash, then parse it.
99
100
  if input_fields.is_a?(Hash)
@@ -14,14 +14,12 @@ class RESTFramework::ModelFilter < RESTFramework::BaseFilter
14
14
  # Get a list of filterset fields for the current action. Fallback to columns because we don't want
15
15
  # to try filtering by any query parameter because that could clash with other query parameters.
16
16
  def _get_fields
17
- return (
18
- @controller.class.filterset_fields || @controller.get_fields(fallback: true)
19
- ).map(&:to_s)
17
+ # Always return a list of strings; `@controller.get_fields` already does this.
18
+ return @controller.class.filterset_fields&.map(&:to_s) || @controller.get_fields(fallback: true)
20
19
  end
21
20
 
22
21
  # Filter params for keys allowed by the current action's filterset_fields/fields config.
23
22
  def _get_filter_params
24
- # Map filterset fields to strings because query parameter keys are strings.
25
23
  fields = self._get_fields
26
24
 
27
25
  return @controller.request.query_parameters.select { |p, _|
@@ -69,7 +67,7 @@ class RESTFramework::ModelOrderingFilter < RESTFramework::BaseFilter
69
67
  # Get a list of ordering fields for the current action. Do not fallback to columns in case the
70
68
  # user wants to order by a virtual column.
71
69
  def _get_fields
72
- return (@controller.class.ordering_fields || @controller.get_fields)&.map(&:to_s)
70
+ return @controller.class.ordering_fields&.map(&:to_s) || @controller.get_fields
73
71
  end
74
72
 
75
73
  # Convert ordering string to an ordering configuration.
@@ -119,10 +117,10 @@ class RESTFramework::ModelSearchFilter < RESTFramework::BaseFilter
119
117
  # common string-like columns by default.
120
118
  def _get_fields
121
119
  if search_fields = @controller.class.search_fields
122
- return search_fields
120
+ return search_fields&.map(&:to_s)
123
121
  end
124
122
 
125
- columns = @controller.class.get_model.columns_hash.keys
123
+ columns = @controller.class.get_model.column_names
126
124
  return @controller.get_fields(fallback: true).select { |f|
127
125
  f.in?(RESTFramework.config.search_columns) && f.in?(columns)
128
126
  }
@@ -121,7 +121,7 @@ module RESTFramework::Utils
121
121
  }.sort_by { |r|
122
122
  # Sort by levels first, so the routes matching closely with current request show first, then
123
123
  # by the path, and finally by the HTTP verb.
124
- [r[:_levels], r[:_path], HTTP_METHOD_ORDERING.index(r[:verb]) || 99]
124
+ [r[:_levels], r[:path], HTTP_METHOD_ORDERING.index(r[:verb]) || 99]
125
125
  }.group_by { |r| r[:controller] }.sort_by { |c, _r|
126
126
  # Sort the controller groups by current controller first, then alphanumerically.
127
127
  [request.params[:controller] == c ? 0 : 1, c]
@@ -150,11 +150,13 @@ module RESTFramework::Utils
150
150
  Rails.logger.warn("RRF: Unknown key in fields hash: #{k}")
151
151
  end
152
152
 
153
- return parsed_fields
153
+ # We should always return strings, not symbols.
154
+ return parsed_fields.map(&:to_s)
154
155
  end
155
156
 
156
157
  # Get the fields for a given model, including not just columns (which includes
157
- # foreign keys), but also associations.
158
+ # foreign keys), but also associations. Note that we always return an array of
159
+ # strings, not symbols.
158
160
  def self.fields_for(model, exclude_associations: nil)
159
161
  foreign_keys = model.reflect_on_all_associations(:belongs_to).map(&:foreign_key)
160
162
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rest_framework
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.11
4
+ version: 0.8.13
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gregory N. Schmit
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-02-28 00:00:00.000000000 Z
11
+ date: 2023-03-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails