ecoportal-api-v2 0.8.25 → 0.8.26

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