diff options
author | Stan Hu <stanhu@gmail.com> | 2019-03-21 00:46:58 +0300 |
---|---|---|
committer | GitLab Release Tools Bot <robert+release-tools@gitlab.com> | 2019-03-25 13:53:30 +0300 |
commit | 5c67aeaf5ab5dfbbca9d919ec4f958233ea593d8 (patch) | |
tree | f977a246b3cc5af274e6540143f767b4cab4dc33 /app | |
parent | 2b16e92bbc1ffd35e1c708890d74140020655153 (diff) |
Merge branch '59208-add-option-to-keep-cached-fields-during-serialization' into 'master'
Add option to whitelist _html fields from attributes on CacheMarkdownField
See merge request gitlab-org/gitlab-ce!26374
(cherry picked from commit f7fcfc7720c5149e2fa6f027900503ae3f215bf1)
3fd8e612 Add option to not exclude _html fields from attributes
bcc988a6 Does not exclude message_html from attributes
69dc893d Fix spec for Gitlab::JsonCache
6264694d Rename the hidden option to whitelisted
Diffstat (limited to 'app')
-rw-r--r-- | app/models/broadcast_message.rb | 2 | ||||
-rw-r--r-- | app/models/concerns/cache_markdown_field.rb | 22 |
2 files changed, 19 insertions, 5 deletions
diff --git a/app/models/broadcast_message.rb b/app/models/broadcast_message.rb index 2d237383e60..1c95abdd9ee 100644 --- a/app/models/broadcast_message.rb +++ b/app/models/broadcast_message.rb @@ -4,7 +4,7 @@ class BroadcastMessage < ActiveRecord::Base include CacheMarkdownField include Sortable - cache_markdown_field :message, pipeline: :broadcast_message + cache_markdown_field :message, pipeline: :broadcast_message, whitelisted: true validates :message, presence: true validates :starts_at, presence: true diff --git a/app/models/concerns/cache_markdown_field.rb b/app/models/concerns/cache_markdown_field.rb index 1a8570b80c3..15d8d58b9b5 100644 --- a/app/models/concerns/cache_markdown_field.rb +++ b/app/models/concerns/cache_markdown_field.rb @@ -7,6 +7,7 @@ # cache_markdown_field :foo # cache_markdown_field :bar # cache_markdown_field :baz, pipeline: :single_line +# cache_markdown_field :baz, whitelisted: true # # Corresponding foo_html, bar_html and baz_html fields should exist. module CacheMarkdownField @@ -37,7 +38,15 @@ module CacheMarkdownField end def html_fields - markdown_fields.map {|field| html_field(field) } + markdown_fields.map { |field| html_field(field) } + end + + def html_fields_whitelisted + markdown_fields.each_with_object([]) do |field, fields| + if @data[field].fetch(:whitelisted, false) + fields << html_field(field) + end + end end end @@ -149,13 +158,18 @@ module CacheMarkdownField alias_method :attributes_before_markdown_cache, :attributes def attributes attrs = attributes_before_markdown_cache + html_fields = cached_markdown_fields.html_fields + whitelisted = cached_markdown_fields.html_fields_whitelisted + exclude_fields = html_fields - whitelisted - attrs.delete('cached_markdown_version') - - cached_markdown_fields.html_fields.each do |field| + exclude_fields.each do |field| attrs.delete(field) end + if whitelisted.empty? + attrs.delete('cached_markdown_version') + end + attrs end |