alchemy-json_api 0.7.2 → 0.10.0

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: 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: []