From b5c3370fca0dacce12153d2ec71d7ac3f69d75f3 Mon Sep 17 00:00:00 2001 From: João M. M. da Silva + Alessandro Palmeira + Diego Araújo Date: Wed, 22 Aug 2012 15:05:17 -0300 Subject: [PATCH] [Mezuro] Fixed exceptions handling in controller --- plugins/mezuro/controllers/mezuro_plugin_myprofile_controller.rb | 71 +++++++++++++++++++++++++++++++++++++++++++++++++---------------------- plugins/mezuro/controllers/mezuro_plugin_profile_controller.rb | 18 +++++++++--------- plugins/mezuro/public/javascripts/validations.js | 4 +++- 3 files changed, 61 insertions(+), 32 deletions(-) diff --git a/plugins/mezuro/controllers/mezuro_plugin_myprofile_controller.rb b/plugins/mezuro/controllers/mezuro_plugin_myprofile_controller.rb index ac3042c..736b01c 100644 --- a/plugins/mezuro/controllers/mezuro_plugin_myprofile_controller.rb +++ b/plugins/mezuro/controllers/mezuro_plugin_myprofile_controller.rb @@ -31,7 +31,9 @@ class MezuroPluginMyprofileController < ProfileController def new_compound_metric_configuration @configuration_content = profile.articles.find(params[:id]) @metric_configurations = @configuration_content.metric_configurations - look_for_configuration_content_errors + if configuration_content_has_errors? + redirect_to_error_page @configuration_content.errors[:base] + end end def edit_metric_configuration @@ -50,8 +52,13 @@ class MezuroPluginMyprofileController < ProfileController def create_metric_configuration id = params[:id] metric_name = params[:metric_configuration][:metric][:name] - (Kalibro::MetricConfiguration.new(params[:metric_configuration])).save - redirect_to "/myprofile/#{profile.identifier}/plugin/mezuro/edit_metric_configuration?id=#{id}&metric_name=#{metric_name.gsub(/\s/, '+')}" + metric_configuration = Kalibro::MetricConfiguration.new(params[:metric_configuration]) + metric_configuration.save + if metric_configuration_has_errors? metric_configuration + redirect_to_error_page metric_configuration.errors[0].message + else + redirect_to "/myprofile/#{profile.identifier}/plugin/mezuro/edit_metric_configuration?id=#{id}&metric_name=#{metric_name.gsub(/\s/, '+')}" + end end def create_compound_metric_configuration @@ -59,8 +66,11 @@ class MezuroPluginMyprofileController < ProfileController metric_name = params[:metric_configuration][:metric][:name] metric_configuration = Kalibro::MetricConfiguration.new(params[:metric_configuration]) metric_configuration.save - look_for_model_error metric_configuration - redirect_to "/myprofile/#{profile.identifier}/plugin/mezuro/edit_compound_metric_configuration?id=#{id}&metric_name=#{metric_name.gsub(/\s/, '+')}" + if metric_configuration_has_errors? metric_configuration + redirect_to_error_page metric_configuration.errors[0].message + else + redirect_to "/myprofile/#{profile.identifier}/plugin/mezuro/edit_compound_metric_configuration?id=#{id}&metric_name=#{metric_name.gsub(/\s/, '+')}" + end end def update_metric_configuration @@ -68,8 +78,11 @@ class MezuroPluginMyprofileController < ProfileController metric_name = params[:metric_configuration][:metric][:name] metric_configuration = Kalibro::MetricConfiguration.find_by_configuration_name_and_metric_name(@configuration_content.name, metric_name) metric_configuration.update_attributes params[:metric_configuration] - look_for_model_error metric_configuration - redirect_to "/#{profile.identifier}/#{@configuration_content.slug}" + if metric_configuration_has_errors? metric_configuration + redirect_to_error_page metric_configuration.errors[0].message + else + redirect_to "/#{profile.identifier}/#{@configuration_content.slug}" + end end def update_compound_metric_configuration @@ -77,8 +90,11 @@ class MezuroPluginMyprofileController < ProfileController metric_name = params[:metric_configuration][:metric][:name] metric_configuration = Kalibro::MetricConfiguration.find_by_configuration_name_and_metric_name(@configuration_content.name, metric_name) metric_configuration.update_attributes params[:metric_configuration] - look_for_model_error metric_configuration - redirect_to "/#{profile.identifier}/#{@configuration_content.slug}" + if metric_configuration_has_errors? metric_configuration + redirect_to_error_page metric_configuration.errors[0].message + else + redirect_to "/#{profile.identifier}/#{@configuration_content.slug}" + end end def remove_metric_configuration @@ -86,8 +102,11 @@ class MezuroPluginMyprofileController < ProfileController metric_name = params[:metric_name] metric_configuration = Kalibro::MetricConfiguration.find_by_configuration_name_and_metric_name(configuration_content.name, metric_name) metric_configuration.destroy - look_for_model_error metric_configuration - redirect_to "/#{profile.identifier}/#{configuration_content.slug}" + if metric_configuration_has_errors? metric_configuration + redirect_to_error_page metric_configuration.errors[0].message + else + redirect_to "/#{profile.identifier}/#{configuration_content.slug}" + end end def new_range @@ -111,7 +130,9 @@ class MezuroPluginMyprofileController < ProfileController metric_configuration = Kalibro::MetricConfiguration.find_by_configuration_name_and_metric_name(@configuration_content.name, metric_name) metric_configuration.add_range(@range) metric_configuration.save - look_for_model_error metric_configuration + if metric_configuration_has_errors? metric_configuration + redirect_to_error_page metric_configuration.errors[0].message + end end def update_range @@ -122,7 +143,9 @@ class MezuroPluginMyprofileController < ProfileController index = metric_configuration.ranges.index{ |range| range.beginning == beginning_id.to_f || beginning_id == "-INF" } metric_configuration.ranges[index] = Kalibro::Range.new params[:range] metric_configuration.save - look_for_model_error metric_configuration + if metric_configuration_has_errors? metric_configuration + redirect_to_error_page metric_configuration.errors[0].message + end end def remove_range @@ -132,27 +155,31 @@ class MezuroPluginMyprofileController < ProfileController metric_configuration = Kalibro::MetricConfiguration.find_by_configuration_name_and_metric_name(configuration_content.name, metric_name) metric_configuration.ranges.delete_if { |range| range.beginning == beginning_id.to_f || beginning_id == "-INF" } metric_configuration.save - - formatted_metric_name = metric_name.gsub(/\s/, '+') - if metric_configuration.metric.class == Kalibro::CompoundMetric - redirect_to "/myprofile/#{profile.identifier}/plugin/mezuro/edit_compound_metric_configuration?id=#{configuration_content.id}&metric_name=#{formatted_metric_name}" + if metric_configuration_has_errors? metric_configuration + redirect_to_error_page metric_configuration.errors[0].message else - redirect_to "/myprofile/#{profile.identifier}/plugin/mezuro/edit_metric_configuration?id=#{configuration_content.id}&metric_name=#{formatted_metric_name}" + formatted_metric_name = metric_name.gsub(/\s/, '+') + if metric_configuration.metric.class == Kalibro::CompoundMetric + redirect_to "/myprofile/#{profile.identifier}/plugin/mezuro/edit_compound_metric_configuration?id=#{configuration_content.id}&metric_name=#{formatted_metric_name}" + else + redirect_to "/myprofile/#{profile.identifier}/plugin/mezuro/edit_metric_configuration?id=#{configuration_content.id}&metric_name=#{formatted_metric_name}" + end end end private def redirect_to_error_page(message) + message = URI.escape(CGI.escape(message),'.') redirect_to "/myprofile/#{profile.identifier}/plugin/mezuro/error_page?message=#{message}" end - def look_for_configuration_content_errors - redirect_to_error_page(@configuration_content.errors[:base]) if not @configuration_content.errors.nil? + def configuration_content_has_errors? + not @configuration_content.errors[:base].nil? end - def look_for_model_error(model) - redirect_to_error_page(model.errors[0].message) if not model.errors.empty? + def metric_configuration_has_errors? metric_configuration + not metric_configuration.errors.empty? end end diff --git a/plugins/mezuro/controllers/mezuro_plugin_profile_controller.rb b/plugins/mezuro/controllers/mezuro_plugin_profile_controller.rb index f820554..24b8081 100644 --- a/plugins/mezuro/controllers/mezuro_plugin_profile_controller.rb +++ b/plugins/mezuro/controllers/mezuro_plugin_profile_controller.rb @@ -9,7 +9,7 @@ class MezuroPluginProfileController < ProfileController def project_state @content = profile.articles.find(params[:id]) project = @content.project - if project_content_errors? + if project_content_has_errors? redirect_to_error_page(@content.errors[:base]) else state = project.kalibro_error.nil? ? project.state : "ERROR" @@ -20,7 +20,7 @@ class MezuroPluginProfileController < ProfileController def project_error @content = profile.articles.find(params[:id]) @project = @content.project - if project_content_errors? + if project_content_has_errors? redirect_to_error_page(@content.errors[:base]) else render :partial => 'content_viewer/project_error' @@ -31,7 +31,7 @@ class MezuroPluginProfileController < ProfileController @content = profile.articles.find(params[:id]) date = params[:date] @project_result = date.nil? ? @content.project_result : @content.project_result_with_date(date) - if project_content_errors? + if project_content_has_errors? redirect_to_error_page(@content.errors[:base]) else render :partial => 'content_viewer/project_result' @@ -41,7 +41,7 @@ class MezuroPluginProfileController < ProfileController def module_result @content = profile.articles.find(params[:id]) @module_result = @content.module_result(params) - if project_content_errors? + if project_content_has_errors? redirect_to_error_page(@content.errors[:base]) else render :partial => 'content_viewer/module_result' @@ -53,7 +53,7 @@ class MezuroPluginProfileController < ProfileController date = params[:date] project_result = date.nil? ? @content.project_result : @content.project_result_with_date(date) @project_name = @content.project.name if not @content.project.nil? - if project_content_errors? + if project_content_has_errors? redirect_to_error_page(@content.errors[:base]) else @source_tree = project_result.node_of(params[:module_name]) @@ -65,7 +65,7 @@ class MezuroPluginProfileController < ProfileController metric_name = params[:metric_name] @content = profile.articles.find(params[:id]) module_history = @content.result_history(params[:module_name]) - if project_content_errors? + if project_content_has_errors? redirect_to_error_page(@content.errors[:base]) else @score_history = filtering_metric_history(metric_name, module_history) @@ -76,7 +76,7 @@ class MezuroPluginProfileController < ProfileController def module_grade_history @content = profile.articles.find(params[:id]) modules_results = @content.result_history(params[:module_name]) - if project_content_errors? + if project_content_has_errors? redirect_to_error_page(@content.errors[:base]) else @score_history = modules_results.collect { |module_result| module_result.grade } @@ -104,8 +104,8 @@ class MezuroPluginProfileController < ProfileController redirect_to "/profile/#{profile.identifier}/plugin/mezuro/error_page?message=#{message}" end - def project_content_errors? - not @content.errors.nil? + def project_content_has_errors? + not @content.errors[:base].nil? end end diff --git a/plugins/mezuro/public/javascripts/validations.js b/plugins/mezuro/public/javascripts/validations.js index d811625..cc126d1 100644 --- a/plugins/mezuro/public/javascripts/validations.js +++ b/plugins/mezuro/public/javascripts/validations.js @@ -3,7 +3,9 @@ jQuery(function (){ jQuery('#metric_configuration_submit').live("click", validate_metric_configuration); }); - +function validate_code(code){ + return true; +} function validate_metric_configuration(){ var code = jQuery('#metric_configuration_code').val(); -- libgit2 0.21.2