From edb9f399246a8bff7245b74ff877ac0b3876e4f8 Mon Sep 17 00:00:00 2001 From: dquach217 Date: Fri, 16 Aug 2019 16:04:06 -0400 Subject: [PATCH 01/17] bugfix: validate the asset to contain a url --- app/controllers/manage/configs_controller.rb | 14 +++++++++----- test/controllers/manage/configs_controller_test.rb | 12 ++++++++++++ 2 files changed, 21 insertions(+), 5 deletions(-) diff --git a/app/controllers/manage/configs_controller.rb b/app/controllers/manage/configs_controller.rb index a48e5011d..68cf15ec9 100644 --- a/app/controllers/manage/configs_controller.rb +++ b/app/controllers/manage/configs_controller.rb @@ -17,12 +17,16 @@ def update value = params[:hackathon_config][key] value = true if value == "true" value = false if value == "false" - if @config.value != value - @config.value = value - @config.save - redirect_to manage_configs_path, notice: "Config \"#{key}\" has been updated." - else + if @config.var.end_with?("_asset") && !value.start_with?('http://', 'https://') redirect_to manage_configs_path, notice: "Config \"#{key}\" was not changed" + else + if @config.value != value + @config.value = value + @config.save + redirect_to manage_configs_path, notice: "Config \"#{key}\" has been updated." + else + redirect_to manage_configs_path, notice: "Config \"#{key}\" was not changed" + end end end diff --git a/test/controllers/manage/configs_controller_test.rb b/test/controllers/manage/configs_controller_test.rb index f3168b402..6b3309cca 100644 --- a/test/controllers/manage/configs_controller_test.rb +++ b/test/controllers/manage/configs_controller_test.rb @@ -115,6 +115,18 @@ class Manage::ConfigsControllerTest < ActionController::TestCase assert_redirected_to manage_configs_path end + should "update logo_asset with a url" do + HackathonConfig["logo_asset"] = '' + patch :update, params: {id: "logo_asset", hackathon_config: { logo_asset: "https://picsum.photos/200" } } + assert_equal "https://picsum.photos/200", HackathonConfig["logo_asset"] + end + + should "update logo_asset with an asset that is not URL based" do + HackathonConfig["logo_asset"] = '' + patch :update, params: {id: "logo_asset", hackathon_config: { logo_asset: "test" } } + assert_equal '', HackathonConfig["logo_asset"] + end + should "update config CSS variables when custom_css is blank" do HackathonConfig["custom_css"] = "" patch :update, params: { id: "custom_css", hackathon_config: { custom_css: ":root {\n --foo: #fff;\n}" } } From 1cb039794e9d0bfbe0da76fb78360417df4178eb Mon Sep 17 00:00:00 2001 From: dquach217 Date: Fri, 16 Aug 2019 16:08:46 -0400 Subject: [PATCH 02/17] resolve issues mention by codeclimate and hound --- app/controllers/manage/configs_controller.rb | 14 ++++++-------- test/controllers/manage/configs_controller_test.rb | 6 +++--- 2 files changed, 9 insertions(+), 11 deletions(-) diff --git a/app/controllers/manage/configs_controller.rb b/app/controllers/manage/configs_controller.rb index 68cf15ec9..527f8f151 100644 --- a/app/controllers/manage/configs_controller.rb +++ b/app/controllers/manage/configs_controller.rb @@ -19,14 +19,12 @@ def update value = false if value == "false" if @config.var.end_with?("_asset") && !value.start_with?('http://', 'https://') redirect_to manage_configs_path, notice: "Config \"#{key}\" was not changed" - else - if @config.value != value - @config.value = value - @config.save - redirect_to manage_configs_path, notice: "Config \"#{key}\" has been updated." - else - redirect_to manage_configs_path, notice: "Config \"#{key}\" was not changed" - end + elsif @config.value != value + @config.value = value + @config.save + redirect_to manage_configs_path, notice: "Config \"#{key}\" has been updated." + else + redirect_to manage_configs_path, notice: "Config \"#{key}\" was not changed" end end diff --git a/test/controllers/manage/configs_controller_test.rb b/test/controllers/manage/configs_controller_test.rb index 6b3309cca..93e104412 100644 --- a/test/controllers/manage/configs_controller_test.rb +++ b/test/controllers/manage/configs_controller_test.rb @@ -117,13 +117,13 @@ class Manage::ConfigsControllerTest < ActionController::TestCase should "update logo_asset with a url" do HackathonConfig["logo_asset"] = '' - patch :update, params: {id: "logo_asset", hackathon_config: { logo_asset: "https://picsum.photos/200" } } + patch :update, params: { id: "logo_asset", hackathon_config: { logo_asset: "https://picsum.photos/200" } } assert_equal "https://picsum.photos/200", HackathonConfig["logo_asset"] end - should "update logo_asset with an asset that is not URL based" do + should "update logo_asset with an asset that is not URL based" do HackathonConfig["logo_asset"] = '' - patch :update, params: {id: "logo_asset", hackathon_config: { logo_asset: "test" } } + patch :update, params: { id: "logo_asset", hackathon_config: { logo_asset: "test" } } assert_equal '', HackathonConfig["logo_asset"] end From dc20a1bbee7fd5248e2162d9f6a2cac8e99a6e54 Mon Sep 17 00:00:00 2001 From: David Quach Date: Sat, 17 Aug 2019 22:09:32 -0400 Subject: [PATCH 03/17] Update app/controllers/manage/configs_controller.rb Co-Authored-By: Stuart Olivera --- app/controllers/manage/configs_controller.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/controllers/manage/configs_controller.rb b/app/controllers/manage/configs_controller.rb index 527f8f151..e5d8eedc9 100644 --- a/app/controllers/manage/configs_controller.rb +++ b/app/controllers/manage/configs_controller.rb @@ -18,7 +18,8 @@ def update value = true if value == "true" value = false if value == "false" if @config.var.end_with?("_asset") && !value.start_with?('http://', 'https://') - redirect_to manage_configs_path, notice: "Config \"#{key}\" was not changed" + flash[:alert] = "Config \"#{key}\" must start with http:// or https://" + render :edit elsif @config.value != value @config.value = value @config.save From c5ce3dfa4c040471fcced2d2681e8a59f7ea338e Mon Sep 17 00:00:00 2001 From: dquach217 Date: Sat, 17 Aug 2019 22:37:23 -0400 Subject: [PATCH 04/17] update test to properly capture redirects --- test/controllers/manage/configs_controller_test.rb | 2 ++ 1 file changed, 2 insertions(+) diff --git a/test/controllers/manage/configs_controller_test.rb b/test/controllers/manage/configs_controller_test.rb index 93e104412..a8d9c6da5 100644 --- a/test/controllers/manage/configs_controller_test.rb +++ b/test/controllers/manage/configs_controller_test.rb @@ -119,12 +119,14 @@ class Manage::ConfigsControllerTest < ActionController::TestCase HackathonConfig["logo_asset"] = '' patch :update, params: { id: "logo_asset", hackathon_config: { logo_asset: "https://picsum.photos/200" } } assert_equal "https://picsum.photos/200", HackathonConfig["logo_asset"] + assert_redirected_to manage_configs_path end should "update logo_asset with an asset that is not URL based" do HackathonConfig["logo_asset"] = '' patch :update, params: { id: "logo_asset", hackathon_config: { logo_asset: "test" } } assert_equal '', HackathonConfig["logo_asset"] + assert_redirected_to edit_manage_config_path("logo_asset") end should "update config CSS variables when custom_css is blank" do From b9b256ed8f88647ffa0b15bd88a57c253b7d68b8 Mon Sep 17 00:00:00 2001 From: David Quach Date: Sat, 17 Aug 2019 23:01:29 -0400 Subject: [PATCH 05/17] Update test/controllers/manage/configs_controller_test.rb Co-Authored-By: Stuart Olivera --- test/controllers/manage/configs_controller_test.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/controllers/manage/configs_controller_test.rb b/test/controllers/manage/configs_controller_test.rb index a8d9c6da5..442a0cf35 100644 --- a/test/controllers/manage/configs_controller_test.rb +++ b/test/controllers/manage/configs_controller_test.rb @@ -122,7 +122,7 @@ class Manage::ConfigsControllerTest < ActionController::TestCase assert_redirected_to manage_configs_path end - should "update logo_asset with an asset that is not URL based" do + should "not update logo_asset with an asset that is not URL based" do HackathonConfig["logo_asset"] = '' patch :update, params: { id: "logo_asset", hackathon_config: { logo_asset: "test" } } assert_equal '', HackathonConfig["logo_asset"] From 9fa1ab5fff08c35fd2c6ca73d76539d273ee511b Mon Sep 17 00:00:00 2001 From: dquach217 Date: Sun, 18 Aug 2019 00:44:32 -0400 Subject: [PATCH 06/17] display information on the admin detail page, having issues with displaying data to admin datatable --- app/datatables/admin_datatable.rb | 10 ++++++++++ app/views/manage/admins/index.html.haml | 5 +++++ app/views/manage/admins/show.html.haml | 20 ++++++++++++++++++++ 3 files changed, 35 insertions(+) diff --git a/app/datatables/admin_datatable.rb b/app/datatables/admin_datatable.rb index 5d3039011..f733a9c50 100644 --- a/app/datatables/admin_datatable.rb +++ b/app/datatables/admin_datatable.rb @@ -9,6 +9,11 @@ def view_columns active: { source: "User.is_active", searchable: false }, receive_weekly_report: { source: "User.receive_weekly_report", searchable: false }, created_at: { source: "User.created_at", searchable: false }, + current_sign_in_at: { source: "User.current_sign_in_at", searchable: false }, + last_sign_in_at: { source: "User.last_sign_in_at", searchable: false }, + current_sign_in_ip: { source: "User.current_sign_in_ip", searchable: false }, + last_sign_in_ip: { source: "User.last_sign_in_ip", searchable: false }, + sign_in_count: { source: "User.sign_in_count", searchable: false }, } end @@ -23,6 +28,11 @@ def data active: record.is_active ? 'Active'.html_safe : 'Inactive'.html_safe, receive_weekly_report: yes_no_display(record.receive_weekly_report), created_at: display_datetime(record.created_at), + current_sign_in_at: display_datetime(record.current_sign_in_at), + last_sign_in_at: display_datetime(record.last_sign_in_at), + current_sign_in_ip: record.current_sign_in_ip, + last_sign_in_ip: record.last_sign_in_ip, + sign_in_count: record.sign_in_count, } end end diff --git a/app/views/manage/admins/index.html.haml b/app/views/manage/admins/index.html.haml index 25487b23c..af8490dce 100644 --- a/app/views/manage/admins/index.html.haml +++ b/app/views/manage/admins/index.html.haml @@ -11,4 +11,9 @@ %th Login access %th Weekly report %th Registered on + %th Signed-in Time + %th Last Signed-in Time + %th IP + %th Last IP + %th Sign In Count %tbody diff --git a/app/views/manage/admins/show.html.haml b/app/views/manage/admins/show.html.haml index 7565d0f50..8b07425ea 100644 --- a/app/views/manage/admins/show.html.haml +++ b/app/views/manage/admins/show.html.haml @@ -36,6 +36,26 @@ %b Registered: = display_datetime(@user.created_at) + %p + %b Current Signed-in Time: + = display_datetime(@user.current_sign_in_at) + + %p + %b Last Signed-in Time: + = display_datetime(@user.last_sign_in_at) + + %p + %b Current Signed-in IP: + = @user.current_sign_in_ip + + %p + %b Last Signed-in IP: + = @user.last_sign_in_ip + + %p + %b Sign in Count: + = @user.sign_in_count + .col-lg-6 %h4.border-bottom.pb-2.mb-3 Change History = render "model_history", model: @user From ecaec4543060083af75a5ee13edb7c9e9b50158c Mon Sep 17 00:00:00 2001 From: dquach217 Date: Wed, 21 Aug 2019 13:40:12 -0400 Subject: [PATCH 07/17] fix getting the data from the javascript side and changing the naming convention of table --- .../javascripts/manage/lib/setupDataTables.js | 157 ++++++++++++++---- app/datatables/admin_datatable.rb | 18 +- app/views/manage/admins/index.html.haml | 6 +- app/views/manage/admins/show.html.haml | 10 +- 4 files changed, 146 insertions(+), 45 deletions(-) diff --git a/app/assets/javascripts/manage/lib/setupDataTables.js b/app/assets/javascripts/manage/lib/setupDataTables.js index ec5c53297..92bc8f80f 100644 --- a/app/assets/javascripts/manage/lib/setupDataTables.js +++ b/app/assets/javascripts/manage/lib/setupDataTables.js @@ -4,52 +4,149 @@ * See app/views/manage/application/_questionnaire_datatable.html.haml for an example. */ -var setupDataTables = function() { +var setupDataTables = function () { $('.datatable.checkins').DataTable({ order: [1, 'asc'], - columns: [ - { orderable: true, data: 'first_name', visible: false }, - { orderable: true, data: 'last_name', visible: false }, - { orderable: false, data: 'about' }, - { orderable: true, data: 'checked_in' }, - { orderable: false, data: 'actions' }, + columns: [{ + orderable: true, + data: 'first_name', + visible: false + }, + { + orderable: true, + data: 'last_name', + visible: false + }, + { + orderable: false, + data: 'about' + }, + { + orderable: true, + data: 'checked_in' + }, + { + orderable: false, + data: 'actions' + }, ], }); $('.datatable.users').DataTable({ order: [1, 'asc'], - columns: [ - { orderable: true, data: 'id', visible: false }, - { orderable: true, data: 'email' }, - { orderable: true, data: 'role' }, - { orderable: true, data: 'active' }, - { orderable: true, data: 'receive_weekly_report' }, - { orderable: true, data: 'created_at' }, + columns: [{ + orderable: true, + data: 'id', + visible: false + }, + { + orderable: true, + data: 'email' + }, + { + orderable: true, + data: 'role' + }, + { + orderable: true, + data: 'active' + }, + { + orderable: true, + data: 'receive_weekly_report' + }, + { + orderable: true, + data: 'created_at' + }, + { + orderable: true, + data: 'current_sign_in_at' + }, + { + orderable: true, + data: 'last_sign_in_at' + }, + { + orderable: true, + data: 'current_sign_in_ip' + }, + { + orderable: true, + data: 'last_sign_in_ip' + }, + { + orderable: true, + data: 'sign_in_count' + }, ], }); $('.datatable.bulk-messages').DataTable({ order: [4, 'desc'], - columns: [ - { orderable: true, data: 'id', visible: false }, - { orderable: true, data: 'name' }, - { orderable: true, data: 'subject' }, - { orderable: false, data: 'status' }, - { orderable: true, data: 'created_at' }, - { orderable: true, data: 'updated_at', visible: false }, - { orderable: true, data: 'delivered_at' }, + columns: [{ + orderable: true, + data: 'id', + visible: false + }, + { + orderable: true, + data: 'name' + }, + { + orderable: true, + data: 'subject' + }, + { + orderable: false, + data: 'status' + }, + { + orderable: true, + data: 'created_at' + }, + { + orderable: true, + data: 'updated_at', + visible: false + }, + { + orderable: true, + data: 'delivered_at' + }, ], }); $('.datatable.schools').DataTable({ - order: [[5, 'desc'], [4, 'desc']], - columns: [ - { orderable: true, data: 'id', visible: false }, - { orderable: true, data: 'name' }, - { orderable: true, data: 'city' }, - { orderable: true, data: 'state' }, - { orderable: true, data: 'questionnaire_count' }, - { orderable: true, data: 'home_school' }, + order: [ + [5, 'desc'], + [4, 'desc'] + ], + columns: [{ + orderable: true, + data: 'id', + visible: false + }, + { + orderable: true, + data: 'name' + }, + { + orderable: true, + data: 'city' + }, + { + orderable: true, + data: 'state' + }, + { + orderable: true, + data: 'questionnaire_count' + }, + { + orderable: true, + data: 'home_school' + }, ], }); diff --git a/app/datatables/admin_datatable.rb b/app/datatables/admin_datatable.rb index f733a9c50..4ad4b2e91 100644 --- a/app/datatables/admin_datatable.rb +++ b/app/datatables/admin_datatable.rb @@ -9,16 +9,20 @@ def view_columns active: { source: "User.is_active", searchable: false }, receive_weekly_report: { source: "User.receive_weekly_report", searchable: false }, created_at: { source: "User.created_at", searchable: false }, - current_sign_in_at: { source: "User.current_sign_in_at", searchable: false }, - last_sign_in_at: { source: "User.last_sign_in_at", searchable: false }, - current_sign_in_ip: { source: "User.current_sign_in_ip", searchable: false }, - last_sign_in_ip: { source: "User.last_sign_in_ip", searchable: false }, - sign_in_count: { source: "User.sign_in_count", searchable: false }, + current_sign_in_at: { source: "User.current_sign_in_at" }, + last_sign_in_at: { source: "User.last_sign_in_at" }, + current_sign_in_ip: { source: "User.current_sign_in_ip" }, + last_sign_in_ip: { source: "User.last_sign_in_ip" }, + sign_in_count: { source: "User.sign_in_count" }, } end private + def ip(record) + return ( record == "::1" ) ? "127.0.0.1" : record + end + def data records.map do |record| { @@ -30,8 +34,8 @@ def data created_at: display_datetime(record.created_at), current_sign_in_at: display_datetime(record.current_sign_in_at), last_sign_in_at: display_datetime(record.last_sign_in_at), - current_sign_in_ip: record.current_sign_in_ip, - last_sign_in_ip: record.last_sign_in_ip, + current_sign_in_ip: ip(record.current_sign_in_ip), + last_sign_in_ip: ip(record.last_sign_in_ip), sign_in_count: record.sign_in_count, } end diff --git a/app/views/manage/admins/index.html.haml b/app/views/manage/admins/index.html.haml index af8490dce..4bbff0d29 100644 --- a/app/views/manage/admins/index.html.haml +++ b/app/views/manage/admins/index.html.haml @@ -11,9 +11,9 @@ %th Login access %th Weekly report %th Registered on - %th Signed-in Time - %th Last Signed-in Time + %th Signed-in + %th Previous Signed-in %th IP %th Last IP - %th Sign In Count + %th Sign-in Count %tbody diff --git a/app/views/manage/admins/show.html.haml b/app/views/manage/admins/show.html.haml index 8b07425ea..943fe752e 100644 --- a/app/views/manage/admins/show.html.haml +++ b/app/views/manage/admins/show.html.haml @@ -37,23 +37,23 @@ = display_datetime(@user.created_at) %p - %b Current Signed-in Time: + %b Signed-in: = display_datetime(@user.current_sign_in_at) %p - %b Last Signed-in Time: + %b Previous Signed-in: = display_datetime(@user.last_sign_in_at) %p - %b Current Signed-in IP: + %b IP: = @user.current_sign_in_ip %p - %b Last Signed-in IP: + %b Last IP: = @user.last_sign_in_ip %p - %b Sign in Count: + %b Sign-in Count: = @user.sign_in_count .col-lg-6 From ca6d61b508aa13d0839febb3715de82f53c644cf Mon Sep 17 00:00:00 2001 From: dquach217 Date: Wed, 21 Aug 2019 13:43:27 -0400 Subject: [PATCH 08/17] update so that when encountering ::1 render 127.0.0.1 --- app/datatables/admin_datatable.rb | 8 ++------ app/views/manage/admins/show.html.haml | 4 ++-- 2 files changed, 4 insertions(+), 8 deletions(-) diff --git a/app/datatables/admin_datatable.rb b/app/datatables/admin_datatable.rb index 4ad4b2e91..5ca0f20ed 100644 --- a/app/datatables/admin_datatable.rb +++ b/app/datatables/admin_datatable.rb @@ -19,10 +19,6 @@ def view_columns private - def ip(record) - return ( record == "::1" ) ? "127.0.0.1" : record - end - def data records.map do |record| { @@ -34,8 +30,8 @@ def data created_at: display_datetime(record.created_at), current_sign_in_at: display_datetime(record.current_sign_in_at), last_sign_in_at: display_datetime(record.last_sign_in_at), - current_sign_in_ip: ip(record.current_sign_in_ip), - last_sign_in_ip: ip(record.last_sign_in_ip), + current_sign_in_ip: record.current_sign_in_ip == "::1" ? "127.0.0.1" : record.current_sign_in_ip, + last_sign_in_ip: record.last_sign_in_ip == "::1" ? "127.0.0.1" : record.last_sign_in_ip, sign_in_count: record.sign_in_count, } end diff --git a/app/views/manage/admins/show.html.haml b/app/views/manage/admins/show.html.haml index 943fe752e..6c3a19450 100644 --- a/app/views/manage/admins/show.html.haml +++ b/app/views/manage/admins/show.html.haml @@ -46,11 +46,11 @@ %p %b IP: - = @user.current_sign_in_ip + = @user.current_sign_in_ip == "::1" ? "127.0.0.1" : @user.current_sign_in_ip %p %b Last IP: - = @user.last_sign_in_ip + = @user.last_sign_in_ip == "::1" ? "127.0.0.1" : @user.last_sign_in_ip %p %b Sign-in Count: From cd9116108cd1e48ce71e2babf5d3dc619a91a361 Mon Sep 17 00:00:00 2001 From: dquach217 Date: Wed, 21 Aug 2019 13:56:47 -0400 Subject: [PATCH 09/17] remove the format that my editor applied --- .../javascripts/manage/lib/setupDataTables.js | 162 ++++-------------- 1 file changed, 35 insertions(+), 127 deletions(-) diff --git a/app/assets/javascripts/manage/lib/setupDataTables.js b/app/assets/javascripts/manage/lib/setupDataTables.js index 92bc8f80f..16761b2f2 100644 --- a/app/assets/javascripts/manage/lib/setupDataTables.js +++ b/app/assets/javascripts/manage/lib/setupDataTables.js @@ -4,149 +4,57 @@ * See app/views/manage/application/_questionnaire_datatable.html.haml for an example. */ -var setupDataTables = function () { +var setupDataTables = function() { $('.datatable.checkins').DataTable({ order: [1, 'asc'], - columns: [{ - orderable: true, - data: 'first_name', - visible: false - }, - { - orderable: true, - data: 'last_name', - visible: false - }, - { - orderable: false, - data: 'about' - }, - { - orderable: true, - data: 'checked_in' - }, - { - orderable: false, - data: 'actions' - }, + columns: [ + { orderable: true, data: 'first_name', visible: false }, + { orderable: true, data: 'last_name', visible: false }, + { orderable: false, data: 'about' }, + { orderable: true, data: 'checked_in' }, + { orderable: false, data: 'actions' }, ], }); $('.datatable.users').DataTable({ order: [1, 'asc'], - columns: [{ - orderable: true, - data: 'id', - visible: false - }, - { - orderable: true, - data: 'email' - }, - { - orderable: true, - data: 'role' - }, - { - orderable: true, - data: 'active' - }, - { - orderable: true, - data: 'receive_weekly_report' - }, - { - orderable: true, - data: 'created_at' - }, - { - orderable: true, - data: 'current_sign_in_at' - }, - { - orderable: true, - data: 'last_sign_in_at' - }, - { - orderable: true, - data: 'current_sign_in_ip' - }, - { - orderable: true, - data: 'last_sign_in_ip' - }, - { - orderable: true, - data: 'sign_in_count' - }, + columns: [ + { orderable: true, data: 'id', visible: false }, + { orderable: true, data: 'email' }, + { orderable: true, data: 'role' }, + { orderable: true, data: 'active' }, + { orderable: true, data: 'receive_weekly_report' }, + { orderable: true, data: 'created_at' }, + { orderable: true, data: 'current_sign_in_at' }, + { orderable: true, data: 'last_sign_in_at' }, + { orderable: true, data: 'current_sign_in_ip' }, + { orderable: true, data: 'last_sign_in_ip' }, + { orderable: true, data: 'sign_in_count' }, ], }); $('.datatable.bulk-messages').DataTable({ order: [4, 'desc'], - columns: [{ - orderable: true, - data: 'id', - visible: false - }, - { - orderable: true, - data: 'name' - }, - { - orderable: true, - data: 'subject' - }, - { - orderable: false, - data: 'status' - }, - { - orderable: true, - data: 'created_at' - }, - { - orderable: true, - data: 'updated_at', - visible: false - }, - { - orderable: true, - data: 'delivered_at' - }, + columns: [ + { orderable: true, data: 'id', visible: false }, + { orderable: true, data: 'name' }, + { orderable: true, data: 'subject' }, + { orderable: false, data: 'status' }, + { orderable: true, data: 'created_at' }, + { orderable: true, data: 'updated_at', visible: false }, + { orderable: true, data: 'delivered_at' }, ], }); $('.datatable.schools').DataTable({ - order: [ - [5, 'desc'], - [4, 'desc'] - ], - columns: [{ - orderable: true, - data: 'id', - visible: false - }, - { - orderable: true, - data: 'name' - }, - { - orderable: true, - data: 'city' - }, - { - orderable: true, - data: 'state' - }, - { - orderable: true, - data: 'questionnaire_count' - }, - { - orderable: true, - data: 'home_school' - }, + order: [[5, 'desc'], [4, 'desc']], + columns: [ + { orderable: true, data: 'id', visible: false }, + { orderable: true, data: 'name' }, + { orderable: true, data: 'city' }, + { orderable: true, data: 'state' }, + { orderable: true, data: 'questionnaire_count' }, + { orderable: true, data: 'home_school' }, ], }); From b85759d2a5e2d86692bc3ae259b2aac7835deaf4 Mon Sep 17 00:00:00 2001 From: dquach217 Date: Sat, 24 Aug 2019 20:19:40 -0400 Subject: [PATCH 10/17] update changes on per Stuart's request --- app/assets/javascripts/manage/lib/setupDataTables.js | 10 +++++----- app/datatables/admin_datatable.rb | 6 +++--- app/views/manage/admins/index.html.haml | 10 +++++----- app/views/manage/admins/show.html.haml | 10 +++++----- 4 files changed, 18 insertions(+), 18 deletions(-) diff --git a/app/assets/javascripts/manage/lib/setupDataTables.js b/app/assets/javascripts/manage/lib/setupDataTables.js index 16761b2f2..586c63577 100644 --- a/app/assets/javascripts/manage/lib/setupDataTables.js +++ b/app/assets/javascripts/manage/lib/setupDataTables.js @@ -4,7 +4,7 @@ * See app/views/manage/application/_questionnaire_datatable.html.haml for an example. */ -var setupDataTables = function() { +var setupDataTables = function () { $('.datatable.checkins').DataTable({ order: [1, 'asc'], columns: [ @@ -26,10 +26,10 @@ var setupDataTables = function() { { orderable: true, data: 'receive_weekly_report' }, { orderable: true, data: 'created_at' }, { orderable: true, data: 'current_sign_in_at' }, - { orderable: true, data: 'last_sign_in_at' }, - { orderable: true, data: 'current_sign_in_ip' }, - { orderable: true, data: 'last_sign_in_ip' }, - { orderable: true, data: 'sign_in_count' }, + { orderable: true, data: 'last_sign_in_at', visible: false }, + { orderable: true, data: 'current_sign_in_ip', visible: false }, + { orderable: true, data: 'last_sign_in_ip', visible: false }, + { orderable: true, data: 'sign_in_count', visible: false }, ], }); diff --git a/app/datatables/admin_datatable.rb b/app/datatables/admin_datatable.rb index 5ca0f20ed..a829c87e2 100644 --- a/app/datatables/admin_datatable.rb +++ b/app/datatables/admin_datatable.rb @@ -9,11 +9,11 @@ def view_columns active: { source: "User.is_active", searchable: false }, receive_weekly_report: { source: "User.receive_weekly_report", searchable: false }, created_at: { source: "User.created_at", searchable: false }, - current_sign_in_at: { source: "User.current_sign_in_at" }, - last_sign_in_at: { source: "User.last_sign_in_at" }, + current_sign_in_at: { source: "User.current_sign_in_at", searchable: false }, + last_sign_in_at: { source: "User.last_sign_in_at", searchable: false }, current_sign_in_ip: { source: "User.current_sign_in_ip" }, last_sign_in_ip: { source: "User.last_sign_in_ip" }, - sign_in_count: { source: "User.sign_in_count" }, + sign_in_count: { source: "User.sign_in_count", searchable: false }, } end diff --git a/app/views/manage/admins/index.html.haml b/app/views/manage/admins/index.html.haml index 4bbff0d29..ed72eef9e 100644 --- a/app/views/manage/admins/index.html.haml +++ b/app/views/manage/admins/index.html.haml @@ -11,9 +11,9 @@ %th Login access %th Weekly report %th Registered on - %th Signed-in - %th Previous Signed-in - %th IP - %th Last IP - %th Sign-in Count + %th Signed-in on + %th Previous signed-in on + %th Signed-in IP + %th Previous signed-in IP + %th Sign-in count %tbody diff --git a/app/views/manage/admins/show.html.haml b/app/views/manage/admins/show.html.haml index 6c3a19450..73f498e0f 100644 --- a/app/views/manage/admins/show.html.haml +++ b/app/views/manage/admins/show.html.haml @@ -37,23 +37,23 @@ = display_datetime(@user.created_at) %p - %b Signed-in: + %b Signed-in on: = display_datetime(@user.current_sign_in_at) %p - %b Previous Signed-in: + %b Previous signed-in on: = display_datetime(@user.last_sign_in_at) %p - %b IP: + %b Signed-in IP: = @user.current_sign_in_ip == "::1" ? "127.0.0.1" : @user.current_sign_in_ip %p - %b Last IP: + %b Previous signed-in IP: = @user.last_sign_in_ip == "::1" ? "127.0.0.1" : @user.last_sign_in_ip %p - %b Sign-in Count: + %b Sign-in count: = @user.sign_in_count .col-lg-6 From fd769acd44e1010b0e4e22ae499b1488778bfc6f Mon Sep 17 00:00:00 2001 From: dquach217 Date: Sat, 24 Aug 2019 20:21:41 -0400 Subject: [PATCH 11/17] for hound --- app/datatables/admin_datatable.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/datatables/admin_datatable.rb b/app/datatables/admin_datatable.rb index a829c87e2..62bdea5f5 100644 --- a/app/datatables/admin_datatable.rb +++ b/app/datatables/admin_datatable.rb @@ -9,11 +9,11 @@ def view_columns active: { source: "User.is_active", searchable: false }, receive_weekly_report: { source: "User.receive_weekly_report", searchable: false }, created_at: { source: "User.created_at", searchable: false }, - current_sign_in_at: { source: "User.current_sign_in_at", searchable: false }, - last_sign_in_at: { source: "User.last_sign_in_at", searchable: false }, + current_sign_in_at: { source: "User.current_sign_in_at", searchable: false }, + last_sign_in_at: { source: "User.last_sign_in_at", searchable: false }, current_sign_in_ip: { source: "User.current_sign_in_ip" }, last_sign_in_ip: { source: "User.last_sign_in_ip" }, - sign_in_count: { source: "User.sign_in_count", searchable: false }, + sign_in_count: { source: "User.sign_in_count", searchable: false }, } end From 93dde551090ac856602bde57e57f751f4fa3e4a0 Mon Sep 17 00:00:00 2001 From: dquach217 Date: Sat, 24 Aug 2019 20:57:16 -0400 Subject: [PATCH 12/17] fix for the tests --- app/helpers/hackathon_manager_helper.rb | 3 +++ 1 file changed, 3 insertions(+) diff --git a/app/helpers/hackathon_manager_helper.rb b/app/helpers/hackathon_manager_helper.rb index d8abdece4..cbc129dba 100644 --- a/app/helpers/hackathon_manager_helper.rb +++ b/app/helpers/hackathon_manager_helper.rb @@ -92,6 +92,9 @@ def acc_status_class(acc_status) end def display_datetime(datetime, opts = {}) + if datetime.blank? + return "" + end opts[:relative] = true if opts[:relative].nil? formatted = "" From 63f49ec8d6d4b33818ae360c629598a58d756430 Mon Sep 17 00:00:00 2001 From: Stuart Olivera Date: Sun, 25 Aug 2019 00:04:44 -0700 Subject: [PATCH 13/17] test: Fix _asset config test --- test/controllers/manage/configs_controller_test.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/controllers/manage/configs_controller_test.rb b/test/controllers/manage/configs_controller_test.rb index 442a0cf35..1a78ae2b9 100644 --- a/test/controllers/manage/configs_controller_test.rb +++ b/test/controllers/manage/configs_controller_test.rb @@ -126,7 +126,7 @@ class Manage::ConfigsControllerTest < ActionController::TestCase HackathonConfig["logo_asset"] = '' patch :update, params: { id: "logo_asset", hackathon_config: { logo_asset: "test" } } assert_equal '', HackathonConfig["logo_asset"] - assert_redirected_to edit_manage_config_path("logo_asset") + assert_template :edit end should "update config CSS variables when custom_css is blank" do From 123eafcfe2764d511a02d757ebce21392ce823f7 Mon Sep 17 00:00:00 2001 From: Stuart Olivera Date: Sun, 25 Aug 2019 00:05:00 -0700 Subject: [PATCH 14/17] maint: Code reformat --- test/controllers/manage/configs_controller_test.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/test/controllers/manage/configs_controller_test.rb b/test/controllers/manage/configs_controller_test.rb index 1a78ae2b9..038423fa4 100644 --- a/test/controllers/manage/configs_controller_test.rb +++ b/test/controllers/manage/configs_controller_test.rb @@ -116,16 +116,16 @@ class Manage::ConfigsControllerTest < ActionController::TestCase end should "update logo_asset with a url" do - HackathonConfig["logo_asset"] = '' + HackathonConfig["logo_asset"] = "" patch :update, params: { id: "logo_asset", hackathon_config: { logo_asset: "https://picsum.photos/200" } } assert_equal "https://picsum.photos/200", HackathonConfig["logo_asset"] assert_redirected_to manage_configs_path end should "not update logo_asset with an asset that is not URL based" do - HackathonConfig["logo_asset"] = '' + HackathonConfig["logo_asset"] = "" patch :update, params: { id: "logo_asset", hackathon_config: { logo_asset: "test" } } - assert_equal '', HackathonConfig["logo_asset"] + assert_equal "", HackathonConfig["logo_asset"] assert_template :edit end From ccc651423ee9ed02ba68e9750c8e197714c3e1fc Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 11 Sep 2019 16:52:32 -0700 Subject: [PATCH 15/17] build(deps): bump devise from 4.6.2 to 4.7.1 (#183) Bumps [devise](https://github.com/plataformatec/devise) from 4.6.2 to 4.7.1. - [Release notes](https://github.com/plataformatec/devise/releases) - [Changelog](https://github.com/plataformatec/devise/blob/master/CHANGELOG.md) - [Commits](https://github.com/plataformatec/devise/compare/v4.6.2...v4.7.1) Signed-off-by: dependabot[bot] --- Gemfile | 2 +- Gemfile.lock | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Gemfile b/Gemfile index 30f818c2a..61ef50cfb 100644 --- a/Gemfile +++ b/Gemfile @@ -38,7 +38,7 @@ gem 'redis', '~> 4.0' gem 'bootsnap', '>= 1.1.0', require: false # Authentication -gem 'devise', '~> 4.2' +gem 'devise', '~> 4.7' gem 'omniauth-mlh', '~> 0.1' gem 'doorkeeper', '~> 5.0' gem 'devise-doorkeeper' diff --git a/Gemfile.lock b/Gemfile.lock index 8191e3b30..50c984a24 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -116,10 +116,10 @@ GEM css_parser (1.7.0) addressable debug_inspector (0.0.3) - devise (4.6.2) + devise (4.7.1) bcrypt (~> 3.0) orm_adapter (~> 0.1) - railties (>= 4.1.0, < 6.0) + railties (>= 4.1.0) responders warden (~> 1.2.3) devise-doorkeeper (1.1.2) @@ -465,7 +465,7 @@ DEPENDENCIES chartkick (~> 3.0) chromedriver-helper codeclimate-test-reporter (~> 0.6.0) - devise (~> 4.2) + devise (~> 4.7) devise-doorkeeper doorkeeper (~> 5.0) dotenv-rails From 457781deec8e6c0d67b2b0ce9f8a1d9d237b3271 Mon Sep 17 00:00:00 2001 From: David Quach Date: Fri, 4 Oct 2019 21:40:05 -0400 Subject: [PATCH 16/17] feat: Add ability to close registration completely (#176) * feat: Support SMTP as an alternative email provider to Sparkpost (#172) test: Fix _asset config test maint: Code reformat * fix: when registration is over it should redirect to the root path * use alert instead of failure or error because looking at the docs they only have alert and notice to be used * Update app/controllers/users/registrations_controller.rb Co-Authored-By: Stuart Olivera * check only during the create or new registration * Update app/controllers/manage/questionnaires_controller.rb Co-Authored-By: Stuart Olivera * end to close def block * Update app/controllers/manage/questionnaires_controller.rb Co-Authored-By: Stuart Olivera * test: add new tests for registration and questionnaire * test: remove response method * test: resolve for registration controller * test: remove trailing white space * test: update test * test: get the :new * fix: move the test for questionnaires to be moved to config since that is where it should be housed. Remove the check for response due to root redirecting to sign in page. * fix: remove failing test, it touches both config and questionnaire * fix: remove failing test --- app/controllers/manage/questionnaires_controller.rb | 8 ++++++++ app/controllers/users/registrations_controller.rb | 11 ++++++++--- config/app.yml | 1 + config/locales/en.yml | 2 +- 4 files changed, 18 insertions(+), 4 deletions(-) diff --git a/app/controllers/manage/questionnaires_controller.rb b/app/controllers/manage/questionnaires_controller.rb index 70873a9b8..f10c75129 100644 --- a/app/controllers/manage/questionnaires_controller.rb +++ b/app/controllers/manage/questionnaires_controller.rb @@ -1,6 +1,7 @@ class Manage::QuestionnairesController < Manage::ApplicationController include QuestionnairesControllable + before_action :ensure_registration_is_open, only: [:new, :create] before_action :set_questionnaire, only: [:show, :edit, :update, :destroy, :check_in, :convert_to_admin, :update_acc_status, :message_events] respond_to :html, :json @@ -169,4 +170,11 @@ def convert_boarded_bus_param(values, questionnaire = nil) def set_questionnaire @questionnaire = ::Questionnaire.find(params[:id]) end + + def ensure_registration_is_open + if HackathonConfig['disable_account_registration'] + flash[:alert] = "Registration has closed" + redirect_to root_path + end + end end diff --git a/app/controllers/users/registrations_controller.rb b/app/controllers/users/registrations_controller.rb index 3fd090aa9..aa1766d7b 100644 --- a/app/controllers/users/registrations_controller.rb +++ b/app/controllers/users/registrations_controller.rb @@ -3,9 +3,14 @@ class Users::RegistrationsController < Devise::RegistrationsController # before_action :configure_account_update_params, only: [:update] # GET /resource/sign_up - # def new - # super - # end + def new + if HackathonConfig['disable_account_registration'] + flash[:alert] = "Registration has closed" + redirect_to root_path + else + super + end + end # POST /resource # def create diff --git a/config/app.yml b/config/app.yml index ad910e4bf..62b077943 100644 --- a/config/app.yml +++ b/config/app.yml @@ -7,6 +7,7 @@ defaults: &defaults last_day_to_apply: "<%= Date.new(2000, 1, 1).to_s %>" event_start_date: "<%= Date.new(2000, 1, 1).to_s %>" auto_late_waitlist: false + disable_account_registration: false # Content config name: HackFoo diff --git a/config/locales/en.yml b/config/locales/en.yml index bb090bf98..cc2654fde 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -30,7 +30,6 @@ # available at http://guides.rubyonrails.org/i18n.html. en: - devise: devise: failure: unauthenticated: "Please sign in or sign up to continue." @@ -61,6 +60,7 @@ en: last_day_to_apply: 'Last date to apply to your hackathon (format: YYYY-MM-DD)' event_start_date: 'Start date of your hackathon (format: YYYY-MM-DD)' auto_late_waitlist: Automatically set application status to "late waitlist" for new applications + disable_account_registration: Prevent applicants from applying name: Your hackathon's name logo_asset: Optional logo asset (should be a full https:// URL to a .jpg, .png, or .svg file) From 0f91b5d1276933b02d745fe23fc146c014278e0c Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Sat, 5 Oct 2019 01:47:14 +0000 Subject: [PATCH 17/17] chore(release): 1.19.0 [skip ci] # [1.19.0](https://github.com/codeRIT/hackathon-manager/compare/v1.18.0...v1.19.0) (2019-10-05) ### Features * Add ability to close registration completely ([#176](https://github.com/codeRIT/hackathon-manager/issues/176)) ([457781d](https://github.com/codeRIT/hackathon-manager/commit/457781d)), closes [#172](https://github.com/codeRIT/hackathon-manager/issues/172) ### Maintenance * Code reformat ([123eafc](https://github.com/codeRIT/hackathon-manager/commit/123eafc)) ### Tests * Fix _asset config test ([63f49ec](https://github.com/codeRIT/hackathon-manager/commit/63f49ec)) --- CHANGELOG.md | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 87c9420ce..f9e7a4339 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,20 @@ +# [1.19.0](https://github.com/codeRIT/hackathon-manager/compare/v1.18.0...v1.19.0) (2019-10-05) + + +### Features + +* Add ability to close registration completely ([#176](https://github.com/codeRIT/hackathon-manager/issues/176)) ([457781d](https://github.com/codeRIT/hackathon-manager/commit/457781d)), closes [#172](https://github.com/codeRIT/hackathon-manager/issues/172) + + +### Maintenance + +* Code reformat ([123eafc](https://github.com/codeRIT/hackathon-manager/commit/123eafc)) + + +### Tests + +* Fix _asset config test ([63f49ec](https://github.com/codeRIT/hackathon-manager/commit/63f49ec)) + # [1.18.0](https://github.com/codeRIT/hackathon-manager/compare/v1.17.2...v1.18.0) (2019-08-18)