enju_event 0.1.19 → 0.2.0.beta.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (88) hide show
  1. checksums.yaml +4 -4
  2. data/README.rdoc +3 -3
  3. data/Rakefile +9 -15
  4. data/app/controllers/concerns/enju_event/controller.rb +13 -0
  5. data/app/controllers/event_categories_controller.rb +13 -2
  6. data/app/controllers/event_export_files_controller.rb +13 -3
  7. data/app/controllers/event_import_files_controller.rb +14 -4
  8. data/app/controllers/event_import_results_controller.rb +12 -1
  9. data/app/controllers/events_controller.rb +18 -8
  10. data/app/controllers/participates_controller.rb +11 -1
  11. data/app/controllers/places_controller.rb +64 -0
  12. data/app/jobs/event_export_file_job.rb +7 -0
  13. data/app/jobs/event_import_file_job.rb +7 -0
  14. data/app/models/event.rb +6 -5
  15. data/app/models/event_category.rb +3 -4
  16. data/app/models/event_export_file.rb +4 -5
  17. data/app/models/event_export_file_transition.rb +4 -4
  18. data/app/models/event_import_file.rb +8 -9
  19. data/app/models/event_import_file_transition.rb +4 -4
  20. data/app/models/event_import_result.rb +2 -3
  21. data/app/models/participate.rb +2 -3
  22. data/app/models/place.rb +18 -0
  23. data/app/policies/event_category_policy.rb +23 -0
  24. data/app/policies/event_export_file_policy.rb +21 -0
  25. data/app/policies/event_import_file_policy.rb +21 -0
  26. data/app/policies/event_import_result_policy.rb +21 -0
  27. data/app/policies/event_policy.rb +21 -0
  28. data/app/policies/participate_policy.rb +21 -0
  29. data/app/policies/place_policy.rb +21 -0
  30. data/app/views/event_categories/index.html.erb +4 -4
  31. data/app/views/event_categories/show.html.erb +1 -1
  32. data/app/views/events/_calendar.html.erb +1 -1
  33. data/app/views/events/{index.mobile.erb → index.html+phone.erb} +6 -6
  34. data/app/views/events/index.html.erb +11 -12
  35. data/app/views/events/index.rss.builder +2 -2
  36. data/app/views/events/{show.mobile.erb → show.html+phone.erb} +0 -0
  37. data/app/views/events/show.html.erb +2 -2
  38. data/app/views/picture_files/_index_event.html.erb +4 -4
  39. data/app/views/places/_form.html.erb +37 -0
  40. data/app/views/places/edit.html.erb +6 -0
  41. data/app/views/places/index.html.erb +35 -0
  42. data/app/views/places/new.html.erb +5 -0
  43. data/app/views/places/show.html.erb +29 -0
  44. data/config/routes.rb +1 -0
  45. data/db/migrate/20151128142913_create_places.rb +15 -0
  46. data/db/migrate/20151201163718_add_place_id_to_event.rb +6 -0
  47. data/db/migrate/20160703184258_add_most_recent_to_event_import_file_transitions.rb +9 -0
  48. data/db/migrate/20160703184311_add_most_recent_to_event_export_file_transitions.rb +9 -0
  49. data/lib/enju_event.rb +0 -19
  50. data/lib/enju_event/version.rb +1 -1
  51. data/lib/tasks/enju_event_tasks.rake +1 -1
  52. data/spec/controllers/event_categories_controller_spec.rb +58 -58
  53. data/spec/controllers/event_export_files_controller_spec.rb +6 -6
  54. data/spec/controllers/event_import_files_controller_spec.rb +4 -4
  55. data/spec/controllers/event_import_results_controller_spec.rb +2 -2
  56. data/spec/controllers/events_controller_spec.rb +6 -6
  57. data/spec/controllers/participates_controller_spec.rb +54 -54
  58. data/spec/dummy/app/controllers/application_controller.rb +8 -4
  59. data/spec/dummy/app/models/user.rb +2 -2
  60. data/spec/dummy/config/application.rb +5 -24
  61. data/spec/dummy/config/environments/development.rb +25 -14
  62. data/spec/dummy/config/environments/production.rb +50 -31
  63. data/spec/dummy/config/environments/test.rb +19 -14
  64. data/spec/dummy/config/routes.rb +3 -0
  65. data/spec/dummy/db/migrate/20140821151023_create_colors.rb +14 -0
  66. data/spec/dummy/db/migrate/20150924115059_create_withdraws.rb +13 -0
  67. data/spec/dummy/db/migrate/20151213070943_add_translation_table_to_library_group.rb +13 -0
  68. data/spec/dummy/db/migrate/20151213072705_add_footer_banner_to_library_group.rb +9 -0
  69. data/spec/dummy/db/schema.rb +52 -1
  70. data/spec/fixtures/event_categories.yml +3 -4
  71. data/spec/fixtures/event_export_files.yml +4 -4
  72. data/spec/fixtures/event_import_files.yml +8 -8
  73. data/spec/fixtures/event_import_results.yml +2 -3
  74. data/spec/fixtures/events.yml +7 -7
  75. data/spec/fixtures/participates.yml +2 -3
  76. data/spec/models/event_category_spec.rb +3 -4
  77. data/spec/models/event_export_file_spec.rb +5 -5
  78. data/spec/models/event_import_file_spec.rb +9 -9
  79. data/spec/models/event_import_result_spec.rb +2 -3
  80. data/spec/models/event_spec.rb +4 -3
  81. data/spec/models/participate_spec.rb +2 -3
  82. data/spec/support/devise.rb +2 -2
  83. metadata +132 -25
  84. data/app/models/enju_event/ability.rb +0 -43
  85. data/app/workers/event_export_file_queue.rb +0 -7
  86. data/app/workers/event_import_file_queue.rb +0 -7
  87. data/lib/enju_event/import_file.rb +0 -13
  88. data/spec/dummy/app/models/ability.rb +0 -41
