Browse Source

Expose mass-add members

Maarten van den Berg 7 years ago
parent
commit
f877571c8e

+ 5 - 7
app/controllers/groups_controller.rb

1
 class GroupsController < ApplicationController
1
 class GroupsController < ApplicationController
2
   include GroupsHelper
2
   include GroupsHelper
3
-  before_action :set_group, only: [:show, :edit, :update, :destroy, :create_default_subgroup, :update_default_subgroup, :destroy_default_subgroup]
3
+  before_action :set_group, only: [:show, :edit, :update, :destroy, :create_default_subgroup, :update_default_subgroup, :destroy_default_subgroup, :mass_add_members, :process_mass_add_members]
4
   before_action :set_default_subgroup, only: [:update_default_subgroup, :destroy_default_subgroup]
4
   before_action :set_default_subgroup, only: [:update_default_subgroup, :destroy_default_subgroup]
5
-  before_action :require_admin!, only: [:index, :process_mass_add_members, :mass_add_members]
5
+  before_action :require_admin!, only: [:index]
6
   before_action :require_membership!, only: [:show]
6
   before_action :require_membership!, only: [:show]
7
-  before_action :require_leader!, only: [:edit, :update, :destroy, :create_default_subgroup, :update_default_subgroup, :destroy_default_subgroup]
7
+  before_action :require_leader!, only: [:edit, :update, :destroy, :create_default_subgroup, :update_default_subgroup, :destroy_default_subgroup, :process_mass_add_members, :mass_add_members]
8
 
8
 
9
   # GET /groups
9
   # GET /groups
10
   # GET /groups.json
10
   # GET /groups.json
102
   end
102
   end
103
 
103
 
104
   def mass_add_members
104
   def mass_add_members
105
-    @group = Group.find(params[:group_id])
106
   end
105
   end
107
 
106
 
108
   def process_mass_add_members
107
   def process_mass_add_members
109
-    @group = Group.find(params[:group_id])
110
     require 'csv'
108
     require 'csv'
111
     uploaded_io = params[:spreadsheet]
109
     uploaded_io = params[:spreadsheet]
112
     result = Person.from_csv(uploaded_io.read)
110
     result = Person.from_csv(uploaded_io.read)
113
 
111
 
114
     result.each do |p|
112
     result.each do |p|
115
       m = Member.find_by(person: p, group: @group)
113
       m = Member.find_by(person: p, group: @group)
116
-      if not m
114
+      unless m
117
         m = Member.new(person: p, group: @group)
115
         m = Member.new(person: p, group: @group)
118
         m.save!
116
         m.save!
119
       end
117
       end
120
     end
118
     end
121
-    flash_message(:success, "#{result.count} people added to group")
119
+    flash_message(:success, I18n.t('groups.mass_add_success', count: result.count))
122
     redirect_to group_members_path(@group)
120
     redirect_to group_members_path(@group)
123
   end
121
   end
124
 
122
 

+ 1 - 0
app/views/groups/edit.html.haml

59
     .btn-group
59
     .btn-group
60
       = link_to t(:back), @group, class: 'btn btn-default'
60
       = link_to t(:back), @group, class: 'btn btn-default'
61
       = link_to t('activities.mass_import_short'), group_activities_mass_new_path(@group), class: 'btn btn-default'
61
       = link_to t('activities.mass_import_short'), group_activities_mass_new_path(@group), class: 'btn btn-default'
62
+      = link_to t('groups.mass_add_short'), group_mass_add_path(@group), class: 'btn btn-default'

+ 14 - 5
app/views/groups/mass_add_members.html.haml

2
   .row
2
   .row
3
     .col-md-12
3
     .col-md-12
4
       %h1
4
       %h1
5
-        Mass-adding members to
6
-        = @group.name
7
-      = form_tag("/groups/#{@group.id}/mass_add", method: 'post', multipart: true) do
8
-        = file_field_tag 'spreadsheet'
9
-        = submit_tag
5
+        = t 'groups.mass_add_members', group: @group.name
6
+  .row
7
+    .col-md-12
8
+      %p
9
+        = t 'groups.mass_add_explanation'
10
+      = link_to asset_path('batch_persons.csv'), class: 'btn btn-default' do
11
+        = t :download
12
+  .row
13
+    .col-md-12
14
+      = form_tag(group_mass_add_path(@group), method: 'post', multipart: true) do
15
+        .form-group
16
+          = file_field_tag 'spreadsheet', required: true
17
+        .form-group
18
+          = submit_tag("Go!", class: 'btn btn-warning', confirm: t(:areyousure))

+ 5 - 0
config/locales/groups/en.yml

22
     member_updated: "Member updated."
22
     member_updated: "Member updated."
23
     member_removed: "%{name} was removed from the group."
23
     member_removed: "%{name} was removed from the group."
24
 
24
 
25
+    mass_add_members: "Adding multiple members to %{group}"
26
+    mass_add_short: "Import members"
27
+    mass_add_explanation: "Download the example file using the link below, and fill in this file in the format shown. Upload the completed form using the form at the bottom of this page. Note that all data fields will be ignored if a user with the same email address exists. Date of birth is not required."
28
+    mass_add_success: "%{count} members added to group."
29
+
25
     member:
30
     member:
26
       add: "New Member"
31
       add: "New Member"
27
       adding: "Add member to %{name}"
32
       adding: "Add member to %{name}"

+ 5 - 0
config/locales/groups/nl.yml

22
     member_updated: "Lid bijgewerkt."
22
     member_updated: "Lid bijgewerkt."
23
     member_removed: "%{name} is verwijderd uit de groep."
23
     member_removed: "%{name} is verwijderd uit de groep."
24
 
24
 
25
+    mass_add_members: "Meerdere leden toevoegen aan %{group}"
26
+    mass_add_short: "Leden importeren"
27
+    mass_add_explanation: "Download het voorbeeldbestand via de link hieronder, vul de velden in in het formaat zoals aangegeven, en upload het ingevulde formulier via de knop onderaan. Merk op dat aangepaste velden worden genegeerd als al een gebruiker met hetzelfde e-mailadres bestaat. Geboortedatum is niet verplicht."
28
+    mass_add_success: "%{count} leden toegevoegd aan de groep."
29
+
25
     member:
30
     member:
26
       add: "Lid toevoegen"
31
       add: "Lid toevoegen"
27
       adding: "Lid toevoegen aan %{name}"
32
       adding: "Lid toevoegen aan %{name}"

+ 2 - 1
public/batch_persons.csv

1
-first_name,infix,last_name,birth_date,email,organizers
1
+first_name,infix,last_name,birth_date,email
2
+Gekke,,Henkie,1-1-1997,gekkehenkie@maartenberg.nl