Skip to content

Commit e778e31

Browse files
committed
Transform event filtered list to filter chain (hitobito/hitobito_sac_cas#2366)
1 parent 5717a4d commit e778e31

File tree

15 files changed

+279
-243
lines changed

15 files changed

+279
-243
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ Gemfile.lock
2020
# reports
2121
spec/coverage
2222
spec/reports
23+
coverage/
2324
brakeman-output.tabs
2425
rubocop-results.xml
2526
.tool-versions

app/controllers/pbs/event/lists_controller.rb

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,9 @@ module Pbs::Event::ListsController
77
extend ActiveSupport::Concern
88

99
included do
10-
# required to allow api calls
11-
protect_from_forgery with: :null_session, only: [:bsv_export]
12-
1310
skip_authorization_check only: :camps
1411
skip_authorize_resource only: [:camps, :all_camps, :kantonalverband_camps,
1512
:camps_in_canton, :camps_abroad]
16-
alias_method_chain :render_bsv_export, :advanced
1713
end
1814

1915
# simple redirect action acting as a generic entry point from the main navigation
@@ -67,15 +63,6 @@ def camps_abroad
6763

6864
private
6965

70-
def render_bsv_export_with_advanced(courses_for_bsv_export)
71-
if params[:advanced]
72-
send_data(Export::Tabular::Events::AdvancedBsvList.csv(courses_for_bsv_export),
73-
type: :csv, filename: "advanced_bsv_export.csv")
74-
else
75-
render_bsv_export_without_advanced(courses_for_bsv_export)
76-
end
77-
end
78-
7966
def render_camp_list(camps)
8067
respond_to do |format|
8168
format.html { @camps = grouped(camps) }
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
# Copyright (c) 2012-2015, Pfadibewegung Schweiz. This file is part of
2+
# hitobito_pbs and licensed under the Affero General Public License version 3
3+
# or later. See the COPYING file at the top-level directory or at
4+
# https://github.com/hitobito/hitobito_pbs.
5+
6+
module Pbs::Events::CoursesController
7+
extend ActiveSupport::Concern
8+
9+
prepended do
10+
# required to allow api calls
11+
protect_from_forgery with: :null_session, only: [:bsv_export]
12+
end
13+
14+
private
15+
16+
def render_bsv_export(courses_for_bsv_export)
17+
if params[:advanced]
18+
send_data(Export::Tabular::Events::AdvancedBsvList.csv(courses_for_bsv_export),
19+
type: :csv, filename: "advanced_bsv_export.csv")
20+
else
21+
super(courses_for_bsv_export)
22+
end
23+
end
24+
end

app/domain/pbs/event/filter.rb

Lines changed: 0 additions & 38 deletions
This file was deleted.
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
# Copyright (c) 2012-2018, Pfadibewegung Schweiz. This file is part of
2+
# hitobito_pbs and licensed under the Affero General Public License version 3
3+
# or later. See the COPYING file at the top-level directory or at
4+
# https://github.com/hitobito/hitobito_pbs.
5+
6+
module Pbs::Events::Filter::CourseList
7+
private
8+
9+
def accessible_courses
10+
if params[:list_all_courses] == true
11+
Event::Course.all
12+
else
13+
Event::Course.in_hierarchy(user)
14+
end
15+
end
16+
end
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
# Copyright (c) 2012-2018, Pfadibewegung Schweiz. This file is part of
2+
# hitobito_pbs and licensed under the Affero General Public License version 3
3+
# or later. See the COPYING file at the top-level directory or at
4+
# https://github.com/hitobito/hitobito_pbs.
5+
6+
module Pbs::Events::Filter::GroupList
7+
private
8+
9+
def filter_with_selection
10+
return super unless range == "canton"
11+
12+
super.where(canton: cantons)
13+
end
14+
15+
def relevant_group_ids
16+
return super unless range == "canton"
17+
18+
Group.select(:id)
19+
end
20+
21+
def cantons
22+
if group.respond_to?(:kantonalverband)
23+
group.kantonalverband.cantons
24+
end.to_a
25+
end
26+
end

app/domain/pbs/events/filter/groups.rb

Lines changed: 0 additions & 18 deletions
This file was deleted.
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
= action_button(t('event.lists.advanced_bsv_export_button'),
1+
= action_button(t('events/courses.advanced_bsv_export_button'),
22
nil,
33
:download,
4-
title: t('event.lists.bsv_export_button'),
4+
title: t('events/courses.bsv_export_button'),
55
data: { bs_toggle: 'popover',
66
bs_content: render('popover_bsv_export', advanced: true).to_str })

config/locales/views.pbs.de.yml

Lines changed: 21 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,9 @@ de:
1515
index:
1616
no_data_for_this_year: Für dieses Jahr sind keine Angaben vorhanden.
1717
infos:
18-
census_evaluation:
19-
Die Bestandesmeldungen für %{year} können ab dem %{start_at} erfasst werden.
20-
census_evaluation_active:
21-
Die aktuellen Bestandesmeldungen für %{year} können ab dem %{start_at} erfasst werden.
22-
census_evaluation_reference_date:
23-
Stichtag ist der %{finish_at}
18+
census_evaluation: Die Bestandesmeldungen für %{year} können ab dem %{start_at} erfasst werden.
19+
census_evaluation_active: Die aktuellen Bestandesmeldungen für %{year} können ab dem %{start_at} erfasst werden.
20+
census_evaluation_reference_date: Stichtag ist der %{finish_at}
2421
abteilung:
2522
actions_index:
2623
create_population_data: Aktuellen Bestand erzeugen
@@ -38,7 +35,7 @@ de:
3835

3936
crises:
4037
update:
41-
too_old: Die Krise ist zu alt um zu quittieren
38+
too_old: Die Krise ist zu alt um zu quittieren
4239

4340
devise:
4441
sessions:
@@ -95,17 +92,16 @@ de:
9592
camps_abroad: Lager im Ausland
9693
all_camps:
9794
title: Bevorstehende Lager in der ganzen Schweiz
98-
explanation: 'Hier werden alle Lager der gesamten PBS angezeigt, welche aktuell oder in drei oder weniger Wochen durchgeführt werden angezeigt. Dabei werden nur Lager berücksichtigt, welche eingereicht wurden und die nicht abgesagt sind.'
95+
explanation: "Hier werden alle Lager der gesamten PBS angezeigt, welche aktuell oder in drei oder weniger Wochen durchgeführt werden angezeigt. Dabei werden nur Lager berücksichtigt, welche eingereicht wurden und die nicht abgesagt sind."
9996
kantonalverband_camps:
10097
title: Alle Lager im Kantonalverband %{group}
101-
explanation: 'Hier werden alle Lager, welche innerhalb des entsprechenden Kantonalverbandes organisiert werden angezeigt. Dabei werden nur Lager berücksichtigt, welche eingereicht wurden und deren Status bestätigt oder höher ist und die nicht abgesagt sind.'
98+
explanation: "Hier werden alle Lager, welche innerhalb des entsprechenden Kantonalverbandes organisiert werden angezeigt. Dabei werden nur Lager berücksichtigt, welche eingereicht wurden und deren Status bestätigt oder höher ist und die nicht abgesagt sind."
10299
camps_in_canton:
103100
title: Alle Lager im Kanton %{canton}
104-
explanation: 'Hier werden alle Lager, welche aktuell oder in drei oder weniger Wochen im entsprechenden Kanton stattfinden angezeigt. Dabei werden nur Lager berücksichtigt, welche eingereicht wurden und deren Status bestätigt oder höher ist und die nicht abgesagt sind.'
101+
explanation: "Hier werden alle Lager, welche aktuell oder in drei oder weniger Wochen im entsprechenden Kanton stattfinden angezeigt. Dabei werden nur Lager berücksichtigt, welche eingereicht wurden und deren Status bestätigt oder höher ist und die nicht abgesagt sind."
105102
camps_abroad:
106103
title: Alle Lager im Ausland
107-
explanation: 'Hier werden alle Lager, welche im Ausland stattfinden angezeigt. Dabei werden nur Lager berücksichtigt, welche eingereicht wurden und deren Status bestätigt oder höher ist und die nicht abgesagt sind.'
108-
advanced_bsv_export_button: Erweiterter BSV/LKB Export
104+
explanation: "Hier werden alle Lager, welche im Ausland stattfinden angezeigt. Dabei werden nur Lager berücksichtigt, welche eingereicht wurden und deren Status bestätigt oder höher ist und die nicht abgesagt sind."
109105
hierarchy: Lagerhierarchie
110106

111107
participations:
@@ -159,15 +155,15 @@ de:
159155

160156
event/camp:
161157
al_present_info:
162-
'true': Im Lager anwesend
163-
'false': Nicht im Lager anwesend
158+
"true": Im Lager anwesend
159+
"false": Nicht im Lager anwesend
164160
visiting_info:
165161
at: Besucht das Lager am %{date}
166-
'true': Besucht das Lager
167-
'false': Besucht das Lager nicht
162+
"true": Besucht das Lager
163+
"false": Besucht das Lager nicht
168164
coach_confirmed_info:
169-
'true': Bestätigt
170-
'false': Nicht bestätigt
165+
"true": Bestätigt
166+
"false": Nicht bestätigt
171167
checkpoint_field_caption: Kann nur von dem*der Lagerleiter*in bestätigt werden
172168

173169
event/course:
@@ -198,8 +194,8 @@ de:
198194
create_camp_application:
199195
flash:
200196
success: Das Lager wurde an die PBS eingereicht. Du erhältst eine Kopie des E-Mails.
201-
error: 'Das Lager konnte nicht eingereicht werden:'
202-
preview: 'Das Lager kann noch nicht durch den*die Coach eingereicht werden:'
197+
error: "Das Lager konnte nicht eingereicht werden:"
198+
preview: "Das Lager kann noch nicht durch den*die Coach eingereicht werden:"
203199
preview_success: Es sind alle Informationen zum Einreichen des Lagers vorhanden.
204200
expected_participants_fields:
205201
expected_participants_help_inline: Hier wird die Anzahl TN und die Anzahl der Leiter*innen eingetragen. Sind diese Angaben noch nicht bekannt, wird die erwartete Anzahl angegeben.
@@ -262,8 +258,11 @@ de:
262258
vd_title: Beachte die Sonderregelung für Lager im Kanton Waadt («Hering» -> Kantonale Sonderregelungen)
263259
vd_url: http://hering.scouts.ch
264260

261+
events/courses:
262+
advanced_bsv_export_button: Erweiterter BSV/LKB Export
263+
265264
filter_navigation/events:
266-
canton: 'durchgeführt im Kanton'
265+
canton: "durchgeführt im Kanton"
267266

268267
filter_navigation/camps:
269268
all: Alle untergeordneten Lager
@@ -276,7 +275,7 @@ de:
276275
pending_approvals:
277276
index:
278277
pending_title: Offene Freigaben
279-
pending_info: 'Folgende Personen haben sich für einen Kurs angemeldet und müssen durch dich freigegeben werden:'
278+
pending_info: "Folgende Personen haben sich für einen Kurs angemeldet und müssen durch dich freigegeben werden:"
280279
no_pending_info: Zurzeit sind keine offenen Freigaben vorhanden.
281280
notified_role_setting:
282281
title: Benachrichtigungen an

lib/hitobito_pbs/wagon.rb

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,8 +54,8 @@ class Wagon < Rails::Engine
5454
Bsv::Info.leader_roles += [Event::Role::Cook]
5555
Export::Pdf::Participation.runner = Pbs::Export::Pdf::Participation::Runner
5656
Event::ParticipantAssigner.include Pbs::Event::ParticipantAssigner
57-
Event::Filter.include Pbs::Event::Filter
58-
Events::Filter::Groups.include Pbs::Events::Filter::Groups
57+
Events::Filter::GroupList.prepend Pbs::Events::Filter::GroupList
58+
Events::Filter::CourseList.prepend Pbs::Events::Filter::CourseList
5959
Event::Qualifier::QualifyAction.include Pbs::Event::Qualifier::QualifyAction
6060
Export::Tabular::Events::List.include Pbs::Export::Tabular::Events::List
6161
Export::Tabular::Events::Row.include Pbs::Export::Tabular::Events::Row
@@ -143,6 +143,7 @@ class Wagon < Rails::Engine
143143
Event::ParticipationsController.include Pbs::Event::ParticipationsController
144144
Event::QualificationsController.include Pbs::Event::QualificationsController
145145
Event::RolesController.prepend Pbs::Event::RolesController
146+
Events::CoursesController.prepend Pbs::Events::CoursesController
146147
QualificationsController.include Pbs::QualificationsController
147148
Person::QueryController.search_columns << :pbs_number
148149
SubscriptionsController.include Pbs::SubscriptionsController

0 commit comments

Comments
 (0)