@@ -11,10 +11,10 @@ end
11
11
  # Table name: event_export_file_transitions
12
12
  #
13
13
  # id :integer not null, primary key
14
- # to_state :string(255)
15
- # metadata :text default("{}")
14
+ # to_state :string
15
+ # metadata :text default({})
16
16
  # sort_key :integer
17
17
  # event_export_file_id :integer
18
- # created_at :datetime not null
19
- # updated_at :datetime not null
18
+ # created_at :datetime
19
+ # updated_at :datetime
20
20
  #
@@ -33,7 +33,6 @@ class EventImportFile < ActiveRecord::Base
33
33
 
34
34
  has_many :event_import_file_transitions
35
35
 
36
- enju_import_file_model
37
36
  attr_accessor :mode
38
37
 
39
38
  def state_machine
@@ -208,21 +207,21 @@ end
208
207
  #
209
208
  # id :integer not null, primary key
210
209
  # parent_id :integer
211
- # content_type :string(255)
210
+ # content_type :string
212
211
  # size :integer
213
212
  # user_id :integer
214
213
  # note :text
215
214
  # executed_at :datetime
216
- # event_import_file_name :string(255)
217
- # event_import_content_type :string(255)
215
+ # event_import_file_name :string
216
+ # event_import_content_type :string
218
217
  # event_import_file_size :integer
219
218
  # event_import_updated_at :datetime
220
- # edit_mode :string(255)
221
- # created_at :datetime not null
222
- # updated_at :datetime not null
223
- # event_import_fingerprint :string(255)
219
+ # edit_mode :string
220
+ # created_at :datetime
221
+ # updated_at :datetime
222
+ # event_import_fingerprint :string
224
223
  # error_message :text
225
- # user_encoding :string(255)
224
+ # user_encoding :string
226
225
  # default_library_id :integer
227
226
  # default_event_category_id :integer
228
227
  #
@@ -11,10 +11,10 @@ end
11
11
  # Table name: event_import_file_transitions
12
12
  #
13
13
  # id :integer not null, primary key
14
- # to_state :string(255)
15
- # metadata :text default("{}")
14
+ # to_state :string
15
+ # metadata :text default({})
16
16
  # sort_key :integer
17
17
  # event_import_file_id :integer
18
- # created_at :datetime not null
19
- # updated_at :datetime not null
18
+ # created_at :datetime
19
+ # updated_at :datetime
20
20
  #
@@ -17,7 +17,6 @@ end
17
17
  # event_import_file_id :integer
