mirror of
https://github.com/openSUSE/osem.git
synced 2026-08-13 19:54:02 +00:00
Introduce an association for the selected_schedule
Association in Program fot the selected_schedule
This commit is contained in:
parent
3f114629f9
commit
beb17165a2
10 changed files with 24 additions and 21 deletions
|
|
@ -25,10 +25,10 @@ module Admin
|
|||
# if there is not selected schedule we create it
|
||||
unless @program.selected_schedule.present?
|
||||
schedule = @program.schedules.create
|
||||
@program.selected_schedule = schedule.id
|
||||
@program.selected_schedule = schedule
|
||||
@program.save!
|
||||
end
|
||||
@schedule_id = @program.selected_schedule
|
||||
@schedule_id = @program.selected_schedule.id
|
||||
end
|
||||
|
||||
def update
|
||||
|
|
|
|||
|
|
@ -13,13 +13,13 @@ class ConferenceController < ApplicationController
|
|||
|
||||
def schedule
|
||||
@rooms = @conference.venue.rooms if @conference.venue
|
||||
unless @program.selected_schedule.present? && @program.events.scheduled(@program.selected_schedule).any?
|
||||
unless @program.selected_schedule.present? && @program.events.scheduled(@program.selected_schedule.id).any?
|
||||
redirect_to events_conference_path(@conference.short_title)
|
||||
end
|
||||
|
||||
@events = @conference.program.events
|
||||
@events_xml = @program.schedules.find(@program.selected_schedule).event_schedules.order(start_time: :asc)
|
||||
.map(&:event).group_by{ |event| event.scheduled_start_time.to_date } if program.selected_schedule.present?
|
||||
@events_xml = @program.selected_schedule.event_schedules.order(start_time: :asc).map(&:event)
|
||||
.group_by{ |event| event.scheduled_start_time.to_date } if @program.selected_schedule.present?
|
||||
@dates = @conference.start_date..@conference.end_date
|
||||
@step_minutes = EventType::LENGTH_STEP.minutes
|
||||
@conf_start = 9
|
||||
|
|
@ -38,7 +38,7 @@ class ConferenceController < ApplicationController
|
|||
@dates = @conference.start_date..@conference.end_date
|
||||
|
||||
if @program.selected_schedule.present?
|
||||
@events_schedules = @program.schedules.find(@program.selected_schedule).event_schedules.order(start_time: :asc)
|
||||
@events_schedules = @program.selected_schedule.event_schedules.order(start_time: :asc)
|
||||
else
|
||||
@events_schedules = []
|
||||
end
|
||||
|
|
|
|||
|
|
@ -270,7 +270,7 @@ class Event < ActiveRecord::Base
|
|||
|
||||
# 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))
|
||||
event_schedules.find_by(schedule_id: program.try(:selected_schedule_id))
|
||||
end
|
||||
|
||||
private
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@ class Program < ActiveRecord::Base
|
|||
has_many :tracks, dependent: :destroy
|
||||
has_many :difficulty_levels, dependent: :destroy
|
||||
has_many :schedules, dependent: :destroy
|
||||
belongs_to :selected_schedule, class_name: 'Schedule'
|
||||
has_many :events, dependent: :destroy do
|
||||
def require_registration
|
||||
where(require_registration: true, state: :confirmed)
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@
|
|||
%td.room{ style: "height: #{ td_height(@rooms) }px;" }
|
||||
.room.elipsis.break-words{ style: "-webkit-line-clamp: #{ room_lines(@rooms) }; height: #{ room_height(@rooms) }px;" }
|
||||
= room.name
|
||||
- event_schedules = room.event_schedules.select{ |e| (e.schedule_id == @conference.program.selected_schedule) && (e.start_time >= start_time) && (e.start_time < (start_time + number_columns.hour)) }
|
||||
- event_schedules = room.event_schedules.select{ |e| (e.schedule_id == @conference.program.selected_schedule.id) && (e.start_time >= start_time) && (e.start_time < (start_time + number_columns.hour)) }
|
||||
- (1..intervals).each do |i|
|
||||
- if span > 1
|
||||
- span -= 1
|
||||
|
|
|
|||
|
|
@ -4,6 +4,6 @@ class CreateSchedules < ActiveRecord::Migration
|
|||
t.belongs_to :program, index: true
|
||||
t.timestamps null: false
|
||||
end
|
||||
add_column :programs, :selected_schedule, :integer # Selected schedule ID
|
||||
add_reference :programs, :selected_schedule, index: true
|
||||
end
|
||||
end
|
||||
|
|
|
|||
16
db/schema.rb
16
db/schema.rb
|
|
@ -11,7 +11,7 @@
|
|||
#
|
||||
# It's strongly recommended that you check this file into your version control system.
|
||||
|
||||
ActiveRecord::Schema.define(version: 20160705110711) do
|
||||
ActiveRecord::Schema.define(version: 20160704092023) do
|
||||
|
||||
create_table "ahoy_events", force: :cascade do |t|
|
||||
t.uuid "visit_id", limit: 16
|
||||
|
|
@ -180,9 +180,9 @@ ActiveRecord::Schema.define(version: 20160705110711) do
|
|||
t.integer "event_id"
|
||||
t.integer "schedule_id"
|
||||
t.integer "room_id"
|
||||
t.datetime "start_time"
|
||||
t.datetime "created_at", null: false
|
||||
t.datetime "updated_at", null: false
|
||||
t.datetime "start_time"
|
||||
end
|
||||
|
||||
add_index "event_schedules", ["event_id"], name: "index_event_schedules_on_event_id"
|
||||
|
|
@ -265,18 +265,20 @@ ActiveRecord::Schema.define(version: 20160705110711) do
|
|||
|
||||
create_table "programs", force: :cascade do |t|
|
||||
t.integer "conference_id"
|
||||
t.integer "rating", default: 0
|
||||
t.boolean "schedule_public", default: false
|
||||
t.boolean "schedule_fluid", default: false
|
||||
t.integer "rating", default: 0
|
||||
t.boolean "schedule_public", default: false
|
||||
t.boolean "schedule_fluid", default: false
|
||||
t.datetime "created_at"
|
||||
t.datetime "updated_at"
|
||||
t.string "languages"
|
||||
t.integer "selected_schedule"
|
||||
t.boolean "blind_voting", default: false
|
||||
t.boolean "blind_voting", default: false
|
||||
t.datetime "voting_start_date"
|
||||
t.datetime "voting_end_date"
|
||||
t.integer "selected_schedule_id"
|
||||
end
|
||||
|
||||
add_index "programs", ["selected_schedule_id"], name: "index_programs_on_selected_schedule_id"
|
||||
|
||||
create_table "qanswers", force: :cascade do |t|
|
||||
t.integer "question_id"
|
||||
t.integer "answer_id"
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ namespace :data do
|
|||
task move_events_attributes: :environment do
|
||||
Program.all.each do |program|
|
||||
schedule = Schedule.create(program: program)
|
||||
program.selected_schedule = schedule.id
|
||||
program.selected_schedule = schedule
|
||||
program.save
|
||||
program.events.each do |event|
|
||||
unless event.start_time.nil? && event.room_id.nil?
|
||||
|
|
|
|||
|
|
@ -39,8 +39,8 @@ describe ConferenceController do
|
|||
|
||||
it 'assigns variables' do
|
||||
expect(assigns(:conference)).to eq conference
|
||||
expect(assigns(:events_xml)).to eq conference.program.schedules.find(conference.program.selected_schedule).event_schedules
|
||||
.order(start_time: :asc).map(&:event).group_by{ |event| event.scheduled_start_time.to_date }
|
||||
expect(assigns(:events_xml)).to eq conference.program.selected_schedule.event_schedules.order(start_time: :asc)
|
||||
.map(&:event).group_by{ |event| event.scheduled_start_time.to_date }
|
||||
end
|
||||
|
||||
it 'renders successfully' do
|
||||
|
|
|
|||
|
|
@ -13,10 +13,10 @@ FactoryGirl.define do
|
|||
unless program.selected_schedule.present?
|
||||
schedule = create(:schedule, program: program)
|
||||
program.schedules << schedule
|
||||
program.selected_schedule = schedule.id
|
||||
program.selected_schedule = schedule
|
||||
program.save!
|
||||
end
|
||||
event_schedule.schedule_id = program.selected_schedule
|
||||
event_schedule.schedule = program.selected_schedule
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue