Event model improvements
- Drop selected_event_schedule function - Rename scheduled_room and scheduled_start_time to room and time as if there is no selected_schedule, the event is not scheduled.
This commit is contained in:
parent
5001848af7
commit
a578167cf5
13 changed files with 32 additions and 35 deletions
|
|
@ -15,7 +15,7 @@ class ProposalController < ApplicationController
|
||||||
def show
|
def show
|
||||||
# FIXME: We should show more than the first speaker
|
# FIXME: We should show more than the first speaker
|
||||||
@speaker = @event.speakers.first || @event.submitter
|
@speaker = @event.speakers.first || @event.submitter
|
||||||
@event_schedule = @event.selected_event_schedule
|
@event_schedule = @event.event_schedules.find_by(schedule_id: @program.selected_schedule_id)
|
||||||
end
|
end
|
||||||
|
|
||||||
def new
|
def new
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@ class SchedulesController < ApplicationController
|
||||||
redirect_to events_conference_schedule_path(@conference.short_title)
|
redirect_to events_conference_schedule_path(@conference.short_title)
|
||||||
end
|
end
|
||||||
|
|
||||||
@events_xml = schedules.map(&:event).group_by{ |event| event.scheduled_start_time.to_date } if schedules
|
@events_xml = schedules.map(&:event).group_by{ |event| event.time.to_date } if schedules
|
||||||
@dates = @conference.start_date..@conference.end_date
|
@dates = @conference.start_date..@conference.end_date
|
||||||
@step_minutes = EventType::LENGTH_STEP.minutes
|
@step_minutes = EventType::LENGTH_STEP.minutes
|
||||||
@conf_start = 9
|
@conf_start = 9
|
||||||
|
|
|
||||||
|
|
@ -75,7 +75,7 @@ class Event < ActiveRecord::Base
|
||||||
# ====Returns
|
# ====Returns
|
||||||
# * +true+ or +false+
|
# * +true+ or +false+
|
||||||
def scheduled?
|
def scheduled?
|
||||||
selected_event_schedule.present?
|
event_schedules.find_by(schedule_id: program.selected_schedule_id).present?
|
||||||
end
|
end
|
||||||
|
|
||||||
def registration_possible?
|
def registration_possible?
|
||||||
|
|
@ -234,20 +234,17 @@ class Event < ActiveRecord::Base
|
||||||
##
|
##
|
||||||
# Returns the room in which the event is scheduled
|
# Returns the room in which the event is scheduled
|
||||||
#
|
#
|
||||||
def scheduled_room
|
def room
|
||||||
selected_event_schedule.try(:room)
|
# We use try(:selected_schedule_id) because this function is used for
|
||||||
|
# validations so program could not be present there
|
||||||
|
event_schedules.find_by(schedule_id: program.try(:selected_schedule_id)).try(:room)
|
||||||
end
|
end
|
||||||
|
|
||||||
##
|
##
|
||||||
# Returns the start time at which this event is scheduled
|
# Returns the start time at which this event is scheduled
|
||||||
#
|
#
|
||||||
def scheduled_start_time
|
def time
|
||||||
selected_event_schedule.try(:start_time)
|
event_schedules.find_by(schedule_id: program.selected_schedule_id).try(:start_time)
|
||||||
end
|
|
||||||
|
|
||||||
# returns the event_schedule for this event and for the selected_schedule
|
|
||||||
def selected_event_schedule
|
|
||||||
event_schedules.find_by(schedule_id: program.try(:selected_schedule_id))
|
|
||||||
end
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
@ -255,8 +252,8 @@ class Event < ActiveRecord::Base
|
||||||
##
|
##
|
||||||
# Do not allow, for the event, more attendees than the size of the room
|
# Do not allow, for the event, more attendees than the size of the room
|
||||||
def max_attendees_no_more_than_room_size
|
def max_attendees_no_more_than_room_size
|
||||||
return unless scheduled_room && max_attendees_changed?
|
return unless room && max_attendees_changed?
|
||||||
errors.add(:max_attendees, "cannot be more than the room's capacity (#{scheduled_room.size})") if max_attendees && (max_attendees > scheduled_room.size)
|
errors.add(:max_attendees, "cannot be more than the room's capacity (#{room.size})") if max_attendees && (max_attendees > room.size)
|
||||||
end
|
end
|
||||||
|
|
||||||
def abstract_limit
|
def abstract_limit
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,10 @@
|
||||||
class EventSerializer < ActiveModel::Serializer
|
class EventSerializer < ActiveModel::Serializer
|
||||||
include ActionView::Helpers::TextHelper
|
include ActionView::Helpers::TextHelper
|
||||||
|
|
||||||
attributes :guid, :title, :length, :scheduled_date, :language, :abstract, :speaker_ids, :type, :scheduled_room, :track
|
attributes :guid, :title, :length, :scheduled_date, :language, :abstract, :speaker_ids, :type, :room, :track
|
||||||
|
|
||||||
def scheduled_date
|
def scheduled_date
|
||||||
t = object.scheduled_start_time
|
t = object.time
|
||||||
t.blank? ? '' : %( #{I18n.l t, format: :short}#{t.formatted_offset(false)} )
|
t.blank? ? '' : %( #{I18n.l t, format: :short}#{t.formatted_offset(false)} )
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
@ -17,8 +17,8 @@ class EventSerializer < ActiveModel::Serializer
|
||||||
object.event_type.try(:title)
|
object.event_type.try(:title)
|
||||||
end
|
end
|
||||||
|
|
||||||
def scheduled_room
|
def room
|
||||||
object.scheduled_room.try(:guid)
|
object.room.try(:guid)
|
||||||
end
|
end
|
||||||
|
|
||||||
def track
|
def track
|
||||||
|
|
|
||||||
|
|
@ -106,18 +106,18 @@
|
||||||
%td
|
%td
|
||||||
= @event.language
|
= @event.language
|
||||||
|
|
||||||
- unless @event.scheduled_room.nil?
|
- unless @event.room.nil?
|
||||||
%tr
|
%tr
|
||||||
%td
|
%td
|
||||||
%b Room
|
%b Room
|
||||||
%td
|
%td
|
||||||
= @event.scheduled_room.name
|
= @event.room.name
|
||||||
- unless @event.scheduled_start_time.nil?
|
- unless @event.time.nil?
|
||||||
%tr
|
%tr
|
||||||
%td
|
%td
|
||||||
%b Scheduled time
|
%b Scheduled time
|
||||||
%td
|
%td
|
||||||
= @event.scheduled_start_time
|
= @event.time
|
||||||
%tr
|
%tr
|
||||||
%td
|
%td
|
||||||
%b Submitter
|
%b Submitter
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@
|
||||||
for
|
for
|
||||||
= @event.title
|
= @event.title
|
||||||
|
|
||||||
- if @event.scheduled_room && (@event_registrations.length > @event.scheduled_room.size)
|
- if @event.room && (@event_registrations.length > @event.room.size)
|
||||||
%b Attention:
|
%b Attention:
|
||||||
You have more registrations than the capacity of the room!
|
You have more registrations than the capacity of the room!
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -27,4 +27,4 @@
|
||||||
%td
|
%td
|
||||||
= event.state
|
= event.state
|
||||||
%td
|
%td
|
||||||
= event.scheduled_start_time
|
= event.time
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@
|
||||||
.text-muted
|
.text-muted
|
||||||
= registered_text(event)
|
= registered_text(event)
|
||||||
- if event.scheduled?
|
- if event.scheduled?
|
||||||
(Scheduled on: #{event.scheduled_start_time.to_date})
|
(Scheduled on: #{event.time.to_date})
|
||||||
%br
|
%br
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -49,7 +49,7 @@
|
||||||
|
|
||||||
= f.inputs 'Enable pre-registration' do
|
= f.inputs 'Enable pre-registration' do
|
||||||
= f.input :require_registration, label: 'Require participants to register to your event'
|
= f.input :require_registration, label: 'Require participants to register to your event'
|
||||||
- message = @event.scheduled_room ? "Value must be between 1 and #{@event.scheduled_room.size}" : 'Check room capacity after scheduling.'
|
- message = @event.room ? "Value must be between 1 and #{@event.room.size}" : 'Check room capacity after scheduling.'
|
||||||
= f.input :max_attendees, hint: 'The maximum number of participants. ' + message
|
= f.input :max_attendees, hint: 'The maximum number of participants. ' + message
|
||||||
|
|
||||||
- if current_user.has_any_role? :admin, { name: :organizer, resource: @conference }, { name: :cfp, resource: @conference }
|
- if current_user.has_any_role? :admin, { name: :organizer, resource: @conference }, { name: :cfp, resource: @conference }
|
||||||
|
|
|
||||||
|
|
@ -75,8 +75,8 @@
|
||||||
.col-md-12
|
.col-md-12
|
||||||
%dt Room:
|
%dt Room:
|
||||||
%dd
|
%dd
|
||||||
- if @event.scheduled_room
|
- if @event.room
|
||||||
= @event.scheduled_room.name
|
= @event.room.name
|
||||||
.col-md-12
|
.col-md-12
|
||||||
%dt Conference:
|
%dt Conference:
|
||||||
%dd= @event.program.conference.title
|
%dd= @event.program.conference.title
|
||||||
|
|
|
||||||
|
|
@ -16,10 +16,10 @@
|
||||||
%room{ name: room.name }
|
%room{ name: room.name }
|
||||||
- events_in_rooms[room].each do |event|
|
- events_in_rooms[room].each do |event|
|
||||||
%event{ guid: event.guid, id: event.id }
|
%event{ guid: event.guid, id: event.id }
|
||||||
%date= event.scheduled_start_time.iso8601
|
%date= event.time.iso8601
|
||||||
%start= event.scheduled_start_time.strftime('%H:%M')
|
%start= event.time.strftime('%H:%M')
|
||||||
%duration= length_timestamp(event.event_type.length)
|
%duration= length_timestamp(event.event_type.length)
|
||||||
%room= event.scheduled_room.name
|
%room= event.room.name
|
||||||
%type= event.event_type.name
|
%type= event.event_type.name
|
||||||
%language= ISO_639.find_by_english_name(event.language).third if event.language
|
%language= ISO_639.find_by_english_name(event.language).third if event.language
|
||||||
%slug= "#{event.id} #{event.title}".parameterize
|
%slug= "#{event.id} #{event.title}".parameterize
|
||||||
|
|
|
||||||
|
|
@ -16,8 +16,8 @@ describe SchedulesController do
|
||||||
|
|
||||||
it 'assigns variables' do
|
it 'assigns variables' do
|
||||||
expect(assigns(:conference)).to eq conference
|
expect(assigns(:conference)).to eq conference
|
||||||
expect(assigns(:events_xml)).to eq conference.selected_event_schedules.map(&:event)
|
expect(assigns(:events_xml)).to eq conference.program.selected_event_schedules.map(&:event)
|
||||||
.group_by{ |event| event.scheduled_start_time.to_date }
|
.group_by{ |event| event.time.to_date }
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'renders successfully' do
|
it 'renders successfully' do
|
||||||
|
|
|
||||||
|
|
@ -15,7 +15,7 @@ describe EventSerializer, type: :serializer do
|
||||||
abstract: '<p>Lorem ipsum dolor sit amet</p>',
|
abstract: '<p>Lorem ipsum dolor sit amet</p>',
|
||||||
speaker_ids: [],
|
speaker_ids: [],
|
||||||
type: 'Example Event Type',
|
type: 'Example Event Type',
|
||||||
scheduled_room: nil,
|
room: nil,
|
||||||
track: nil
|
track: nil
|
||||||
}
|
}
|
||||||
}.to_json
|
}.to_json
|
||||||
|
|
@ -47,7 +47,7 @@ describe EventSerializer, type: :serializer do
|
||||||
abstract: '<p>Lorem ipsum dolor sit amet</p>',
|
abstract: '<p>Lorem ipsum dolor sit amet</p>',
|
||||||
speaker_ids: [speaker.user.id],
|
speaker_ids: [speaker.user.id],
|
||||||
type: 'Example Event Type',
|
type: 'Example Event Type',
|
||||||
scheduled_room: room.guid,
|
room: room.guid,
|
||||||
track: track.guid
|
track: track.guid
|
||||||
}
|
}
|
||||||
}.to_json
|
}.to_json
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue