decidim-direct_verifications 1.0.2 → 1.1

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: 42d98e0b62840fec678713b3538cc6c6bc10c1a76e813e02e0ce6a848b65924e
4
- data.tar.gz: 811a6783064250e01d8bed38e68495a341774ce7a86c1927e65719263c465f6a
3
+ metadata.gz: e42a469a3e54d28a703c6565abdb73aa70d33c540882e8737c0e92592d18d238
4
+ data.tar.gz: 1c2ff4b72713ad26ba30b350efbcc31840fa42aac1f171faa32f0b1b64596d22
5
5
  SHA512:
6
- metadata.gz: 96b417c297794fa7c6e8cef31d7627b0cfe961e10005a3f6eaa57a42f46830d408f021f850ff949daa1756884cb814985af6f0a789c566403faca55d80f4804b
7
- data.tar.gz: b0ca0ef2dc79844b1d3d1ff48284debe43c32d0f581fb33ef868d9a9707f46ff82dc30914670c1ce0a8ad9e7e5d27dde577bb05f2327df2f489a7336643af90b
6
+ metadata.gz: 1514cdfd920925b28b1d89e4c615a4ce0a97ceca4a85fcffab0706e6b740e0ae11541c04ce77a992da7aa21ef6b289795abf8cd3ccb950f7c1613531b3f57460
7
+ data.tar.gz: 618916a01ea8ac5fb19188e1b10d15c56a40ed6648da422d5d48c16a93feb8a2ff1f5507ac88f62a08c0651a704fb5c2a5efa502d887b2df07b6eb1bca8f66a4
data/README.md CHANGED
@@ -73,6 +73,7 @@ Depending on your Decidim version, you might want to specify the version to ensu
73
73
 
74
74
  | Direct Verifications version | Compatible Decidim versions |
75
75
  |---|---|
76
+ | 1.1 | >= 0.25.x |
76
77
  | 1.0 | >= 0.23.x |
77
78
  | 0.22.x | 0.22.x |
78
79
 
@@ -15,7 +15,6 @@ module Decidim
15
15
  def call
16
16
  return broadcast(:invalid) unless form.valid?
17
17
 
18
- save_or_upload_file!
19
18
  case action
20
19
  when :register
21
20
  register_users_async(remove_file: true)
@@ -36,20 +35,19 @@ module Decidim
36
35
  attr_reader :form, :file, :organization, :user, :action
37
36
 
38
37
  def register_users_async(options = {})
39
- RegisterUsersJob.perform_later(secure_name, organization, user, form.authorization_handler, options)
38
+ RegisterUsersJob.perform_later(blob.id, organization, user, form.authorization_handler, options)
40
39
  end
41
40
 
42
41
  def revoke_users_async(options = {})
43
- RevokeUsersJob.perform_later(secure_name, organization, user, form.authorization_handler, options)
42
+ RevokeUsersJob.perform_later(blob.id, organization, user, form.authorization_handler, options)
44
43
  end
45
44
 
46
45
  def authorize_users_async(options = {})
47
- AuthorizeUsersJob.perform_later(secure_name, organization, user, form.authorization_handler, options)
46
+ AuthorizeUsersJob.perform_later(blob.id, organization, user, form.authorization_handler, options)
48
47
  end
49
48
 
50
- def save_or_upload_file!
51
- file.instance_variable_set(:@original_filename, secure_name)
52
- CsvUploader.new(organization).store!(file)
49
+ def blob
50
+ @blob ||= ActiveStorage::Blob.create_and_upload!(io: file, filename: secure_name)
53
51
  end
54
52
 
55
53
  def secure_name
@@ -10,8 +10,8 @@ module Decidim
10
10
  class BaseImportJob < ApplicationJob
11
11
  queue_as :default
12
12
 
13
- def perform(filename, organization, current_user, authorization_handler, options = {})
14
- @filename = filename
13
+ def perform(blob_id, organization, current_user, authorization_handler, options = {})
14
+ @blob = ActiveStorage::Blob.find(blob_id)
15
15
  @organization = organization
16
16
  @current_user = current_user
17
17
  @authorization_handler = authorization_handler
@@ -20,7 +20,7 @@ module Decidim
20
20
  @emails = Parsers::MetadataParser.new(userslist).to_h
21
21
  @instrumenter = Instrumenter.new(current_user)
22
22
 
23
- Rails.logger.info "BaseImportJob: Processing file #{filename}"
23
+ Rails.logger.info "BaseImportJob: Processing file #{@blob.filename}"
24
24
  process_users
25
25
  send_email_notification
26
26
  rescue StandardError => e
@@ -31,14 +31,10 @@ module Decidim
31
31
 
32
32
  private
33
33
 
34
- attr_reader :uploader, :filename, :emails, :organization, :current_user, :instrumenter, :authorization_handler
34
+ attr_reader :blob, :emails, :organization, :current_user, :instrumenter, :authorization_handler
35
35
 
36
36
  def userslist
37
- return @userslist if @userslist
38
-
39
- @uploader = CsvUploader.new(organization)
40
- @uploader.retrieve_from_store!(filename)
41
- @userslist = @uploader.file.read.force_encoding("UTF-8")
37
+ @userslist ||= blob.download.force_encoding("UTF-8")
42
38
  end
43
39
 
44
40
  def send_email_notification
@@ -51,7 +47,7 @@ module Decidim
51
47
  end
52
48
 
53
49
  def remove_file!
54
- uploader.remove!
50
+ blob.purge
55
51
  end
56
52
  end
57
53
  end
@@ -0,0 +1,4 @@
1
+ import "src/decidim/direct_verifications/admin/checkboxes.js"
2
+
3
+ // CSS
4
+ import "entrypoints/decidim_direct_verifications.scss";
@@ -0,0 +1 @@
1
+ @import "stylesheets/decidim/direct_verifications/admin/authorizations";
@@ -0,0 +1,7 @@
1
+ // = require_self
2
+
3
+ $(() => {
4
+ $('[type="checkbox"]#register').change(function () {
5
+ $(this).closest("label").find(".callout").toggleClass("hide", !$(this).prop("checked"))
6
+ })
7
+ })
@@ -1,4 +1,4 @@
1
- @import "decidim/admin/utils/settings";
1
+ @import "stylesheets/decidim/admin/utils/settings";
2
2
 
3
3
  $code-color: $black;
4
4
  $code-font-family: $font-family-monospace;
@@ -1,4 +1,4 @@
1
- <%= stylesheet_link_tag "decidim/direct_verifications/authorizations" %>
1
+ <%= stylesheet_pack_tag "decidim_direct_verifications" %>
2
2
 
3
3
  <div class="card">
4
4
  <div class="card-divider">
@@ -42,4 +42,4 @@
42
42
  </div>
43
43
  </div>
44
44
 
45
- <%= javascript_include_tag "decidim/direct_verifications/verification/admin/direct_verifications_admin" %>
45
+ <%= javascript_pack_tag "decidim_direct_verifications" %>
@@ -47,4 +47,4 @@
47
47
  </div>
48
48
  </div>
49
49
 
50
- <%= javascript_include_tag "decidim/direct_verifications/verification/admin/direct_verifications_admin" %>
50
+ <%= javascript_pack_tag "decidim_direct_verifications" %>
data/config/assets.rb ADDED
@@ -0,0 +1,24 @@
1
+ # frozen_string_literal: true
2
+
3
+ # This file is located at `config/assets.rb` of your module.
4
+
5
+ # Define the base path of your module. Please note that `Rails.root` may not be
6
+ # used because we are not inside the Rails environment when this file is loaded.
7
+ base_path = File.expand_path("..", __dir__)
8
+
9
+ # Register an additional load path for webpack. All the assets within these
10
+ # directories will be available for inclusion within the Decidim assets. For
11
+ # example, if you have `app/packs/src/decidim/foo.js`, you can include that file
12
+ # in your JavaScript entrypoints (or other JavaScript files within Decidim)
13
+ # using `import "src/decidim/foo"` after you have registered the additional path
14
+ # as follows.
15
+ Decidim::Webpacker.register_path("#{base_path}/app/packs")
16
+
17
+ # Register the entrypoints for your module. These entrypoints can be included
18
+ # within your application using `javascript_pack_tag` and if you include any
19
+ # SCSS files within the entrypoints, they become available for inclusion using
20
+ # `stylesheet_pack_tag`.
21
+ Decidim::Webpacker.register_entrypoints(
22
+ decidim_direct_verifications: "#{base_path}/app/packs/entrypoints/decidim_direct_verifications.js",
23
+ decidim_direct_verifications_css: "#{base_path}/app/packs/entrypoints/decidim_direct_verifications.scss"
24
+ )
@@ -16,11 +16,8 @@ module Decidim
16
16
  root to: "direct_verifications#index"
17
17
  end
18
18
 
19
- initializer "decidim_direct_verifications.admin_assets" do |app|
20
- app.config.assets.precompile += %w(
21
- direct_verifications_admin_manifest.js
22
- direct_verifications_admin_manifest.css
23
- )
19
+ initializer "decidim_notify.webpacker.assets_path" do
20
+ Decidim.register_assets_path File.expand_path("app/packs", root)
24
21
  end
25
22
  end
26
23
  end
@@ -3,8 +3,8 @@
3
3
  module Decidim
4
4
  # This holds the decidim-direct_verifications version.
5
5
  module DirectVerifications
6
- VERSION = "1.0.2"
7
- DECIDIM_VERSION = "0.24.3"
8
- MIN_DECIDIM_VERSION = ">= 0.23.0"
6
+ VERSION = "1.1"
7
+ DECIDIM_VERSION = "0.26.0"
8
+ MIN_DECIDIM_VERSION = ">= 0.25.0"
9
9
  end
10
10
  end
data/package.json ADDED
@@ -0,0 +1,192 @@
1
+ {
2
+ "name": "decidim-verifications-direct_verifications",
3
+ "version": "1.1.0",
4
+ "description": "A tool for Decidim that allows to track time spent by volunteers doing any arbitrary task",
5
+ "scripts": {
6
+ "lint": "eslint -c .eslintrc.json --ext .js app/packs/",
7
+ "lint-fix": "eslint -c .eslintrc.json --ext .js app/packs/ --fix",
8
+ "stylelint": "stylelint **/*.scss",
9
+ "stylelint-fix": "stylelint **/*.scss --fix"
10
+ },
11
+ "repository": {
12
+ "type": "git",
13
+ "url": "git+https://github.com/Platoniq/decidim-verifications-direct_verifications.git"
14
+ },
15
+ "keywords": [
16
+ "decidim"
17
+ ],
18
+ "author": "ivan@platoniq.net",
19
+ "license": "AGPL-3.0-or-later",
20
+ "bugs": {
21
+ "url": "https://github.com/Platoniq/decidim-verifications-direct_verifications/issues"
22
+ },
23
+ "homepage": "https://github.com/Platoniq/decidim-verifications-direct_verifications#readme",
24
+ "stylelint": {
25
+ "rules": {
26
+ "at-rule-empty-line-before": [
27
+ "always",
28
+ {
29
+ "except": [
30
+ "blockless-after-same-name-blockless",
31
+ "first-nested"
32
+ ],
33
+ "ignore": [
34
+ "after-comment"
35
+ ],
36
+ "ignoreAtRules": [
37
+ "else"
38
+ ]
39
+ }
40
+ ],
41
+ "at-rule-name-case": "lower",
42
+ "at-rule-semicolon-newline-after": "always",
43
+ "block-closing-brace-empty-line-before": "never",
44
+ "block-closing-brace-newline-after": "always",
45
+ "block-closing-brace-newline-before": "always-multi-line",
46
+ "block-closing-brace-space-before": "always-single-line",
47
+ "block-no-empty": true,
48
+ "block-opening-brace-newline-after": "always-multi-line",
49
+ "block-opening-brace-space-after": "always-single-line",
50
+ "block-opening-brace-space-before": "always",
51
+ "color-hex-case": "lower",
52
+ "color-hex-length": "short",
53
+ "color-no-invalid-hex": true,
54
+ "comment-empty-line-before": [
55
+ "always",
56
+ {
57
+ "except": [
58
+ "first-nested"
59
+ ],
60
+ "ignore": [
61
+ "stylelint-commands"
62
+ ]
63
+ }
64
+ ],
65
+ "comment-no-empty": true,
66
+ "comment-whitespace-inside": "always",
67
+ "custom-property-empty-line-before": [
68
+ "always",
69
+ {
70
+ "except": [
71
+ "after-custom-property",
72
+ "first-nested"
73
+ ],
74
+ "ignore": [
75
+ "after-comment",
76
+ "inside-single-line-block"
77
+ ]
78
+ }
79
+ ],
80
+ "declaration-bang-space-after": "never",
81
+ "declaration-bang-space-before": "always",
82
+ "declaration-block-no-duplicate-properties": [
83
+ true,
84
+ {
85
+ "ignore": [
86
+ "consecutive-duplicates-with-different-values"
87
+ ]
88
+ }
89
+ ],
90
+ "declaration-block-no-redundant-longhand-properties": true,
91
+ "declaration-block-no-shorthand-property-overrides": true,
92
+ "declaration-block-semicolon-newline-after": "always-multi-line",
93
+ "declaration-block-semicolon-space-after": "always-single-line",
94
+ "declaration-block-semicolon-space-before": "never",
95
+ "declaration-block-single-line-max-declarations": 1,
96
+ "declaration-block-trailing-semicolon": "always",
97
+ "declaration-colon-newline-after": "always-multi-line",
98
+ "declaration-colon-space-after": "always-single-line",
99
+ "declaration-colon-space-before": "never",
100
+ "declaration-empty-line-before": [
101
+ "always",
102
+ {
103
+ "except": [
104
+ "after-declaration",
105
+ "first-nested"
106
+ ],
107
+ "ignore": [
108
+ "after-comment",
109
+ "inside-single-line-block"
110
+ ]
111
+ }
112
+ ],
113
+ "function-calc-no-unspaced-operator": true,
114
+ "function-comma-newline-after": "always-multi-line",
115
+ "function-comma-space-after": "always-single-line",
116
+ "function-comma-space-before": "never",
117
+ "function-linear-gradient-no-nonstandard-direction": true,
118
+ "function-max-empty-lines": 0,
119
+ "function-name-case": "lower",
120
+ "function-parentheses-newline-inside": "always-multi-line",
121
+ "function-parentheses-space-inside": "never-single-line",
122
+ "function-whitespace-after": "always",
123
+ "indentation": 2,
124
+ "keyframe-declaration-no-important": true,
125
+ "length-zero-no-unit": true,
126
+ "max-empty-lines": 1,
127
+ "media-feature-colon-space-after": "always",
128
+ "media-feature-colon-space-before": "never",
129
+ "media-feature-name-case": "lower",
130
+ "media-feature-name-no-unknown": true,
131
+ "media-feature-parentheses-space-inside": "never",
132
+ "media-feature-range-operator-space-after": "always",
133
+ "media-feature-range-operator-space-before": "always",
134
+ "media-query-list-comma-newline-after": "always-multi-line",
135
+ "media-query-list-comma-space-after": "always-single-line",
136
+ "media-query-list-comma-space-before": "never",
137
+ "no-empty-source": true,
138
+ "no-eol-whitespace": true,
139
+ "no-extra-semicolons": true,
140
+ "no-invalid-double-slash-comments": true,
141
+ "no-missing-end-of-source-newline": true,
142
+ "number-leading-zero": "never",
143
+ "number-no-trailing-zeros": true,
144
+ "property-case": "lower",
145
+ "property-no-unknown": true,
146
+ "rule-empty-line-before": [
147
+ "always-multi-line",
148
+ {
149
+ "except": [
150
+ "first-nested"
151
+ ],
152
+ "ignore": [
153
+ "after-comment"
154
+ ]
155
+ }
156
+ ],
157
+ "selector-attribute-brackets-space-inside": "never",
158
+ "selector-attribute-operator-space-after": "never",
159
+ "selector-attribute-operator-space-before": "never",
160
+ "selector-combinator-space-after": "always",
161
+ "selector-combinator-space-before": "always",
162
+ "selector-descendant-combinator-no-non-space": true,
163
+ "selector-list-comma-newline-after": "always",
164
+ "selector-list-comma-space-before": "never",
165
+ "selector-max-empty-lines": 0,
166
+ "selector-pseudo-class-case": "lower",
167
+ "selector-pseudo-class-no-unknown": true,
168
+ "selector-pseudo-class-parentheses-space-inside": "never",
169
+ "selector-pseudo-element-case": "lower",
170
+ "selector-pseudo-element-colon-notation": "double",
171
+ "selector-pseudo-element-no-unknown": true,
172
+ "selector-type-case": "lower",
173
+ "selector-type-no-unknown": true,
174
+ "shorthand-property-no-redundant-values": true,
175
+ "string-no-newline": true,
176
+ "unit-case": "lower",
177
+ "unit-no-unknown": true,
178
+ "value-list-comma-newline-after": "always-multi-line",
179
+ "value-list-comma-space-after": "always-single-line",
180
+ "value-list-comma-space-before": "never",
181
+ "value-list-max-empty-lines": 0
182
+ }
183
+ },
184
+ "devDependencies": {
185
+ "eslint": "^7.32.0",
186
+ "eslint": "^7.25.0",
187
+ "eslint-config-prettier": "^8.2.0",
188
+ "eslint-config-standard": "^11.0.0",
189
+ "eslint-plugin-import": "^2.22.0",
190
+ "stylelint": "13.11.0"
191
+ }
192
+ }
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: decidim-direct_verifications
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.2
4
+ version: '1.1'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ivan Vergés
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-04-04 00:00:00.000000000 Z
11
+ date: 2022-03-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: decidim-admin
@@ -16,28 +16,28 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: 0.23.0
19
+ version: 0.25.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: 0.23.0
26
+ version: 0.25.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: decidim-core
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: 0.23.0
33
+ version: 0.25.0
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
- version: 0.23.0
40
+ version: 0.25.0
41
41
  description: Provides a verification method that also registers users directly in
42
42
  the platform. Can be used to mass verificate user with other verification handlers
43
43
  email:
@@ -49,10 +49,6 @@ files:
49
49
  - LICENSE-AGPLv3.txt
50
50
  - README.md
51
51
  - Rakefile
52
- - app/assets/config/direct_verifications_admin_manifest.css
53
- - app/assets/config/direct_verifications_admin_manifest.js
54
- - app/assets/javascripts/decidim/direct_verifications/verification/admin/direct_verifications_admin.js.es6
55
- - app/assets/stylesheets/decidim/direct_verifications/authorizations.scss
56
52
  - app/commands/decidim/direct_verifications/verification/confirm_user_authorization.rb
57
53
  - app/commands/decidim/direct_verifications/verification/create_import.rb
58
54
  - app/commands/decidim/direct_verifications/verification/destroy_user_authorization.rb
@@ -70,7 +66,10 @@ files:
70
66
  - app/jobs/decidim/direct_verifications/revoke_users_job.rb
71
67
  - app/mailers/decidim/direct_verifications/import_mailer.rb
72
68
  - app/mailers/decidim/direct_verifications/stats.rb
73
- - app/uploaders/decidim/direct_verifications/csv_uploader.rb
69
+ - app/packs/entrypoints/decidim_direct_verifications.js
70
+ - app/packs/entrypoints/decidim_direct_verifications.scss
71
+ - app/packs/src/decidim/direct_verifications/admin/checkboxes.js
72
+ - app/packs/stylesheets/decidim/direct_verifications/admin/authorizations.scss
74
73
  - app/views/decidim/direct_verifications/import_mailer/finished_processing.html.erb
75
74
  - app/views/decidim/direct_verifications/import_mailer/finished_processing.text.erb
76
75
  - app/views/decidim/direct_verifications/verification/admin/authorizations/index.html.erb
@@ -79,6 +78,7 @@ files:
79
78
  - app/views/decidim/direct_verifications/verification/admin/stats/index.html.erb
80
79
  - app/views/devise/mailer/direct_invite.html.erb
81
80
  - app/views/devise/mailer/direct_invite.text.erb
81
+ - config/assets.rb
82
82
  - config/initializers/mail_previews.rb
83
83
  - config/locales/ca.yml
84
84
  - config/locales/cs.yml
@@ -104,6 +104,7 @@ files:
104
104
  - lib/decidim/direct_verifications/verification/engine.rb
105
105
  - lib/decidim/direct_verifications/verification/workflow.rb
106
106
  - lib/decidim/direct_verifications/version.rb
107
+ - package.json
107
108
  homepage: https://github.com/Platoniq/decidim-verifications-direct_verifications
108
109
  licenses:
109
110
  - AGPL-3.0
@@ -1,3 +0,0 @@
1
- /*
2
- *= link decidim/direct_verifications/authorizations.css
3
- */
@@ -1 +0,0 @@
1
- //= link decidim/direct_verifications/verification/admin/direct_verifications_admin.js
@@ -1,7 +0,0 @@
1
- // = require_self
2
-
3
- $(() => {
4
- $('[type="checkbox"]#register').change(function () {
5
- $(this).closest('label').find('.callout').toggleClass('hide', !$(this).prop('checked'))
6
- })
7
- })
@@ -1,16 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Decidim
4
- module DirectVerifications
5
- class CsvUploader < ApplicationUploader
6
- # Override the directory where uploaded files will be stored.
7
- def store_dir
8
- default_path = "uploads/direct-verifications/"
9
-
10
- return File.join(Decidim.base_uploads_path, default_path) if Decidim.base_uploads_path.present?
11
-
12
- default_path
13
- end
14
- end
15
- end
16
- end