18
18
  # event_id :integer
19
19
  # body :text
20
- # created_at :datetime not null
21
- # updated_at :datetime not null
20
+ # created_at :datetime
21
+ # updated_at :datetime
22
22
  #
23
-
@@ -17,7 +17,6 @@ end
17
17
  # agent_id :integer not null
18
18
  # event_id :integer not null
19
19
  # position :integer
20
- # created_at :datetime not null
21
- # updated_at :datetime not null
20
+ # created_at :datetime
21
+ # updated_at :datetime
22
22
  #
23
-
@@ -0,0 +1,18 @@
1
+ class Place < ActiveRecord::Base
2
+ has_many :events
3
+ validates :term, presence: true
4
+ end
5
+
6
+ # == Schema Information
7
+ #
8
+ # Table name: places
9
+ #
10
+ # id :integer not null, primary key
11
+ # term :string
12
+ # city :text
13
+ # country_id :integer
14
+ # latitude :float
15
+ # longitude :float
16
+ # created_at :datetime not null
17
+ # updated_at :datetime not null
18
+ #
@@ -0,0 +1,23 @@
1
+ class EventCategoryPolicy < ApplicationPolicy
2
+ def index?
3
+ true
4
+ end
5
+
6
+ def show?
7
+ true
8
+ end
9
+
10
+ def create?
11
+ user.try(:has_role?, 'Administrator')
12
+ end
13
+
14
+ def update?
15
+ user.try(:has_role?, 'Administrator')
16
+ end
17
+
18
+ def destroy?
19
+ if user.try(:has_role?, 'Administrator')
20
+ true if !['unknown', 'closed'].include?(record.name)
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,21 @@
1
+ class EventExportFilePolicy < ApplicationPolicy
2
+ def index?
3
+ user.try(:has_role?, 'Librarian')
4
+ end
5
+
6
+ def show?
7
+ user.try(:has_role?, 'Librarian')
8
+ end
9
+
10
+ def create?
11
+ user.try(:has_role?, 'Librarian')
12
+ end
13
+
14
+ def update?
15
+ user.try(:has_role?, 'Librarian')
16
+ end
17
+
18
+ def destroy?
19
+ user.try(:has_role?, 'Librarian')
20
+ end
21
+ end
@@ -0,0 +1,21 @@
1
+ class EventImportFilePolicy < ApplicationPolicy
2
+ def index?
3
+ user.try(:has_role?, 'Librarian')
4
+ end
5
+
6
+ def show?
7
+ user.try(:has_role?, 'Librarian')
8
+ end
9
+
10
+ def create?
11
+ user.try(:has_role?, 'Librarian')
12
+ end
13
+
14
+ def update?
15
+ user.try(:has_role?, 'Librarian')
16
+ end
17
+
18
+ def destroy?
19
+ user.try(:has_role?, 'Librarian')
20
+ end
21
+ end
@@ -0,0 +1,21 @@
1
+ class EventImportResultPolicy < ApplicationPolicy
2
+ def index?
3
+ true if user.try(:has_role?, 'Librarian')
4
+ end
5
+
6
+ def show?
7
+ true if user.try(:has_role?, 'Librarian')
8
+ end
9
+
10
+ def create?
11
+ false
12
+ end
13
+
14
+ def update?
15
+ false
16
+ end
17
+
18
+ def destroy?
19
+ false
20
+ end
21
+ end
@@ -0,0 +1,21 @@
1
+ class EventPolicy < ApplicationPolicy
2
+ def index?
3
+ true
4
+ end
5
+
6
+ def show?
7
+ true
8
+ end
9
+
10
+ def create?
11
+ user.try(:has_role?, 'Librarian')
12
+ end
13
+
14
+ def update?
15
+ user.try(:has_role?, 'Librarian')
16
+ end
17
+
18
+ def destroy?
19
+ user.try(:has_role?, 'Librarian')
20
+ end
21
+ end
@@ -0,0 +1,21 @@
1
+ class ParticipatePolicy < ApplicationPolicy
2
+ def index?
3
+ user.try(:has_role?, 'Librarian')
4
+ end
5
+
6
+ def show?
7
+ user.try(:has_role?, 'Librarian')
8
+ end
9
+
10
+ def create?
11
+ user.try(:has_role?, 'Librarian')
12
+ end
13
+
14
+ def update?
15
+ user.try(:has_role?, 'Librarian')
16
+ end
17
+
18
+ def destroy?
19
+ user.try(:has_role?, 'Librarian')
20
+ end
21
+ end
@@ -0,0 +1,21 @@
1
+ class PlacePolicy < ApplicationPolicy
2
+ def index?
3
+ true
4
+ end
5
+
6
+ def show?
7
+ true
8
+ end
9
+
10
+ def create?
11
+ user.try(:has_role?, 'Librarian')
12
+ end
13
+
14
+ def update?
15
+ user.try(:has_role?, 'Librarian')
16
+ end
17
+
18
+ def destroy?
19
+ user.try(:has_role?, 'Librarian')
20
+ end
21
+ end
@@ -17,7 +17,7 @@
17
17
  <%- @event_categories.each do |event_category| -%>
18
18
  <tr class="line<%= cycle("0", "1") -%>">
19
19
  <td>
20
- <%- if can? :update, event_category -%>
20
+ <%- if policy(event_category).update? -%>
21
21
  <%= move_position(event_category) -%>
22
22
  <%- end -%>
23
23
  </td>
@@ -28,10 +28,10 @@
28
28
  <%= event_category.note %>
29
29
  </td>
30
30
  <td>
31
- <%- if can? :update, event_category -%>
31
+ <%- if policy(event_category).update? -%>
32
32
  <%= link_to t('page.edit'), edit_event_category_path(event_category) -%>
33
33
  <% end %>
34
- <%- if can? :delete, event_category -%>
34
+ <%- if policy(event_category).destroy? -%>
35
35
  <%= link_to t('page.destroy'), event_category_path(event_category), data: {confirm: t('page.are_you_sure')}, method: :delete -%>
36
36
  <%- end -%>
37
37
  </td>
@@ -44,7 +44,7 @@
44
44
 
45
45
  <div id="submenu" class="ui-corner-all ui-widget-content">
46
46
  <ul>
47
- <%- if can? :create, EventCategory -%>
47
+ <%- if policy(EventCategory).create? -%>
48
48
  <li><%= link_to t('page.new', model: t('activerecord.models.event_category')), new_event_category_path -%></li>
49
49
  <%- end -%>
50
50
  </ul>
@@ -23,7 +23,7 @@
23
23
 
24
24
  <div id="submenu" class="ui-corner-all ui-widget-content">
25
25
  <ul>
26
- <%- if can? :update, @event_category -%>
26
+ <%- if policy(@event_category).update? -%>
27
27
  <li><%= link_to t('page.edit'), edit_event_category_path(@event_category) -%></li>
28
28
  <%- end -%>
29
29
  <li><%= back_to_index(flash[:page_info]) -%></li>
@@ -6,7 +6,7 @@
6
6
  <script>
7
7
  $(document).ready(function() {
8
8
  $('#calendar').fullCalendar({
9
- events: '<%= url_for(params.merge(format: :json, only_path: true)) %>',
9
+ events: '<%= url_for(params.permit.merge(format: :json, only_path: true)) %>',
10
10
  lang: '<%= @locale.to_s %>'
11
11
  });
12
12
  });
@@ -21,17 +21,17 @@
21
21
  <p>
22
22
  <%- case params[:mode]
23
23
  when 'upcoming' -%>
24
- <%= link_to t('event.all'), url_for(params.merge(mode: nil, only_path: true)) -%>
24
+ <%= link_to t('event.all'), url_for(params.permit.merge(mode: nil, only_path: true)) -%>
25
25
  <strong><%= t('event.upcoming') -%></strong>
26
- <%= link_to t('event.past'), url_for(params.merge(mode: 'past', only_path: true)) -%>
26
+ <%= link_to t('event.past'), url_for(params.permit.merge(mode: 'past', only_path: true)) -%>
27
27
  <%- when 'past' -%>
28
- <%= link_to t('event.all'), url_for(params.merge(mode: nil, only_path: true)) -%>
29
- <%= link_to t('event.upcoming'), url_for(params.merge(mode: 'upcoming', only_path: true)) -%>
28
+ <%= link_to t('event.all'), url_for(params.permit.merge(mode: nil, only_path: true)) -%>
29
+ <%= link_to t('event.upcoming'), url_for(params.permit.merge(mode: 'upcoming', only_path: true)) -%>
30
30
  <strong><%= t('event.past') -%></strong>
31
31
  <%- else -%>
32
32
  <strong><%= t('event.all') -%></strong>
33
- <%= link_to t('event.upcoming'), url_for(params.merge(mode: 'upcoming', only_path: true)) -%>
34
- <%= link_to t('event.past'), url_for(params.merge(mode: 'past', only_path: true)) -%>
33
+ <%= link_to t('event.upcoming'), url_for(params.permit.merge(mode: 'upcoming', only_path: true)) -%>
34
+ <%= link_to t('event.past'), url_for(params.permit.merge(mode: 'past', only_path: true)) -%>
35
35
  <%- end -%>
36
36
  </p>
37
37
  </div>
@@ -22,17 +22,17 @@
22
22
  <p>
23
23
  <%- case params[:mode]
24
24
  when 'upcoming' -%>
25
- <%= link_to t('event.all'), url_for(params.merge(mode: nil, only_path: true)) -%>
25
+ <%= link_to t('event.all'), url_for(params.permit.merge(mode: nil, only_path: true)) -%>
26
26
  <strong><%= t('event.upcoming') -%></strong>
27
- <%= link_to t('event.past'), url_for(params.merge(mode: 'past', only_path: true)) -%>
27
+ <%= link_to t('event.past'), url_for(params.permit.merge(mode: 'past', only_path: true)) -%>
28
28
  <%- when 'past' -%>
29
- <%= link_to t('event.all'), url_for(params.merge(mode: nil, only_path: true)) -%>
30
- <%= link_to t('event.upcoming'), url_for(params.merge(mode: 'upcoming', only_path: true)) -%>
29
+ <%= link_to t('event.all'), url_for(params.permit.merge(mode: nil, only_path: true)) -%>
30
+ <%= link_to t('event.upcoming'), url_for(params.permit.merge(mode: 'upcoming', only_path: true)) -%>
31
31
  <strong><%= t('event.past') -%></strong>
32
32
  <%- else -%>
33
33
  <strong><%= t('event.all') -%></strong>
34
- <%= link_to t('event.upcoming'), url_for(params.merge(mode: 'upcoming', only_path: true)) -%>
35
- <%= link_to t('event.past'), url_for(params.merge(mode: 'past', only_path: true)) -%>
34
+ <%= link_to t('event.upcoming'), url_for(params.permit.merge(mode: 'upcoming', only_path: true)) -%>
35
+ <%= link_to t('event.past'), url_for(params.permit.merge(mode: 'past', only_path: true)) -%>
36
36
  <%- end -%>
37
37
  </p>
38
38
 
@@ -58,10 +58,10 @@
58
58
  <%= l(event.end_at, format: :short) -%>
59
59
  </td>
60
60
  <td>
61
- <%- if can? :update, event -%>
61
+ <%- if policy(event).update? -%>
62
62
  <%= link_to t('page.edit'), edit_event_path(event) -%>
63
- <%- end -%>
64
- <%- if can? :destroy, event -%>
63
+ <% end %>
64
+ <%- if policy(event).destroy? -%>
65
65
  <%= link_to t('page.destroy'), event, data: {confirm: t('page.are_you_sure')}, method: :delete -%>
66
66
  <%- end -%>
67
67
  </td>
@@ -77,9 +77,9 @@
77
77
  <div id="submenu" class="ui-corner-all ui-widget-content">
78
78
  <ul>
79
79
  <% if params[:mode] == 'calendar' %>
80
- <li><%= link_to t('event.table'), url_for(params.merge(mode: nil)) -%></li>
80
+ <li><%= link_to t('event.table'), url_for(params.permit.merge(mode: nil)) -%></li>
81
81
  <% else %>
82
- <li><%= link_to t('event.calendar'), url_for(params.merge(mode: 'calendar')) -%></li>
82
+ <li><%= link_to t('event.calendar'), url_for(params.permit.merge(mode: 'calendar')) -%></li>
83
83
  <% end %>
84
84
  </ul>
85
85
  <ul>
@@ -119,5 +119,4 @@
119
119
  (<%= link_to 'iCalendar', events_path(format: :ics, locale: @locale.to_s) -%>)
120
120
  <%- end -%>
121
121
  </p>
122
- <%= render 'page/login' unless current_user -%>
123
122
  </div>
@@ -4,11 +4,11 @@ xml.rss('version' => "2.0",
4
4
  'xmlns:atom' => "http://www.w3.org/2005/Atom"){
5
5
  xml.channel{
6
6
  xml.title t('event.library_group_event', library_group_name: @library_group.display_name.localize)
7
- xml.link "#{request.protocol}#{request.host_with_port}#{url_for(params.merge(format: nil, only_path: true))}"
7
+ xml.link "#{request.protocol}#{request.host_with_port}#{url_for(params.permit.merge(format: nil, only_path: true))}"
8
8
  xml.description "Next-L Enju, an open source integrated library system developed by Project Next-L"
9
9
  xml.language @locale.to_s
10
10
  xml.ttl "60"
11
- xml.tag! "atom:link", rel: 'self', href: "#{request.protocol}#{request.host_with_port}#{url_for(params.merge(format: :rss, only_path: true))}"
11
+ xml.tag! "atom:link", rel: 'self', href: "#{request.protocol}#{request.host_with_port}#{url_for(params.permit.merge(format: :rss, only_path: true))}"
12
12
  xml.tag! "atom:link", rel: 'alternate', href: events_url
13
13
  #xml.tag! "atom:link", rel: 'search', :type => 'application/opensearchdescription+xml', href: "http://#{request.host_with_port}/page/opensearch"
14
14
  unless params[:query].blank?
@@ -55,10 +55,10 @@
55
55
 
56
56
  <div id="submenu" class="ui-corner-all ui-widget-content">
57
57
  <ul>
58
- <%- if can?(:update, @event) -%>
58
+ <%- if policy(@event).update? -%>
59
59
  <li><%= link_to t('page.edit'), edit_event_path(@event) -%></li>
60
60
  <% end %>
61
- <%- if can?(:destroy, @event) -%>
61
+ <% if policy(@event).destroy? %>
62
62
  <li><%= link_to t('page.destroy'), @event, data: {confirm: t('page.are_you_sure')}, method: :delete -%></li>
63
63
  <% end %>
64
64
  <li><%= back_to_index(flash[:page_info]) -%></li>
@@ -17,7 +17,7 @@
17
17
  <%- @picture_files.each do |picture_file| -%>
18
18
  <tr class="line<%= cycle("0", "1") -%>">
19
19
  <td>
20
- <%- if can? :update, picture_file -%>
20
+ <%- if policy(picture_file).update? -%>
21
21
  <%= move_position(picture_file) -%>
22
22
  <%- end -%>
23
23
  </td>
@@ -29,10 +29,10 @@
29
29
  <td><%= link_to picture_file.picture_file_name, picture_file_path(picture_file, format: :download, size: 'original') -%></td>
30
30
  <td>
31
31
  <%= link_to t('page.show'), picture_file -%>
32
- <%- if can? :update, picture_file -%>
32
+ <%- if policy(picture_file).update? -%>
33
33
  <%= link_to t('page.edit'), edit_picture_file_path(picture_file) -%>
34
34
  <% end %>
35
- <%- if can? :delete, picture_file -%>
35
+ <%- if policy(picture_file).destroy? -%>
36
36
  <%= link_to t('page.destroy'), picture_file, data: {confirm: t('page.are_you_sure')}, method: :delete -%>
37
37
  <%- end -%>
38
38
  </td>
@@ -45,7 +45,7 @@
45
45
  </div>
46
46
 
47
47
  <div id="submenu" class="ui-corner-all ui-widget-content">
48
- <%- if can? :create, PictureFile -%>
48
+ <%- if policy(PictureFile).create? -%>
49
49
  <ul>
50
50
  <li><%= link_to t('page.new', model: t('activerecord.models.picture_file')), new_picture_file_path(event_id: event.id) -%></li>
51
51
  <li><%= link_to t('picture_file.all_picture'), picture_files_path -%></li>