alchemy-json_api 0.7.2 → 0.10.0

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: 1fe4670c3c86dc4038be27367e22edf73b08771a8821897f7ff09155edeeac2b
4
- data.tar.gz: 6df10ac401188dcc94e927569bc6b9fd1303b19b03a46738e296fd35cdd34619
3
+ metadata.gz: bf4587d53cdd7cc5122e9cfff386da6534132339134bbe77d45261fae3355e25
4
+ data.tar.gz: d04f9543b7906bec3ed4960340a3b94ce0e24b9220a2ac039b136d81c5bada01
5
5
  SHA512:
6
- metadata.gz: c537c5b7007113d5da441a755e1f138805782223015e50da29fe7c73476abdbd45b760dcb5088ad1ef2e866435d4439602d0ee71f90ce16c250376b948016b0e
7
- data.tar.gz: '08e1e57a768cbcae7332257f97766175b9bf5b4d8520dd8fa0904d4b296a933154eeb3f0e7d7e0f4ce2dd06641153350d008671cebb3fd072f98d9185c7bb32c'
6
+ metadata.gz: d0b6a8b5911435aba0ab48c23e6a88b5b47d3133be15077b7862e072a8ac5238676407a504acec855c8aae98c84fb68e8e34e9e795464067c4be9039b8e3030e
7
+ data.tar.gz: edb82694d23e2404ae6711c98600707f54e09d49e239b7334b8dea8baab966ebc071d49f6c38302d4231ab19b283f8b6969b1aa9467c81e6cd6eaabc57e198dd
data/Rakefile CHANGED
@@ -21,6 +21,7 @@ task :test_setup do
21
21
  export RAILS_ENV=test && \
22
22
  bin/rake db:environment:set db:drop && \
23
23
  bin/rake railties:install:migrations && \
24
+ bin/rails g alchemy:devise:install --force && \
24
25
  bin/rake db:migrate
25
26
  SETUP
26
27
  exit($?.exitstatus) unless $?.success?
@@ -3,6 +3,7 @@ module Alchemy
3
3
  module JsonApi
4
4
  class BaseController < ::ApplicationController
5
5
  include Alchemy::ControllerActions
6
+ include Alchemy::AbilityHelper
6
7
  include JSONAPI::Fetching
7
8
  include JSONAPI::Errors
8
9
  include JSONAPI::Filtering
@@ -4,8 +4,12 @@ module Alchemy
4
4
  class LayoutPagesController < JsonApi::PagesController
5
5
  private
6
6
 
7
+ def base_page_scope
8
+ Page.all
9
+ end
10
+
7
11
  def page_scope
8
- base_page_scope.layoutpages
12
+ page_scope_with_includes.layoutpages
9
13
  end
10
14
  end
11
15
  end
@@ -42,16 +42,24 @@ module Alchemy
42
42
  end
43
43
 
44
44
  def page_scope
45
- base_page_scope.contentpages
45
+ page_scope_with_includes.contentpages
46
46
  end
47
47
 
48
- def base_page_scope
49
- ::Alchemy::Page.
48
+ def page_scope_with_includes
49
+ base_page_scope.
50
50
  with_language(Language.current).
51
- published.
52
51
  preload(language: {nodes: [:parent, :page]}, all_elements: [:parent_element, :nested_elements, { contents: { essence: :ingredient_association } }])
53
52
  end
54
53
 
54
+ def base_page_scope
55
+ # cancancan is not able to merge our complex AR scopes for logged in users
56
+ if can?(:edit_content, Page)
57
+ Page.all
58
+ else
59
+ Page.published
60
+ end
61
+ end
62
+
55
63
  def jsonapi_serializer_class(_resource, _is_collection)
56
64
  ::Alchemy::JsonApi::PageSerializer
57
65
  end
@@ -2,7 +2,8 @@
2
2
  module Alchemy
3
3
  module JsonApi
4
4
  class ElementSerializer
5
- include FastJsonapi::ObjectSerializer
5
+ include JSONAPI::Serializer
6
+
6
7
  attributes(
7
8
  :name,
8
9
  :fixed,
@@ -15,7 +16,7 @@ module Alchemy
15
16
  belongs_to :page, record_type: :page, serializer: ::Alchemy::JsonApi::PageSerializer
16
17
 
17
18
  has_many :essences, polymorphic: true do |element|
18
- element.contents.map(&:essence)
19
+ element.contents.reject { |c| !!c.try(:deprecated?) }.map!(&:essence)
19
20
  end
20
21
 
21
22
  has_many :nested_elements, record_type: :element, serializer: self
@@ -2,7 +2,8 @@
2
2
  module Alchemy
3
3
  module JsonApi
4
4
  class LanguageSerializer
5
- include FastJsonapi::ObjectSerializer
5
+ include JSONAPI::Serializer
6
+
6
7
  attributes(
7
8
  :name,
8
9
  :language_code,
@@ -2,7 +2,7 @@
2
2
  module Alchemy
3
3
  module JsonApi
4
4
  class NodeSerializer
5
- include FastJsonapi::ObjectSerializer
5
+ include JSONAPI::Serializer
6
6
 
7
7
  attributes :name
8
8
  attribute :link_url, &:url
@@ -2,7 +2,8 @@
2
2
  module Alchemy
3
3
  module JsonApi
4
4
  class PageSerializer
5
- include FastJsonapi::ObjectSerializer
5
+ include JSONAPI::Serializer
6
+
6
7
  attributes(
7
8
  :name,
8
9
  :urlname,
@@ -21,7 +22,7 @@ module Alchemy
21
22
  has_many :fixed_elements, record_type: :element, serializer: ::Alchemy::JsonApi::ElementSerializer
22
23
 
23
24
  has_many :all_elements, record_type: :element, serializer: ::Alchemy::JsonApi::ElementSerializer do |page|
24
- page.all_elements.select { |e| e.public? && !e.trashed? }
25
+ page.all_elements.select { |e| e.public? && !e.trashed? && !e.try(:deprecated?) }
25
26
  end
26
27
 
27
28
  with_options if: ->(_, params) { params[:admin] == true } do
@@ -3,7 +3,7 @@ module Alchemy
3
3
  module JsonApi
4
4
  module EssenceSerializer
5
5
  def self.included(klass)
6
- klass.include FastJsonapi::ObjectSerializer
6
+ klass.include JSONAPI::Serializer
7
7
  klass.has_one :element, record_type: :element, serializer: ::Alchemy::JsonApi::ElementSerializer do |essence|
8
8
  essence.content.element
9
9
  end
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
  module Alchemy
3
3
  module JsonApi
4
- VERSION = "0.7.2"
4
+ VERSION = "0.10.0"
5
5
  end
6
6
  end
metadata CHANGED
@@ -1,57 +1,49 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: alchemy-json_api
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.2
4
+ version: 0.10.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Martin Meyerhoff
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-11-16 00:00:00.000000000 Z
11
+ date: 2021-01-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: alchemy_cms
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
19
  version: '5.0'
20
+ - - "<"
21
+ - !ruby/object:Gem::Version
22
+ version: '6.1'
20
23
  type: :runtime
21
24
  prerelease: false
22
25
  version_requirements: !ruby/object:Gem::Requirement
23
26
  requirements:
24
- - - "~>"
27
+ - - ">="
25
28
  - !ruby/object:Gem::Version
26
29
  version: '5.0'
27
- - !ruby/object:Gem::Dependency
28
- name: fast_jsonapi
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - "~>"
30
+ - - "<"
32
31
  - !ruby/object:Gem::Version
33
- version: '1.5'
34
- type: :runtime
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - "~>"
39
- - !ruby/object:Gem::Version
40
- version: '1.5'
32
+ version: '6.1'
41
33
  - !ruby/object:Gem::Dependency
42
34
  name: jsonapi.rb
43
35
  requirement: !ruby/object:Gem::Requirement
44
36
  requirements:
45
- - - ">="
37
+ - - "~>"
46
38
  - !ruby/object:Gem::Version
47
- version: '0'
39
+ version: '1.6'
48
40
  type: :runtime
49
41
  prerelease: false
50
42
  version_requirements: !ruby/object:Gem::Requirement
51
43
  requirements:
52
- - - ">="
44
+ - - "~>"
53
45
  - !ruby/object:Gem::Version
54
- version: '0'
46
+ version: '1.6'
55
47
  - !ruby/object:Gem::Dependency
56
48
  name: factory_bot
57
49
  requirement: !ruby/object:Gem::Requirement
@@ -147,7 +139,7 @@ homepage: https://github.com/AlchemyCMS/alchemy-json_api
147
139
  licenses:
148
140
  - MIT
149
141
  metadata: {}
150
- post_install_message:
142
+ post_install_message:
151
143
  rdoc_options: []
152
144
  require_paths:
153
145
  - lib
@@ -162,8 +154,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
162
154
  - !ruby/object:Gem::Version
163
155
  version: '0'
164
156
  requirements: []
165
- rubygems_version: 3.0.3
166
- signing_key:
157
+ rubygems_version: 3.1.4
158
+ signing_key:
167
159
  specification_version: 4
168
160
  summary: A JSONAPI compliant API for AlchemyCMS
169
161
  test_files: []