From a394d6706376b0e240bf05a2bc67f2bee6f06481 Mon Sep 17 00:00:00 2001 From: Rishabh Saxena Date: Mon, 13 Jun 2016 19:02:36 +0530 Subject: [PATCH 1/6] update nokogiri gem --- Gemfile.lock | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 52ac7f0f..a19b6d72 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -253,7 +253,7 @@ GEM open4 (~> 1.3.4) rake mini_magick (4.5.1) - mini_portile2 (2.0.0) + mini_portile2 (2.1.0) minitest (5.9.0) momentjs-rails (2.8.1) railties (>= 3.1) @@ -273,8 +273,9 @@ GEM mysql2 (0.4.2) netrc (0.11.0) nio4r (1.2.1) - nokogiri (1.6.7.2) - mini_portile2 (~> 2.0.0.rc2) + nokogiri (1.6.8) + mini_portile2 (~> 2.1.0) + pkg-config (~> 1.1.7) oauth2 (0.9.4) faraday (>= 0.8, < 0.10) jwt (~> 1.0) @@ -314,6 +315,7 @@ GEM actionpack activesupport rails (>= 3.0.0) + pkg-config (1.1.7) poltergeist (1.9.0) capybara (~> 2.1) cliver (~> 0.3.1) @@ -616,3 +618,6 @@ DEPENDENCIES web-console (~> 2.0) webmock whenever + +BUNDLED WITH + 1.12.5 From 5cc12a38ab8a18a9c4eb8eb1ce42a2daee07cc64 Mon Sep 17 00:00:00 2001 From: Rishabh Saxena Date: Wed, 15 Jun 2016 20:46:30 +0530 Subject: [PATCH 2/6] change datepicker id to place correct constraints --- app/views/admin/cfps/_form.html.haml | 8 ++++---- spec/features/cfp_spec.rb | 10 +++++----- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/app/views/admin/cfps/_form.html.haml b/app/views/admin/cfps/_form.html.haml index c216c422..57acd091 100644 --- a/app/views/admin/cfps/_form.html.haml +++ b/app/views/admin/cfps/_form.html.haml @@ -4,8 +4,8 @@ %h1 Call for Papers .row .col-md-8 - = semantic_form_for(@cfp, :url => admin_conference_program_cfp_path(@conference.short_title),:html => {:multipart => true}) do |f| - = f.input :start_date, :as => :string, :input_html => { :id => "conference-start-datepicker", :readonly => "readonly" } - = f.input :end_date, :as => :string, :input_html => { :id => "conference-end-datepicker", :readonly => "readonly" } + = semantic_form_for(@cfp, url: admin_conference_program_cfp_path(@conference.short_title),html: {multipart: true}) do |f| + = f.input :start_date, as: :string, input_html: { id: "registration-period-start-datepicker", start_date: @conference.start_date, end_date: @conference.end_date, readonly: "readonly" } + = f.input :end_date, as: :string, input_html: { id: "registration-period-end-datepicker", readonly: "readonly" } %p.text-right - = f.action :submit, :as => :button, :button_html => {:class => "btn btn-primary"} + = f.action :submit, as: :button, button_html: { class: "btn btn-primary" } diff --git a/spec/features/cfp_spec.rb b/spec/features/cfp_spec.rb index 2b81dd61..b7ee2a01 100644 --- a/spec/features/cfp_spec.rb +++ b/spec/features/cfp_spec.rb @@ -22,9 +22,9 @@ feature Conference do today = Date.today - 1 page.execute_script( - "$('#conference-start-datepicker').val('#{today.strftime('%d/%m/%Y')}')") + "$('#registration-period-start-datepicker').val('#{today.strftime('%d/%m/%Y')}')") page.execute_script( - "$('#conference-end-datepicker').val('#{(today + 6).strftime('%d/%m/%Y')}')") + "$('#registration-period-end-datepicker').val('#{(today + 6).strftime('%d/%m/%Y')}')") click_button 'Create Cfp' @@ -47,7 +47,7 @@ feature Conference do # Validate update with empty start date will not saved page.execute_script( - "$('#conference-start-datepicker').val('')") + "$('#registration-period-start-datepicker').val('')") click_button 'Update Cfp' expect(flash). to eq('Updating call for papers failed. ' + @@ -56,9 +56,9 @@ feature Conference do # Fill in date today = Date.today - 9 page.execute_script( - "$('#conference-start-datepicker').val('#{today.strftime('%d/%m/%Y')}')") + "$('#registration-period-start-datepicker').val('#{today.strftime('%d/%m/%Y')}')") page.execute_script( - "$('#conference-end-datepicker').val('#{(today + 14).strftime('%d/%m/%Y')}')") + "$('#registration-period-end-datepicker').val('#{(today + 14).strftime('%d/%m/%Y')}')") click_button 'Update Cfp' From 1412369b3939630b0598e2eccf56c91502cce4ca Mon Sep 17 00:00:00 2001 From: Stella Rouzi Date: Mon, 13 Jun 2016 23:02:48 +0300 Subject: [PATCH 3/6] XML export --- app/controllers/conference_controller.rb | 1 + app/models/event_type.rb | 7 +++++ app/views/conference/schedule.xml.haml | 35 ++++++++++++++++++++++++ 3 files changed, 43 insertions(+) create mode 100644 app/views/conference/schedule.xml.haml diff --git a/app/controllers/conference_controller.rb b/app/controllers/conference_controller.rb index eecaf71d..805d4dbb 100644 --- a/app/controllers/conference_controller.rb +++ b/app/controllers/conference_controller.rb @@ -14,6 +14,7 @@ class ConferenceController < ApplicationController def schedule @rooms = @conference.venue.rooms if @conference.venue @events = @conference.program.events + @events_xml = @conference.program.events.scheduled.group_by{ |event| event.start_time.to_date } @dates = @conference.start_date..@conference.end_date if @dates == Date.current diff --git a/app/models/event_type.rb b/app/models/event_type.rb index 9a5c4c84..7858513a 100644 --- a/app/models/event_type.rb +++ b/app/models/event_type.rb @@ -12,6 +12,13 @@ class EventType < ActiveRecord::Base LENGTH_STEP = 15 + ## + # Return the length in timestamp format (HH:MM) + # + def length_timestamp + [length / 60, length % 60].map { |t| t.to_s.rjust(2, '0') }.join(':') + end + private ## diff --git a/app/views/conference/schedule.xml.haml b/app/views/conference/schedule.xml.haml new file mode 100644 index 00000000..892ce03a --- /dev/null +++ b/app/views/conference/schedule.xml.haml @@ -0,0 +1,35 @@ +%schedule + %version= @conference.revision + %conference + %acronym= @conference.short_title + %title= @conference.title + %start= @conference.start_date + %end= @conference.end_date + %days= (@conference.end_date - @conference.start_date).to_i + 1 + %timeslot_duration= '00:15' #FIXME + + - if @events_xml.any? + - @events_xml.keys.each.with_index(1) do |day, index| + %day{ date: day, index: index } + - events_in_rooms = @events_xml[day].group_by(&:room) + - @rooms.each do |room| + %room{ name: room.name } + - events_in_rooms[room].each do |event| + %event{ guid: event.guid, id: event.id } + %date= event.start_time.iso8601 + %start= event.start_time.strftime('%H:%M') + %duration= event.event_type.length_timestamp + %room= event.room.name + %type= event.event_type.name + %language= 'en' #FIXME + %slug= "#{event.id} #{event.title}".parameterize + %title= event.title + %subtitle= event.subtitle + %track= event.track.name if event.track + %abstract= event.abstract + %recording + %license/ + %optout=false #FIXME + %persons + - event.speakers.uniq.each do |speaker| + %person{ id: speaker.id }= speaker.name From 419f3bb296e21d59c2c45c8ce0d0914f9147b931 Mon Sep 17 00:00:00 2001 From: Stella Rouzi Date: Wed, 15 Jun 2016 17:52:59 +0300 Subject: [PATCH 4/6] fixes --- app/controllers/conference_controller.rb | 2 +- app/helpers/application_helper.rb | 10 ++++++++++ app/models/event_type.rb | 7 ------- app/views/conference/schedule.xml.haml | 4 ++-- 4 files changed, 13 insertions(+), 10 deletions(-) diff --git a/app/controllers/conference_controller.rb b/app/controllers/conference_controller.rb index 805d4dbb..3e05fa57 100644 --- a/app/controllers/conference_controller.rb +++ b/app/controllers/conference_controller.rb @@ -14,7 +14,7 @@ class ConferenceController < ApplicationController def schedule @rooms = @conference.venue.rooms if @conference.venue @events = @conference.program.events - @events_xml = @conference.program.events.scheduled.group_by{ |event| event.start_time.to_date } + @events_xml = @events.scheduled.group_by{ |event| event.start_time.to_date } @dates = @conference.start_date..@conference.end_date if @dates == Date.current diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 794c36c3..f78197e2 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -1,4 +1,14 @@ module ApplicationHelper + ## + # Gets an EventType object, and returns its length in timestamp format (HH:MM) + # ====Gets + # * +Integer+ -> 30 + # ====Returns + # * +String+ -> "00:30" + def length_timestamp(length) + [length / 60, length % 60].map { |t| t.to_s.rjust(2, '0') }.join(':') + end + ## # ====Returns # * +String+ -> number of registrations / max allowed registrations diff --git a/app/models/event_type.rb b/app/models/event_type.rb index 7858513a..9a5c4c84 100644 --- a/app/models/event_type.rb +++ b/app/models/event_type.rb @@ -12,13 +12,6 @@ class EventType < ActiveRecord::Base LENGTH_STEP = 15 - ## - # Return the length in timestamp format (HH:MM) - # - def length_timestamp - [length / 60, length % 60].map { |t| t.to_s.rjust(2, '0') }.join(':') - end - private ## diff --git a/app/views/conference/schedule.xml.haml b/app/views/conference/schedule.xml.haml index 892ce03a..94fd9f4f 100644 --- a/app/views/conference/schedule.xml.haml +++ b/app/views/conference/schedule.xml.haml @@ -6,7 +6,7 @@ %start= @conference.start_date %end= @conference.end_date %days= (@conference.end_date - @conference.start_date).to_i + 1 - %timeslot_duration= '00:15' #FIXME + %timeslot_duration= length_timestamp(EventType::LENGTH_STEP) - if @events_xml.any? - @events_xml.keys.each.with_index(1) do |day, index| @@ -18,7 +18,7 @@ %event{ guid: event.guid, id: event.id } %date= event.start_time.iso8601 %start= event.start_time.strftime('%H:%M') - %duration= event.event_type.length_timestamp + %duration= length_timestamp(event.event_type.length) %room= event.room.name %type= event.event_type.name %language= 'en' #FIXME From a16a3f6bfddde57064b111742e07c617c6e38b15 Mon Sep 17 00:00:00 2001 From: Stella Rouzi Date: Wed, 15 Jun 2016 20:54:51 +0300 Subject: [PATCH 5/6] add test --- app/views/conference/schedule.xml.haml | 4 +-- .../controllers/conference_controller_spec.rb | 25 ++++++++++++++++++- spec/factories/events.rb | 7 ++++++ 3 files changed, 33 insertions(+), 3 deletions(-) diff --git a/app/views/conference/schedule.xml.haml b/app/views/conference/schedule.xml.haml index 94fd9f4f..32083649 100644 --- a/app/views/conference/schedule.xml.haml +++ b/app/views/conference/schedule.xml.haml @@ -12,7 +12,7 @@ - @events_xml.keys.each.with_index(1) do |day, index| %day{ date: day, index: index } - events_in_rooms = @events_xml[day].group_by(&:room) - - @rooms.each do |room| + - events_in_rooms.keys.each do |room| %room{ name: room.name } - events_in_rooms[room].each do |event| %event{ guid: event.guid, id: event.id } @@ -21,7 +21,7 @@ %duration= length_timestamp(event.event_type.length) %room= event.room.name %type= event.event_type.name - %language= 'en' #FIXME + %language= ISO_639.find_by_english_name(event.language).third if event.language %slug= "#{event.id} #{event.title}".parameterize %title= event.title %subtitle= event.subtitle diff --git a/spec/controllers/conference_controller_spec.rb b/spec/controllers/conference_controller_spec.rb index 2b60b544..995cab08 100644 --- a/spec/controllers/conference_controller_spec.rb +++ b/spec/controllers/conference_controller_spec.rb @@ -1,7 +1,7 @@ require 'spec_helper' describe ConferenceController do - let(:conference) { create(:conference, splashpage: create(:splashpage, public: true)) } + let(:conference) { create(:full_conference, splashpage: create(:splashpage, public: true)) } describe 'GET #index' do it 'Response code is 200' do @@ -24,6 +24,29 @@ describe ConferenceController do end end + describe 'GET #schedule' do + context 'XML' do + before :each do + conference.program.schedule_public = true + conference.program.save! + create(:event_scheduled, program: conference.program) + create(:event_scheduled, program: conference.program) + + get :schedule, id: conference.short_title, format: :xml + end + + it 'assigns variables' do + expect(assigns(:conference)).to eq conference + expect(assigns(:events_xml)).to eq conference.program.events.scheduled. + group_by{ |event| event.start_time.to_date } + end + + it 'renders successfully' do + expect(response).to be_success + end + end + end + describe 'OPTIONS #index' do it 'Response code is 200' do process :index, 'OPTIONS' diff --git a/spec/factories/events.rb b/spec/factories/events.rb index 8cbf2293..6d8dc2b1 100644 --- a/spec/factories/events.rb +++ b/spec/factories/events.rb @@ -29,6 +29,13 @@ FactoryGirl.define do event.room = build(:room, venue: venue) event.comment_threads << build(:comment, commentable: event) end + + factory :event_scheduled do + after(:build) do |event| + event.state = 'confirmed' + event.start_time = event.program.conference.start_date.to_time + end + end end end end From acc1c3c5f31dad283cd2e5aaed4add10ba78a135 Mon Sep 17 00:00:00 2001 From: Henne Vogelsang Date: Mon, 20 Jun 2016 15:10:22 +0200 Subject: [PATCH 6/6] Deploy from the stable branch and not from master --- config/deploy.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/config/deploy.rb b/config/deploy.rb index 5a9090fb..3e75ac0c 100644 --- a/config/deploy.rb +++ b/config/deploy.rb @@ -7,6 +7,7 @@ set :port, 2214 set :user, 'osem' set :deploy_to, '/srv/www/vhosts/opensuse.org/events' set :repository, 'https://github.com/openSUSE/osem.git' +set :revision, 'one' # Manually create these paths in shared/ (eg: shared/config/database.yml) in your server. # They will be linked in the 'deploy:link_shared_paths' step.