Skip to content

Commit ccc6954

Browse files
Improvements in to manage census (#10)
* Change literals to import form * Improvements in manage census view
1 parent 97f84c7 commit ccc6954

File tree

14 files changed

+80
-51
lines changed

14 files changed

+80
-51
lines changed

app/commands/decidim/stratified_sortitions/admin/import_sample.rb

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,12 @@ module Admin
77
class ImportSample < Decidim::Command
88
# Public: Initializes the command.
99
#
10-
# file - The CSV file to import
10+
# form - A SampleUploadForm with the file blob
1111
# stratified_sortition - The stratified sortition to import samples to
1212
# user - The user performing the import
13-
def initialize(file, stratified_sortition, user)
13+
def initialize(form, stratified_sortition, user)
1414
super()
15-
@file = file
15+
@form = form
1616
@stratified_sortition = stratified_sortition
1717
@user = user
1818
end
@@ -24,8 +24,14 @@ def initialize(file, stratified_sortition, user)
2424
#
2525
# Returns nothing.
2626
def call
27+
return broadcast(:invalid) unless @form.valid?
28+
29+
blob = @form.file
30+
file_content = blob.download
31+
filename = blob.filename.to_s
32+
2733
Decidim::StratifiedSortitions::Admin::ImportSampleJob
28-
.perform_later(@file.read, @file.original_filename, @stratified_sortition, @user)
34+
.perform_later(file_content, filename, @stratified_sortition, @user)
2935
broadcast(:ok)
3036
end
3137
end

app/controllers/decidim/stratified_sortitions/admin/samples_controller.rb

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,9 @@ def download_template
2626
def create
2727
enforce_permission_to :upload_sample, :stratified_sortition
2828

29-
Decidim::StratifiedSortitions::Admin::ImportSample.call(params[:file], stratified_sortition, current_user) do
29+
@form = form(SampleUploadForm).from_params(params)
30+
31+
Decidim::StratifiedSortitions::Admin::ImportSample.call(@form, stratified_sortition, current_user) do
3032
on(:ok) do
3133
flash[:notice] = I18n.t("sample_imports.create.success", scope: "decidim.stratified_sortitions.admin")
3234
redirect_to upload_sample_stratified_sortition_path(stratified_sortition)

app/controllers/decidim/stratified_sortitions/admin/stratified_sortitions_controller.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,7 @@ def upload_sample
102102
enforce_permission_to :upload_sample, :stratified_sortition
103103
if stratified_sortition.strata_and_substrata_configured?
104104
@stratified_sortition = stratified_sortition
105+
@form = SampleUploadForm.new
105106
@sample_participants_count = @stratified_sortition.sample_participants.count
106107
@last_sample = SampleImport.where(stratified_sortition: @stratified_sortition).order(created_at: :desc).first
107108
@samples = SampleImport.where(stratified_sortition: @stratified_sortition).order(created_at: :asc)
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
# frozen_string_literal: true
2+
3+
module Decidim
4+
module StratifiedSortitions
5+
module Admin
6+
class SampleUploadForm < Decidim::Form
7+
include Decidim::HasUploadValidations
8+
9+
attribute :file, Decidim::Attributes::Blob
10+
11+
validates :file, presence: true
12+
end
13+
end
14+
end
15+
end

app/models/decidim/stratified_sortitions/stratified_sortition.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ class StratifiedSortition < ApplicationRecord
1717
component_manifest_name "stratified_sortitions"
1818

1919
has_many :strata, class_name: "Decidim::StratifiedSortitions::Stratum", foreign_key: "decidim_stratified_sortition_id", dependent: :destroy
20+
has_many :sample_imports, class_name: "Decidim::StratifiedSortitions::SampleImport", dependent: :destroy
2021
has_many :sample_participants, class_name: "Decidim::StratifiedSortitions::SampleParticipant", foreign_key: "decidim_stratified_sortition_id", dependent: :destroy
2122
has_one :panel_portfolio, class_name: "Decidim::StratifiedSortitions::PanelPortfolio", foreign_key: "decidim_stratified_sortitions_stratified_sortition_id",
2223
dependent: :destroy

app/models/decidim/stratified_sortitions/stratum.rb

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,9 @@ class Stratum < ApplicationRecord
1010

1111
belongs_to :stratified_sortition, class_name: "Decidim::StratifiedSortitions::StratifiedSortition", foreign_key: "decidim_stratified_sortition_id"
1212
has_many :substrata, class_name: "Decidim::StratifiedSortitions::Substratum", foreign_key: "decidim_stratified_sortitions_stratum_id", dependent: :destroy
13+
has_many :sample_participant_strata, class_name: "Decidim::StratifiedSortitions::SampleParticipantStratum",
14+
foreign_key: "decidim_stratified_sortitions_stratum_id",
15+
dependent: :destroy
1316

1417
KINDS = %w(value numeric_range).freeze
1518

app/models/decidim/stratified_sortitions/substratum.rb

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,9 @@ class Substratum < ApplicationRecord
99
include Decidim::TranslatableAttributes
1010

1111
belongs_to :stratum, class_name: "Decidim::StratifiedSortitions::Stratum", foreign_key: "decidim_stratified_sortitions_stratum_id"
12+
has_many :sample_participant_strata, class_name: "Decidim::StratifiedSortitions::SampleParticipantStratum",
13+
foreign_key: "decidim_stratified_sortitions_substratum_id",
14+
dependent: :destroy
1215

1316
translatable_fields :name
1417
end
Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,16 @@
1-
document.addEventListener('DOMContentLoaded', () => {
2-
const fileInput = document.getElementById('sample-file-input');
3-
const submitButton = document.getElementById('sample-submit-button');
1+
document.addEventListener("DOMContentLoaded", () => {
2+
const form = document.getElementById("sample-upload-form");
3+
if (!form) return;
44

5-
if (!fileInput || !submitButton) return;
5+
const modal = form.querySelector("[data-dialog]");
6+
if (!modal) return;
67

7-
const toggle = () => {
8-
const hasFile = fileInput.files && fileInput.files.length > 0;
9-
submitButton.disabled = !hasFile;
10-
};
8+
const saveButton = modal.querySelector("[data-dropzone-save]");
9+
if (!saveButton) return;
1110

12-
toggle();
13-
fileInput.addEventListener('change', toggle);
11+
saveButton.addEventListener("click", () => {
12+
// Allow Decidim's upload_field.js handler to run first (updateActiveUploads),
13+
// then submit the form.
14+
setTimeout(() => form.submit(), 100);
15+
});
1416
});

app/packs/stylesheets/decidim/stratified_sortitions/admin/stratified_sortitions.scss

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -187,4 +187,8 @@ input[readonly] {
187187
border-bottom: 2px solid rgba(21, 90, 191, 1);
188188
}
189189
}
190+
}
191+
192+
.upload-census-btn {
193+
margin: 0 !important;
190194
}

app/views/decidim/stratified_sortitions/admin/stratified_sortitions/execute.html.erb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
<button type="button"
1111
class="button button__sm button__secondary"
1212
data-dialog-open="confirm-execute-modal"
13-
disabled="<%= stratified_sortition.panel_portfolio&.sampled? %>">
13+
<%= 'disabled' if stratified_sortition.panel_portfolio&.sampled? %>>
1414
<%= t('.execute_stratified_sortition') %>
1515
</button>
1616
<% if stratified_sortition.panel_portfolio&.sampled? %>

0 commit comments

Comments
 (0)