ecoportal-api-v2 0.8.25 → 0.8.26

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: 6d0fd873fa135b382e7a8e272ab0bbdee729e6d15ebaceea8b4699fb3af650f2
4
- data.tar.gz: 55e54d6e2b07d8108f2ca1a915118133ca6d4180519e6c8cafb7eacc449c60b0
3
+ metadata.gz: f4693a8a82dab15ddfd0722b1b987efb80ddc7ef9d748e76b7ccff87c0317133
4
+ data.tar.gz: 999fbaa368b677cdab96889fb34c38fe0c71c4235c000d82e6e38fedd0cf7d10
5
5
  SHA512:
6
- metadata.gz: 907b384d0f7f31fc9f1d656c7e535c814ac7bbe4d0d8034d7c80f924b3896f4cc8855296e871fa0f1c9d4dc4cff12e05bbedd893c4750dc9d34d02d355678531
7
- data.tar.gz: 9ca8fc0aaf31e37dfd61abdc45e42269abacbb3220b6dcc5fa020a26f5f3e1096dbb2723ed23d8036281db86453c2a187f026877f98e94324a614daa23ae10c2
6
+ metadata.gz: 76b33ecae1e147b8e1c1f1dffb118d7533eee71b4e9acc7a5e6609947c7880c4d6f2e3ffc32aac8c5df4af3133573103148861335bfe03a6e85ecf87af5b9e60
7
+ data.tar.gz: bcd91f124438cfd8aad7b181ea1f62744c8b37d92053e394a5b681a18338f19254b0d7ca5b59e1d50fc16357b138985c0aa2a67a4a57930952f775b9fbcc4248
data/CHANGELOG.md CHANGED
@@ -1,6 +1,15 @@
1
1
  # Change Log
2
2
  All notable changes to this project will be documented in this file.
3
3
 
4
+ ## [0.8.26] - 2022-02-xx
5
+
6
+ ### Added
7
+ `Ecoportal::API::V2::Page::Stage#add_permit`
8
+ `Ecoportal::API::V2::Page::Permit.new_doc`
9
+
10
+ ### Changed
11
+ ### Fixed
12
+
4
13
  ## [0.8.25] - 2022-02-04
5
14
 
6
15
  ### Added
@@ -10,8 +19,6 @@ All notable changes to this project will be documented in this file.
10
19
  - `Ecoportal::API::Common::Content::HashDiffPatch#patch_data`
11
20
  - Added support for model objects with no `patch_ver` (so diffs are calculated as well)
12
21
 
13
- ### Fixed
14
-
15
22
  ## [0.8.24] - 2022-01-05
16
23
 
17
24
  ### Fixed
@@ -3,10 +3,19 @@ module Ecoportal
3
3
  class V2
4
4
  class Page
5
5
  class Permit < Common::Content::DoubleModel
6
+ class << self
7
+ def new_doc
8
+ {
9
+ "id" => new_uuid,
10
+ "editable" => false
11
+ }
12
+ end
13
+ end
14
+
6
15
  passkey :id
7
16
  passforced :patch_ver, default: 1
8
17
  passthrough :user_id, :user_name
9
- passthrough :editable, :flags
18
+ passthrough :editable
10
19
  embeds_one :flags, klass: "Ecoportal::API::V2::Page::PermissionFlags"
11
20
  end
12
21
  end
@@ -66,6 +66,29 @@ module Ecoportal
66
66
  end
67
67
  self
68
68
  end
69
+
70
+ # Adds a direct permission to this stage
71
+ # @note it will prevent to duplicate permits on same `user_id`
72
+ # @raise [ArgumentError] if `value` is not of any of the expected classes
73
+ # @param value [Ecoportal::API::Internal::Person, Hash] either the person
74
+ # or the actual Hash model with String keys person `user_id`, `user_name`, `user_email`
75
+ # @yieldparam section [Ecoportal::API::V2::Page::Permit] the created permit
76
+ def add_permit(value, &block)
77
+ props = ["user_id", "user_name", "user_email"]
78
+ hash_props = case value
79
+ when Ecoportal::API::Internal::Person
80
+ return false unless account = value.account
81
+ props.zip([account.user_id, value.name, value.email]).to_h
82
+ when Hash
83
+ value.slice(*props)
84
+ else
85
+ raise ArgumentError.new("Expected Ecoportal::API::Internal::Person or Hash. Given: #{value.class}")
86
+ end
87
+ hash_doc = Ecoportal::API::V2::Page::Permit.new_doc.merge(hash_props)
88
+ exists = self.permits.any? {|permit| permit.user_id == hash_doc["user_id"]}
89
+ return false if exists
90
+ self.permits.upsert!(hash_doc, &block)
91
+ end
69
92
  end
70
93
  end
71
94
  end
@@ -1,5 +1,5 @@
1
1
  module Ecoportal
2
2
  module API
3
- GEM2_VERSION = "0.8.25"
3
+ GEM2_VERSION = "0.8.26"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ecoportal-api-v2
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.25
4
+ version: 0.8.26
5
5
  platform: ruby
6
6
  authors:
7
7
  - Oscar Segura
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-02-03 00:00:00.000000000 Z
11
+ date: 2022-03-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler