decidim-direct_verifications 1.0.2 → 1.1

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