aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorcedricnjanga2017-11-22 10:20:03 +0100
committercedricnjanga2017-11-22 10:20:03 +0100
commiteec1d9e43509a1677d346584ee24cd3ee6f8c124 (patch)
tree5ea0ffc28a65f7178e5f11ae19cff353139d3159
parent577204834de4dfcd1851fc9b5f85558eaa141a89 (diff)
parentf01e81604053e9cbdaf4b84534214e37fbfcae5e (diff)
downloadchouette-core-eec1d9e43509a1677d346584ee24cd3ee6f8c124.tar.bz2
Merge branch 'master' into 4941-refactoring_object_id
-rw-r--r--app/controllers/api/v1/netex_imports_controller.rb6
-rw-r--r--app/controllers/compliance_check_sets_controller.rb31
-rw-r--r--app/controllers/compliance_checks_controller.rb2
-rw-r--r--app/controllers/compliance_control_sets_controller.rb21
-rw-r--r--app/controllers/rule_parameter_sets_controller.rb53
-rw-r--r--app/decorators/compliance_check_decorator.rb8
-rw-r--r--app/helpers/application_helper.rb2
-rw-r--r--app/helpers/compliance_check_blocks_helper.rb3
-rw-r--r--app/helpers/compliance_check_sets_helper.rb16
-rw-r--r--app/helpers/compliance_control_blocks_helper.rb2
-rw-r--r--app/helpers/referentials_helper.rb11
-rw-r--r--app/helpers/rule_parameter_sets_helper.rb28
-rw-r--r--app/helpers/transport_mode_helper.rb16
-rw-r--r--app/models/compliance_check_block.rb8
-rw-r--r--app/models/compliance_control_block.rb4
-rw-r--r--app/models/concerns/stif_transport_mode_enumerations.rb25
-rw-r--r--app/models/concerns/stif_transport_submode_enumerations.rb36
-rw-r--r--app/models/import_task.rb18
-rw-r--r--app/models/netex_import.rb31
-rw-r--r--app/models/organisation.rb8
-rw-r--r--app/models/rule_parameter_set.rb392
-rw-r--r--app/views/compliance_check_sets/executed.html.slim84
-rw-r--r--app/views/compliance_check_sets/show.html.slim12
-rw-r--r--app/views/compliance_checks/_filters.html.slim47
-rw-r--r--app/views/compliance_control_sets/show.html.slim117
-rw-r--r--app/views/compliance_controls/_filters.html.slim3
-rw-r--r--app/views/import_tasks/new.html.slim5
-rw-r--r--app/views/lines/_filters.html.slim4
-rw-r--r--app/views/organisations/show.html.slim5
-rw-r--r--app/views/rule_parameter_sets/_column_fields.html.slim13
-rw-r--r--app/views/rule_parameter_sets/_form.html.slim73
-rw-r--r--app/views/rule_parameter_sets/_mode_fields.html.slim9
-rw-r--r--app/views/rule_parameter_sets/_mode_selection.html.slim4
-rw-r--r--app/views/rule_parameter_sets/_rule_parameter_set.html.slim14
-rw-r--r--app/views/rule_parameter_sets/_transport_mode_parameter_set_fields.html.slim9
-rw-r--r--app/views/rule_parameter_sets/edit.html.slim3
-rw-r--r--app/views/rule_parameter_sets/index.html.slim7
-rw-r--r--app/views/rule_parameter_sets/mode.js.slim9
-rw-r--r--app/views/rule_parameter_sets/new.html.slim3
-rw-r--r--app/views/rule_parameter_sets/show.html.slim143
-rw-r--r--config/breadcrumbs.rb2
-rw-r--r--config/initializers/apartment.rb1
-rw-r--r--config/locales/compliance_check_blocks.en.yml8
-rw-r--r--config/locales/compliance_check_blocks.fr.yml7
-rw-r--r--config/locales/compliance_check_sets.en.yml31
-rw-r--r--config/locales/compliance_check_sets.fr.yml28
-rw-r--r--config/locales/compliance_checks.en.yml8
-rw-r--r--config/locales/compliance_checks.fr.yml11
-rw-r--r--config/locales/import_tasks.en.yml1
-rw-r--r--config/locales/import_tasks.fr.yml1
-rw-r--r--config/locales/imports.en.yml2
-rw-r--r--config/locales/imports.fr.yml2
-rw-r--r--config/locales/organisations.en.yml1
-rw-r--r--config/locales/organisations.fr.yml1
-rw-r--r--config/locales/referentials.en.yml1
-rw-r--r--config/locales/referentials.fr.yml1
-rw-r--r--config/locales/rule_parameter_sets.en.yml78
-rw-r--r--config/locales/rule_parameter_sets.fr.yml78
-rw-r--r--config/locales/validation_tasks.en.yml1
-rw-r--r--config/locales/validation_tasks.fr.yml1
-rw-r--r--config/locales/validations.en.yml1
-rw-r--r--config/locales/validations.fr.yml1
-rw-r--r--config/routes.rb2
-rw-r--r--db/migrate/20150218175300_set_organisation_id_to_rps.rb13
-rw-r--r--db/migrate/20150219175300_insert_default_organisation.rb8
-rw-r--r--db/migrate/20171114102438_drop_table_rule_parameter_sets.rb5
-rw-r--r--db/schema.rb10
-rw-r--r--lib/stif/netex_file.rb2
-rw-r--r--spec/controllers/compliance_check_sets_controller_spec.rb4
-rw-r--r--spec/controllers/rule_parameter_sets_controller_spec.rb36
-rw-r--r--spec/db/schema_spec.rb49
-rw-r--r--spec/factories/compliance_control_blocks.rb3
-rw-r--r--spec/factories/netex_imports.rb2
-rw-r--r--spec/factories/rule_parameter_sets.rb9
-rw-r--r--spec/features/compliance_check_sets_spec.rb110
-rw-r--r--spec/features/compliance_control_sets_spec.rb16
-rw-r--r--spec/models/compliance_check_block_spec.rb17
-rw-r--r--spec/models/compliance_control_block_spec.rb17
-rw-r--r--spec/models/import/netex_import_spec.rb33
-rw-r--r--spec/models/import_spec.rb16
-rw-r--r--spec/models/line_referential_spec.rb9
-rw-r--r--spec/models/netex_import_spec.rb39
-rw-r--r--spec/models/rule_parameter_set_spec.rb49
-rw-r--r--spec/support/breadcrumb_features.rb15
-rw-r--r--spec/support/webmock/helpers.rb5
-rw-r--r--spec/support/with_commit.rb10
-rw-r--r--spec/views/rule_parameter_sets/new.html.erb_spec.rb27
87 files changed, 759 insertions, 1298 deletions
diff --git a/app/controllers/api/v1/netex_imports_controller.rb b/app/controllers/api/v1/netex_imports_controller.rb
index fc85e35dd..8e8c48986 100644
--- a/app/controllers/api/v1/netex_imports_controller.rb
+++ b/app/controllers/api/v1/netex_imports_controller.rb
@@ -30,11 +30,7 @@ module Api
def create_netex_import
attributes = netex_import_params.merge creator: "Webservice"
- if @new_referential.persisted?
- attributes = attributes.merge referential_id: @new_referential.id
- else
- attributes = attributes.merge status: "failed"
- end
+ attributes = attributes.merge referential_id: @new_referential.id
@netex_import = NetexImport.new attributes
@netex_import.save!
diff --git a/app/controllers/compliance_check_sets_controller.rb b/app/controllers/compliance_check_sets_controller.rb
index 95dcfbf05..175c22191 100644
--- a/app/controllers/compliance_check_sets_controller.rb
+++ b/app/controllers/compliance_check_sets_controller.rb
@@ -18,4 +18,35 @@ class ComplianceCheckSetsController < InheritedResources::Base
}
end
end
+
+ def executed
+ show! do |format|
+ # But now nobody is aware anymore that `format.html` passes a parameter into the block
+ format.html { executed_for_html }
+ end
+ end
+
+
+ private
+
+ # Action Implementation
+ # ---------------------
+
+ def executed_for_html
+ @q_checks_form = @compliance_check_set.compliance_checks.ransack(params[:q])
+ @compliance_check_set = @compliance_check_set.decorate
+ compliance_checks =
+ decorate_compliance_checks( @q_checks_form.result)
+ .group_by(&:compliance_check_block)
+ @direct_compliance_checks = compliance_checks.delete nil
+ @blocks_to_compliance_checks_map = compliance_checks
+ end
+
+ # Decoration
+ # ----------
+ def decorate_compliance_checks(compliance_checks)
+ ModelDecorator.decorate(
+ compliance_checks,
+ with: ComplianceCheckDecorator)
+ end
end
diff --git a/app/controllers/compliance_checks_controller.rb b/app/controllers/compliance_checks_controller.rb
index 07438cf99..81749e292 100644
--- a/app/controllers/compliance_checks_controller.rb
+++ b/app/controllers/compliance_checks_controller.rb
@@ -1,4 +1,4 @@
-class ComplianceChecksController < ChouetteController
+class ComplianceChecksController < InheritedResources::Base
end
diff --git a/app/controllers/compliance_control_sets_controller.rb b/app/controllers/compliance_control_sets_controller.rb
index 5c78d09e3..83a345c6f 100644
--- a/app/controllers/compliance_control_sets_controller.rb
+++ b/app/controllers/compliance_control_sets_controller.rb
@@ -17,17 +17,12 @@ class ComplianceControlSetsController < InheritedResources::Base
def show
show! do |format|
- format.html {
- @q_controls_form = @compliance_control_set.compliance_controls.ransack(params[:q])
- @compliance_control_set = @compliance_control_set.decorate
- @compliance_controls =
- decorate_compliance_controls( @q_controls_form.result)
- .group_by(&:compliance_control_block)
- @indirect_compliance_controls = @compliance_controls.delete nil
- }
+ # But now nobody is aware anymore that `format.html` passes a parameter into the block
+ format.html { show_for_html }
end
end
+
def clone
ComplianceControlSetCloner.new.copy(params[:id], current_organisation.id)
flash[:notice] = I18n.t("compliance_control_sets.errors.operation_in_progress")
@@ -59,4 +54,14 @@ class ComplianceControlSetsController < InheritedResources::Base
def compliance_control_set_params
params.require(:compliance_control_set).permit(:name, :id)
end
+
+ def show_for_html
+ @q_controls_form = @compliance_control_set.compliance_controls.ransack(params[:q])
+ @compliance_control_set = @compliance_control_set.decorate
+ compliance_controls =
+ decorate_compliance_controls( @q_controls_form.result)
+ .group_by(&:compliance_control_block)
+ @direct_compliance_controls = compliance_controls.delete nil
+ @blocks_to_compliance_controls_map = compliance_controls
+ end
end
diff --git a/app/controllers/rule_parameter_sets_controller.rb b/app/controllers/rule_parameter_sets_controller.rb
deleted file mode 100644
index de4863a08..000000000
--- a/app/controllers/rule_parameter_sets_controller.rb
+++ /dev/null
@@ -1,53 +0,0 @@
-class RuleParameterSetsController < InheritedResources::Base
- defaults :resource_class => RuleParameterSet
- respond_to :html
- respond_to :js, :only => [ :mode ]
-
- def new
- @rule_parameter_set = RuleParameterSet.default( current_organisation)
- new!
- end
-
- def destroy
- if current_organisation.rule_parameter_sets.count == 1
- flash[:alert] = t('rule_parameter_sets.destroy.last_rps_protected')
- redirect_to organisation_rule_parameter_sets_path
- else
- destroy! do |success, failure|
- success.html { redirect_to organisation_rule_parameter_sets_path }
- end
- end
- end
-
- def update
- update!(rule_parameter_set_params) do |success, failure|
- success.html { redirect_to organisation_rule_parameter_sets_path }
- end
- end
-
- def create
- create!(rule_parameter_set_params) do |success, failure|
- success.html { redirect_to organisation_rule_parameter_sets_path }
- end
- end
-
- protected
-
- alias_method :rule_parameter_set, :resource
-
- def collection
- @rule_parameter_sets = current_organisation.rule_parameter_sets
- end
-
- def create_resource(rule_parameter_sets)
- rule_parameter_sets.organisation = current_organisation
- super
- end
-
- private
-
- def rule_parameter_set_params
- params.require(:rule_parameter_set).permit(:organisation, :name, :inter_stop_area_distance_min, :parent_stop_area_distance_max, :stop_areas_area, :inter_access_point_distance_min, :inter_connection_link_distance_max, :walk_default_speed_max, :walk_occasional_traveller_speed_max, :walk_frequent_traveller_speed_max, :walk_mobility_restricted_traveller_speed_max, :inter_access_link_distance_max, :inter_stop_duration_max, :facility_stop_area_distance_max, :check_lines_in_groups, :check_line_routes, :check_stop_parent, :check_connection_link_on_physical, :check_allowed_transport_modes, :allowed_transport_mode_coach, :inter_stop_area_distance_min_mode_coach, :inter_stop_area_distance_max_mode_coach, :speed_max_mode_coach, :speed_min_mode_coach, :inter_stop_duration_variation_max_mode_coach, :allowed_transport_mode_air, :inter_stop_area_distance_min_mode_air, :inter_stop_area_distance_max_mode_air, :speed_max_mode_air, :speed_min_mode_air, :inter_stop_duration_variation_max_mode_air, :allowed_transport_mode_waterborne, :inter_stop_area_distance_min_mode_waterborne, :inter_stop_area_distance_max_mode_waterborne, :speed_max_mode_waterborne, :speed_min_mode_waterborne, :inter_stop_duration_variation_max_mode_waterborne, :allowed_transport_mode_bus, :inter_stop_area_distance_min_mode_bus, :inter_stop_area_distance_max_mode_bus, :speed_max_mode_bus, :speed_min_mode_bus, :inter_stop_duration_variation_max_mode_bus, :allowed_transport_mode_ferry, :inter_stop_area_distance_min_mode_ferry, :inter_stop_area_distance_max_mode_ferry, :speed_max_mode_ferry, :speed_min_mode_ferry, :inter_stop_duration_variation_max_mode_ferry, :allowed_transport_mode_walk, :inter_stop_area_distance_min_mode_walk, :inter_stop_area_distance_max_mode_walk, :speed_max_mode_walk, :speed_min_mode_walk, :inter_stop_duration_variation_max_mode_walk, :allowed_transport_mode_metro, :inter_stop_area_distance_min_mode_metro, :inter_stop_area_distance_max_mode_metro, :speed_max_mode_metro, :speed_min_mode_metro, :inter_stop_duration_variation_max_mode_metro, :allowed_transport_mode_shuttle, :inter_stop_area_distance_min_mode_shuttle, :inter_stop_area_distance_max_mode_shuttle, :speed_max_mode_shuttle, :speed_min_mode_shuttle, :inter_stop_duration_variation_max_mode_shuttle, :allowed_transport_mode_rapid_transit, :inter_stop_area_distance_min_mode_rapid_transit, :inter_stop_area_distance_max_mode_rapid_transit, :speed_max_mode_rapid_transit, :speed_min_mode_rapid_transit, :inter_stop_duration_variation_max_mode_rapid_transit, :allowed_transport_mode_taxi, :inter_stop_area_distance_min_mode_taxi, :inter_stop_area_distance_max_mode_taxi, :speed_max_mode_taxi, :speed_min_mode_taxi, :inter_stop_duration_variation_max_mode_taxi, :allowed_transport_mode_local_train, :inter_stop_area_distance_min_mode_local_train, :inter_stop_area_distance_max_mode_local_train, :speed_max_mode_local_train, :speed_min_mode_local_train, :inter_stop_duration_variation_max_mode_local_train, :allowed_transport_mode_train, :inter_stop_area_distance_min_mode_train, :inter_stop_area_distance_max_mode_train, :speed_max_mode_train, :speed_min_mode_train, :inter_stop_duration_variation_max_mode_train, :allowed_transport_mode_long_distance_train, :inter_stop_area_distance_min_mode_long_distance_train, :inter_stop_area_distance_max_mode_long_distance_train, :speed_max_mode_long_distance_train, :speed_min_mode_long_distance_train, :inter_stop_duration_variation_max_mode_long_distance_train, :allowed_transport_mode_tramway, :inter_stop_area_distance_min_mode_tramway, :inter_stop_area_distance_max_mode_tramway, :speed_max_mode_tramway, :speed_min_mode_tramway, :inter_stop_duration_variation_max_mode_tramway, :allowed_transport_mode_trolleybus, :inter_stop_area_distance_min_mode_trolleybus, :inter_stop_area_distance_max_mode_trolleybus, :speed_max_mode_trolleybus, :speed_min_mode_trolleybus, :inter_stop_duration_variation_max_mode_trolleybus, :allowed_transport_mode_private_vehicle, :inter_stop_area_distance_min_mode_private_vehicle, :inter_stop_area_distance_max_mode_private_vehicle, :speed_max_mode_private_vehicle, :speed_min_mode_private_vehicle, :inter_stop_duration_variation_max_mode_private_vehicle, :allowed_transport_mode_bicycle, :inter_stop_area_distance_min_mode_bicycle, :inter_stop_area_distance_max_mode_bicycle, :speed_max_mode_bicycle, :speed_min_mode_bicycle, :inter_stop_duration_variation_max_mode_bicycle, :allowed_transport_mode_other, :inter_stop_area_distance_min_mode_other, :inter_stop_area_distance_max_mode_other, :speed_max_mode_other, :speed_min_mode_other, :inter_stop_duration_variation_max_mode_other, :check_network, :unique_column_objectid_object_network, :pattern_column_objectid_object_network, :min_size_column_objectid_object_network, :max_size_column_objectid_object_network, :unique_column_name_object_network, :pattern_column_name_object_network, :min_size_column_name_object_network, :max_size_column_name_object_network, :unique_column_registration_number_object_network, :pattern_column_registration_number_object_network, :min_size_column_registration_number_object_network, :max_size_column_registration_number_object_network, :check_company, :unique_column_objectid_object_company, :pattern_column_objectid_object_company, :min_size_column_objectid_object_company, :max_size_column_objectid_object_company, :unique_column_name_object_company, :pattern_column_name_object_company, :min_size_column_name_object_company, :max_size_column_name_object_company, :unique_column_registration_number_object_company, :pattern_column_registration_number_object_company, :min_size_column_registration_number_object_company, :max_size_column_registration_number_object_company, :check_group_of_line, :unique_column_objectid_object_group_of_line, :pattern_column_objectid_object_group_of_line, :min_size_column_objectid_object_group_of_line, :max_size_column_objectid_object_group_of_line, :unique_column_name_object_group_of_line, :pattern_column_name_object_group_of_line, :min_size_column_name_object_group_of_line, :max_size_column_name_object_group_of_line, :unique_column_registration_number_object_group_of_line, :pattern_column_registration_number_object_group_of_line, :min_size_column_registration_number_object_group_of_line, :max_size_column_registration_number_object_group_of_line, :check_stop_area, :unique_column_objectid_object_stop_area, :pattern_column_objectid_object_stop_area, :min_size_column_objectid_object_stop_area, :max_size_column_objectid_object_stop_area, :unique_column_name_object_stop_area, :pattern_column_name_object_stop_area, :min_size_column_name_object_stop_area, :max_size_column_name_object_stop_area, :unique_column_registration_number_object_stop_area, :pattern_column_registration_number_object_stop_area, :min_size_column_registration_number_object_stop_area, :max_size_column_registration_number_object_stop_area, :unique_column_city_name_object_stop_area, :pattern_column_city_name_object_stop_area, :min_size_column_city_name_object_stop_area, :max_size_column_city_name_object_stop_area, :unique_column_country_code_object_stop_area, :pattern_column_country_code_object_stop_area, :min_size_column_country_code_object_stop_area, :max_size_column_country_code_object_stop_area, :unique_column_zip_code_object_stop_area, :pattern_column_zip_code_object_stop_area, :min_size_column_zip_code_object_stop_area, :max_size_column_zip_code_object_stop_area, :check_access_point, :unique_column_objectid_object_access_point, :pattern_column_objectid_object_access_point, :min_size_column_objectid_object_access_point, :max_size_column_objectid_object_access_point, :unique_column_name_object_access_point, :pattern_column_name_object_access_point, :min_size_column_name_object_access_point, :max_size_column_name_object_access_point, :unique_column_city_name_object_access_point, :pattern_column_city_name_object_access_point, :min_size_column_city_name_object_access_point, :max_size_column_city_name_object_access_point, :unique_column_country_code_object_access_point, :pattern_column_country_code_object_access_point, :min_size_column_country_code_object_access_point, :max_size_column_country_code_object_access_point, :unique_column_zip_code_object_access_point, :pattern_column_zip_code_object_access_point, :min_size_column_zip_code_object_access_point, :max_size_column_zip_code_object_access_point, :check_access_link, :unique_column_objectid_object_access_link, :pattern_column_objectid_object_access_link, :min_size_column_objectid_object_access_link, :max_size_column_objectid_object_access_link, :unique_column_name_object_access_link, :pattern_column_name_object_access_link, :min_size_column_name_object_access_link, :max_size_column_name_object_access_link, :unique_column_link_distance_object_access_link, :min_size_column_link_distance_object_access_link, :max_size_column_link_distance_object_access_link, :unique_column_default_duration_object_access_link, :min_size_column_default_duration_object_access_link, :max_size_column_default_duration_object_access_link, :check_connection_link, :unique_column_objectid_object_connection_link, :pattern_column_objectid_object_connection_link, :min_size_column_objectid_object_connection_link, :max_size_column_objectid_object_connection_link, :unique_column_name_object_connection_link, :pattern_column_name_object_connection_link, :min_size_column_name_object_connection_link, :max_size_column_name_object_connection_link, :unique_column_link_distance_object_connection_link, :min_size_column_link_distance_object_connection_link, :max_size_column_link_distance_object_connection_link, :unique_column_default_duration_object_connection_link, :min_size_column_default_duration_object_connection_link, :max_size_column_default_duration_object_connection_link, :check_time_table, :unique_column_objectid_object_time_table, :pattern_column_objectid_object_time_table, :min_size_column_objectid_object_time_table, :max_size_column_objectid_object_time_table, :unique_column_comment_object_time_table, :pattern_column_comment_object_time_table, :min_size_column_comment_object_time_table, :max_size_column_comment_object_time_table, :unique_column_version_object_time_table, :pattern_column_version_object_time_table, :min_size_column_version_object_time_table, :max_size_column_version_object_time_table, :check_line, :unique_column_objectid_object_line, :pattern_column_objectid_object_line, :min_size_column_objectid_object_line, :max_size_column_objectid_object_line, :unique_column_name_object_line, :pattern_column_name_object_line, :min_size_column_name_object_line, :max_size_column_name_object_line, :unique_column_registration_number_object_line, :pattern_column_registration_number_object_line, :min_size_column_registration_number_object_line, :max_size_column_registration_number_object_line, :unique_column_number_object_line, :pattern_column_number_object_line, :min_size_column_number_object_line, :max_size_column_number_object_line, :unique_column_published_name_object_line, :pattern_column_published_name_object_line, :min_size_column_published_name_object_line, :max_size_column_published_name_object_line, :check_route, :unique_column_objectid_object_route, :pattern_column_objectid_object_route, :min_size_column_objectid_object_route, :max_size_column_objectid_object_route, :unique_column_name_object_route, :pattern_column_name_object_route, :min_size_column_name_object_route, :max_size_column_name_object_route, :unique_column_number_object_route, :pattern_column_number_object_route, :min_size_column_number_object_route, :max_size_column_number_object_route, :unique_column_published_name_object_route, :pattern_column_published_name_object_route, :min_size_column_published_name_object_route, :max_size_column_published_name_object_route, :check_journey_pattern, :unique_column_objectid_object_journey_pattern, :pattern_column_objectid_object_journey_pattern, :min_size_column_objectid_object_journey_pattern, :max_size_column_objectid_object_journey_pattern, :unique_column_name_object_journey_pattern, :pattern_column_name_object_journey_pattern, :min_size_column_name_object_journey_pattern, :max_size_column_name_object_journey_pattern, :unique_column_registration_number_object_journey_pattern, :pattern_column_registration_number_object_journey_pattern, :min_size_column_registration_number_object_journey_pattern, :max_size_column_registration_number_object_journey_pattern, :unique_column_published_name_object_journey_pattern, :pattern_column_published_name_object_journey_pattern, :min_size_column_published_name_object_journey_pattern, :max_size_column_published_name_object_journey_pattern, :check_vehicle_journey, :unique_column_objectid_object_vehicle_journey, :pattern_column_objectid_object_vehicle_journey, :min_size_column_objectid_object_vehicle_journey, :max_size_column_objectid_object_vehicle_journey, :unique_column_published_journey_name_object_vehicle_journey, :pattern_column_published_journey_name_object_vehicle_journey, :min_size_column_published_journey_name_object_vehicle_journey, :max_size_column_published_journey_name_object_vehicle_journey, :unique_column_published_journey_identifier_object_vehicle_journey, :pattern_column_published_journey_identifier_object_vehicle_journey, :min_size_column_published_journey_identifier_object_vehicle_journey, :max_size_column_published_journey_identifier_object_vehicle_journey, :unique_column_number_object_vehicle_journey, :min_size_column_number_object_vehicle_journey, :max_size_column_number_object_vehicle_journey)
- end
-end
-
diff --git a/app/decorators/compliance_check_decorator.rb b/app/decorators/compliance_check_decorator.rb
new file mode 100644
index 000000000..5431f5796
--- /dev/null
+++ b/app/decorators/compliance_check_decorator.rb
@@ -0,0 +1,8 @@
+class ComplianceCheckDecorator < Draper::Decorator
+ delegate_all
+
+ def action_links
+ []
+ end
+
+end
diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb
index 9f2e2765f..0a7b0fb75 100644
--- a/app/helpers/application_helper.rb
+++ b/app/helpers/application_helper.rb
@@ -73,8 +73,6 @@ module ApplicationHelper
"time_tables"
when path.include?("/timebands")
"timebands"
- when path.include?("/rule_parameter_set")
- "parametersets"
when path.include?("/import_tasks")
"imports"
when path.include?("/exports")
diff --git a/app/helpers/compliance_check_blocks_helper.rb b/app/helpers/compliance_check_blocks_helper.rb
new file mode 100644
index 000000000..b4d858b07
--- /dev/null
+++ b/app/helpers/compliance_check_blocks_helper.rb
@@ -0,0 +1,3 @@
+module ComplianceCheckBlocksHelper
+ include TransportModeHelper
+end
diff --git a/app/helpers/compliance_check_sets_helper.rb b/app/helpers/compliance_check_sets_helper.rb
new file mode 100644
index 000000000..fc7165fed
--- /dev/null
+++ b/app/helpers/compliance_check_sets_helper.rb
@@ -0,0 +1,16 @@
+module ComplianceCheckSetsHelper
+ def compliance_check_set_path(compliance_check_set)
+ workbench_compliance_check_set_path(compliance_check_set.workbench, compliance_check_set)
+ end
+
+ def executed_compliance_check_set_path(compliance_check_set)
+ executed_workbench_compliance_check_set_path(compliance_check_set.workbench, compliance_check_set)
+ end
+
+ def compliance_check_path(compliance_check)
+ workbench_compliance_check_set_compliance_check_path(
+ compliance_check.compliance_check_set.workbench,
+ compliance_check.compliance_check_set,
+ compliance_check)
+ end
+end
diff --git a/app/helpers/compliance_control_blocks_helper.rb b/app/helpers/compliance_control_blocks_helper.rb
index 311e6fb46..b53ac17ae 100644
--- a/app/helpers/compliance_control_blocks_helper.rb
+++ b/app/helpers/compliance_control_blocks_helper.rb
@@ -1,5 +1,5 @@
module ComplianceControlBlocksHelper
- def transport_mode(transport_mode, transport_submode)
+ def compliance_transport_mode(transport_mode, transport_submode)
return "[Tous les modes de transport]" if transport_mode == ""
if transport_submode == ""
"[" + t("enumerize.transport_mode.#{transport_mode}") + "]"
diff --git a/app/helpers/referentials_helper.rb b/app/helpers/referentials_helper.rb
index f3c18d9f8..01e5a5879 100644
--- a/app/helpers/referentials_helper.rb
+++ b/app/helpers/referentials_helper.rb
@@ -1,12 +1,13 @@
module ReferentialsHelper
- # Line statuses helper
+ # Outputs a green check icon and the text "Oui" or a red exclamation mark
+ # icon and the text "Non" based on `status`
def line_status(status)
if status
- cls = 'danger'
- content_tag :span, status ? " #{t('false')} " : " #{t('true')}", class: "fa fa-exclamation-circle fa-lg text-#{cls}"
+ content_tag(:span, nil, class: 'fa fa-exclamation-circle fa-lg text-danger') +
+ t('false')
else
- cls = 'success'
- content_tag :span, status ? " #{t('false')} " : " #{t('true')}", class: "fa fa-check-circle fa-lg text-#{cls}"
+ content_tag(:span, nil, class: 'fa fa-check-circle fa-lg text-success') +
+ t('true')
end
end
end
diff --git a/app/helpers/rule_parameter_sets_helper.rb b/app/helpers/rule_parameter_sets_helper.rb
deleted file mode 100644
index bb210d9cd..000000000
--- a/app/helpers/rule_parameter_sets_helper.rb
+++ /dev/null
@@ -1,28 +0,0 @@
-module RuleParameterSetsHelper
-
- def unique( value)
- return t("true") if value == "1"
- t "false"
- end
-
- def pattern(value)
- return t("rule_parameter_sets.labels.free_char") if value == "0"
- return t("rule_parameter_sets.labels.num_char") if value == "1"
- return t("rule_parameter_sets.labels.alpha_char") if value == "2"
- return t("rule_parameter_sets.labels.upper_char") if value == "3"
- return t("rule_parameter_sets.labels.lower_char") if value == "4"
- end
-
- def boolean_value(value)
- return t("true") if value == "1"
- t "false"
- end
-
- def transport_mode_label_pairs
- Chouette::TransportMode
- .all
- .zip_map { |mode| t("transport_modes.label.#{mode}") }
- end
-end
-
-
diff --git a/app/helpers/transport_mode_helper.rb b/app/helpers/transport_mode_helper.rb
new file mode 100644
index 000000000..7a486fc2d
--- /dev/null
+++ b/app/helpers/transport_mode_helper.rb
@@ -0,0 +1,16 @@
+module TransportModeHelper
+ def transport_mode_text(transport_modable=nil)
+ mode = transport_modable.try(:transport_mode)
+ return "[Tous les modes de transport]" if mode.blank?
+
+ submode = transport_modable.try(:transport_submode)
+ [translated_mode_name(:mode, mode), translated_mode_name(:submode, submode)].join
+ end
+
+ private
+ def translated_mode_name mode_type, value
+ return "" if value.blank?
+ "[#{I18n.t("enumerize.transport_#{mode_type}.#{value}")}]"
+ end
+
+end
diff --git a/app/models/compliance_check_block.rb b/app/models/compliance_check_block.rb
index ee60a8bb1..05240b428 100644
--- a/app/models/compliance_check_block.rb
+++ b/app/models/compliance_check_block.rb
@@ -1,5 +1,13 @@
class ComplianceCheckBlock < ActiveRecord::Base
+ include StifTransportModeEnumerations
+ include StifTransportSubmodeEnumerations
+
belongs_to :compliance_check_set
has_many :compliance_checks
+
+ hstore_accessor :condition_attributes,
+ transport_mode: :string,
+ transport_submode: :string
+
end
diff --git a/app/models/compliance_control_block.rb b/app/models/compliance_control_block.rb
index 5721c00f4..cfcdfd1a6 100644
--- a/app/models/compliance_control_block.rb
+++ b/app/models/compliance_control_block.rb
@@ -1,6 +1,6 @@
class ComplianceControlBlock < ActiveRecord::Base
- extend StifTransportModeEnumerations
- extend StifTransportSubmodeEnumerations
+ include StifTransportModeEnumerations
+ include StifTransportSubmodeEnumerations
belongs_to :compliance_control_set
has_many :compliance_controls, dependent: :destroy
diff --git a/app/models/concerns/stif_transport_mode_enumerations.rb b/app/models/concerns/stif_transport_mode_enumerations.rb
index c2d38c2c6..74621dfc5 100644
--- a/app/models/concerns/stif_transport_mode_enumerations.rb
+++ b/app/models/concerns/stif_transport_mode_enumerations.rb
@@ -1,19 +1,18 @@
module StifTransportModeEnumerations
extend ActiveSupport::Concern
- extend Enumerize
- extend self
- enumerize :transport_mode, in: %w(bus
- metro
- rail
- tram
- funicular)
-
- def transport_modes
- StifTransportModeEnumerations.transport_mode.values
+ class << self
+ def transport_modes
+ %w(bus metro rail tram funicular)
+ end
+ def sorted_transport_modes
+ transport_modes.sort_by{|m| I18n.t("enumerize.transport_mode.#{m}").parameterize }
+ end
end
-
- def sorted_transport_modes
- self.transport_modes.sort_by{|m| I18n.t("enumerize.transport_mode.#{m}").parameterize }
+
+ included do
+ extend Enumerize
+ enumerize :transport_mode, in: StifTransportModeEnumerations.transport_modes
end
+
end
diff --git a/app/models/concerns/stif_transport_submode_enumerations.rb b/app/models/concerns/stif_transport_submode_enumerations.rb
index cf314badd..eb3e56eac 100644
--- a/app/models/concerns/stif_transport_submode_enumerations.rb
+++ b/app/models/concerns/stif_transport_submode_enumerations.rb
@@ -1,24 +1,28 @@
module StifTransportSubmodeEnumerations
extend ActiveSupport::Concern
- extend Enumerize
- extend self
- enumerize :transport_submode, in: %w(demandAndResponseBus
- nightBus
- airportLinkBus
- highFrequencyBus
- expressBus
- railShuttle
- suburbanRailway
- regionalRail
- interregionalRail
-)
+ class << self
+ def transport_submodes
+ %w(
+ demandAndResponseBus
+ nightBus
+ airportLinkBus
+ highFrequencyBus
+ expressBus
+ railShuttle
+ suburbanRailway
+ regionalRail
+ interregionalRail)
+ end
- def transport_submodes
- StifTransportSubmodeEnumerations.transport_submode.values
+ def sorted_transport_submodes
+ transport_submodes.sort_by{|m| I18n.t("enumerize.transport_submode.#{m}").parameterize }
+ end
end
- def sorted_transport_submodes
- self.transport_submodes.sort_by{|m| I18n.t("enumerize.transport_submode.#{m}").parameterize }
+ included do
+ extend Enumerize
+ enumerize :transport_submode, in: StifTransportSubmodeEnumerations.transport_submodes
end
+
end
diff --git a/app/models/import_task.rb b/app/models/import_task.rb
index 0e1ab65be..7dfa2c644 100644
--- a/app/models/import_task.rb
+++ b/app/models/import_task.rb
@@ -12,7 +12,7 @@ class ImportTask
cattr_accessor :root
enumerize :data_format, in: %w( neptune netex gtfs )
- attr_accessor :rule_parameter_set_id, :referential_id, :user_id, :user_name, :data_format, :resources, :name, :no_save
+ attr_accessor :referential_id, :user_id, :user_name, :data_format, :resources, :name, :no_save
validates_presence_of :referential_id
validates_presence_of :resources
@@ -34,10 +34,6 @@ class ImportTask
referential.organisation
end
- def rule_parameter_set
- organisation.rule_parameter_sets.find(rule_parameter_set_id) if rule_parameter_set_id.present?
- end
-
def save
if valid?
# Save resources
@@ -68,20 +64,10 @@ class ImportTask
def params
{}.tap do |h|
- h["parameters"] = validation_params ? action_params.merge(validation_params) : action_params
+ h["parameters"] = {}
end
end
- def action_params
- {}
- end
-
- def validation_params
- {
- "validation" => rule_parameter_set.parameters
- } if rule_parameter_set.present?
- end
-
def self.data_formats
self.data_format.values
end
diff --git a/app/models/netex_import.rb b/app/models/netex_import.rb
index 32939a741..a7a5bb9b8 100644
--- a/app/models/netex_import.rb
+++ b/app/models/netex_import.rb
@@ -1,19 +1,36 @@
require 'net/http'
class NetexImport < Import
+ before_destroy :destroy_non_ready_referential
+
after_commit :launch_java_import, on: :create
+ before_save def abort_unless_referential
+ self.status = 'aborted' unless referential
+ end
validates_presence_of :parent
def launch_java_import
return if self.class.finished_statuses.include?(status)
+ threaded_call_boiv_iev
+ end
- Thread.new do
- begin
- Net::HTTP.get(URI("#{Rails.configuration.iev_url}/boiv_iev/referentials/importer/new?id=#{id}"))
- rescue Exception => e
- logger.error "IEV server error : #{e.message}"
- logger.error e.backtrace.inspect
- end
+ private
+
+ def destroy_non_ready_referential
+ if referential && !referential.ready
+ referential.destroy
end
end
+
+ def threaded_call_boiv_iev
+ Thread.new(&method(:call_boiv_iev))
+ end
+
+ def call_boiv_iev
+ Net::HTTP.get(URI("#{Rails.configuration.iev_url}/boiv_iev/referentials/importer/new?id=#{id}"))
+ rescue Exception => e
+ logger.error "IEV server error : #{e.message}"
+ logger.error e.backtrace.inspect
+ end
+
end
diff --git a/app/models/organisation.rb b/app/models/organisation.rb
index 6104b4431..f6fba2d67 100644
--- a/app/models/organisation.rb
+++ b/app/models/organisation.rb
@@ -3,7 +3,6 @@ class Organisation < ActiveRecord::Base
has_many :users, :dependent => :destroy
has_many :referentials, :dependent => :destroy
- # has_many :rule_parameter_sets, :dependent => :destroy
has_many :compliance_control_sets, :dependent => :destroy
has_many :stop_area_referential_memberships
@@ -19,12 +18,6 @@ class Organisation < ActiveRecord::Base
validates_presence_of :name
validates_uniqueness_of :code
- # after_create :add_rule_parameter_set
-
- # def add_rule_parameter_set
- # RuleParameterSet.default_for_all_modes( self).save
- # end
-
def self.portail_api_request
conf = Rails.application.config.try(:stif_portail_api)
raise 'Rails.application.config.stif_portail_api configuration is not defined' unless conf
@@ -62,6 +55,7 @@ class Organisation < ActiveRecord::Base
organisation_referential = referentials.find_by id: referential_id
return organisation_referential if organisation_referential
+ # TODO: Replace each with find
workbenches.each do |workbench|
workbench_referential = workbench.all_referentials.find_by id: referential_id
return workbench_referential if workbench_referential
diff --git a/app/models/rule_parameter_set.rb b/app/models/rule_parameter_set.rb
deleted file mode 100644
index 91e575822..000000000
--- a/app/models/rule_parameter_set.rb
+++ /dev/null
@@ -1,392 +0,0 @@
-class RuleParameterSet < ActiveRecord::Base
- belongs_to :organisation
-
- #validates_presence_of :referential
- validates_presence_of :name
-
- # Access to parent object
- attr_accessor :import, :compliance_check
-
- serialize :parameters, JSON
-
- def self.mode_attribute_prefixes
- %w( allowed_transport inter_stop_area_distance_min inter_stop_area_distance_max speed_max speed_min inter_stop_duration_variation_max)
- end
- def self.general_attributes
- %w( inter_stop_area_distance_min parent_stop_area_distance_max stop_areas_area inter_access_point_distance_min
- inter_connection_link_distance_max walk_default_speed_max
- walk_occasional_traveller_speed_max walk_frequent_traveller_speed_max walk_mobility_restricted_traveller_speed_max
- inter_access_link_distance_max inter_stop_duration_max facility_stop_area_distance_max
- check_allowed_transport_modes check_lines_in_groups check_line_routes
- check_stop_parent check_connection_link_on_physical)
- end
-
- def self.validable_objects
- [Chouette::Network,Chouette::Company,Chouette::GroupOfLine,
- Chouette::StopArea,Chouette::AccessPoint,Chouette::AccessLink,Chouette::ConnectionLink,
- Chouette::TimeTable,Chouette::Line,Chouette::Route,
- Chouette::JourneyPattern,Chouette::VehicleJourney]
- end
-
- def self.validable_object_names
- %w( network company group_of_line stop_area access_point access_link connection_link time_table line route
- journey_pattern vehicle_journey )
- end
-
- def self.validable_columns
- { 'network' => ['objectid','name','registration_number'],
- 'company' => ['objectid','name','registration_number'],
- 'group_of_line' => ['objectid','name','registration_number'],
- 'stop_area' => ['objectid','name','registration_number','city_name','country_code','zip_code'],
- 'access_point' => ['objectid','name','city_name','country_code','zip_code'],
- 'access_link' => ['objectid','name','link_distance','default_duration'],
- 'connection_link' => ['objectid','name','link_distance','default_duration'],
- 'time_table' => ['objectid','comment','version'],
- 'line' => ['objectid','name','registration_number','number','published_name'],
- 'route' => ['objectid','name','number','published_name'],
- 'journey_pattern' => ['objectid','name','registration_number','published_name'],
- 'vehicle_journey' => ['objectid','published_journey_name','published_journey_identifier','number'] }
- end
-
- @@objects_by_name = Hash[[validable_object_names, validable_objects].transpose].freeze
-
- def self.validable_object_class(object_name)
- @@objects_by_name[object_name]
- end
-
- def self.validable_column_type(object_name, column)
- if object_class = validable_object_class(object_name)
- object_class.columns_hash[column].try(:type)
- end
- end
-
- def self.column_attribute_prefixes
- %w( unique pattern min_size max_size )
- end
-
- def self.all_modes
- ["interchange",
- "unknown",
- "coach",
- "air",
- "waterborne",
- "bus",
- "ferry",
- "walk",
- "metro",
- "shuttle",
- "rapid_transit",
- "taxi",
- "local_train",
- "train",
- "long_distance_train",
- "tramway",
- "trolleybus",
- "private_vehicle",
- "bicycle",
- "other"]
- end
-
- def self.mode_attribute?( method_name )
- pattern = /(\w+)_mode_(\w+)/
- return false unless method_name.match( pattern)
-
- mode_attribute_prefixes.include?( $1) && self.class.all_modes.include?( $2)
- end
-
- def self.column_attribute?( method_name )
- pattern = /(\w+)_column_(\w+)_object_(\w+)/
- return false unless method_name.match( pattern)
- return false unless validable_object_names.include?($3)
- column_attribute_prefixes.include?( $1) && validable_columns[$3].include?( $2)
- end
-
- def self.mode_of_mode_attribute( method_name )
- method_name.match( /(\w+)_mode_(\w+)/)
- $2
- end
- def self.attribute_of_mode_attribute( method_name )
- method_name.match( /(\w+)_mode_(\w+)/)
- $1
- end
-
- def self.object_of_column_attribute( method_name )
- method_name.match( /(\w+)_column_(\w+)_object_(\w+)/)
- $3
- end
- def self.column_of_column_attribute( method_name )
- method_name.match( /(\w+)_column_(\w+)_object_(\w+)/)
- $2
- end
- def self.attribute_of_column_attribute( method_name )
- method_name.match( /(\w+)_column_(\w+)_object_(\w+)/)
- $1
- end
-
-
- def self.mode_parameter(name)
- name = name.to_s
- #attr_accessible name
-
- define_method(name) do
- attribute_name, mode = RuleParameterSet.attribute_of_mode_attribute( name), RuleParameterSet.mode_of_mode_attribute( name)
- self.parameters and self.parameters["mode_#{mode}"] and
- self.parameters["mode_#{mode}"][attribute_name]
- end
-
- define_method("#{name}=") do |prefix|
- attribute_name, mode = RuleParameterSet.attribute_of_mode_attribute( name), RuleParameterSet.mode_of_mode_attribute( name)
- ((self.parameters ||= {})["mode_#{mode}"] ||= {})[attribute_name] = prefix
- end
- end
-
- def self.column_parameter(obj,column,prefix)
- name = "#{prefix}_column_#{column}_object_#{obj}"
- #attr_accessible name
- define_method(name) do
- attribute_name, column, obj = prefix, column, obj
- self.parameters and self.parameters[obj] and
- self.parameters[obj][column] and self.parameters[obj][column][attribute_name]
- end
-
- define_method("#{name}=") do |key|
- attribute_name, column, obj = prefix, column, obj
- (((self.parameters ||= {})[obj] ||= {})[column]||= {})[attribute_name] = key
- end
-
- end
-
- def self.object_parameter(clazz)
- name = clazz.table_name.singularize
- #attr_accessible name
-
- parameter "check_#{clazz.table_name.singularize}"
- validable_columns[name].each do |column|
- column_attribute_prefixes.each do |prefix|
- column_parameter name,column,prefix
- end
-
- end
-
- end
-
- def self.parameter(name)
- name = name.to_s
- #attr_accessible name
-
- define_method(name) do
- self.parameters and self.parameters[name]
- end
-
- define_method("#{name}=") do |prefix|
- (self.parameters ||= {})[name] = prefix
- end
- end
-
- def self.default_params(mode=nil)
- base = { :inter_stop_area_distance_min => 20,
- :parent_stop_area_distance_max => 300,
- :inter_access_point_distance_min => 20,
- :inter_connection_link_distance_max => 400,
- :walk_default_speed_max => 4,
- :walk_occasional_traveller_speed_max => 2,
- :walk_frequent_traveller_speed_max => 5,
- :walk_mobility_restricted_traveller_speed_max => 1,
- :inter_access_link_distance_max => 300,
- :inter_stop_duration_max => 40,
- :facility_stop_area_distance_max => 300,
- :check_allowed_transport_modes => false,
- :check_lines_in_groups => false,
- :check_line_routes => false,
- :check_stop_parent => false,
- :check_connection_link_on_physical => false
- }
- if mode && self.mode_default_params[ mode.to_sym]
- base.merge!( self.mode_default_params[ mode.to_sym])
- end
- base
- end
- def self.mode_default_params
- {
- :coach => {
- :allowed_transport_mode_coach => false,
- :inter_stop_area_distance_min_mode_coach => 500,
- :inter_stop_area_distance_max_mode_coach => 10000,
- :speed_max_mode_coach => 90,
- :speed_min_mode_coach => 40,
- :inter_stop_duration_variation_max_mode_coach => 20},
- :air => {
- :allowed_transport_mode_air => false,
- :inter_stop_area_distance_min_mode_air => 200,
- :inter_stop_area_distance_max_mode_air => 10000,
- :speed_max_mode_air => 800,
- :speed_min_mode_air => 700,
- :inter_stop_duration_variation_max_mode_air => 60},
- :waterborne => {
- :allowed_transport_mode_waterborne => false,
- :inter_stop_area_distance_min_mode_waterborne => 200,
- :inter_stop_area_distance_max_mode_waterborne => 10000,
- :speed_max_mode_waterborne => 40,
- :speed_min_mode_waterborne => 5,
- :inter_stop_duration_variation_max_mode_waterborne => 60},
- :bus => {
- :allowed_transport_mode_bus => false,
- :inter_stop_area_distance_min_mode_bus => 100,
- :inter_stop_area_distance_max_mode_bus => 10000,
- :speed_max_mode_bus => 60,
- :speed_min_mode_bus => 10,
- :inter_stop_duration_variation_max_mode_bus => 15},
- :ferry => {
- :allowed_transport_mode_ferry => false,
- :inter_stop_area_distance_min_mode_ferry => 200,
- :inter_stop_area_distance_max_mode_ferry => 10000,
- :speed_max_mode_ferry => 40,
- :speed_min_mode_ferry => 5,
- :inter_stop_duration_variation_max_mode_ferry => 60},
- :walk => {
- :allowed_transport_mode_walk => false,
- :inter_stop_area_distance_min_mode_walk => 1,
- :inter_stop_area_distance_max_mode_walk => 10000,
- :speed_max_mode_walk => 6,
- :speed_min_mode_walk => 1,
- :inter_stop_duration_variation_max_mode_walk => 10},
- :metro => {
- :allowed_transport_mode_metro => false,
- :inter_stop_area_distance_min_mode_metro => 300,
- :inter_stop_area_distance_max_mode_metro => 2000,
- :speed_max_mode_metro => 60,
- :speed_min_mode_metro => 30,
- :inter_stop_duration_variation_max_mode_metro => 30},
- :shuttle => {
- :allowed_transport_mode_shuttle => false,
- :inter_stop_area_distance_min_mode_shuttle => 500,
- :inter_stop_area_distance_max_mode_shuttle => 10000,
- :speed_max_mode_shuttle => 80,
- :speed_min_mode_shuttle => 20,
- :inter_stop_duration_variation_max_mode_shuttle => 10},
- :rapid_transit => {
- :allowed_transport_mode_rapid_transit => false,
- :inter_stop_area_distance_min_mode_rapid_transit => 2000,
- :inter_stop_area_distance_max_mode_rapid_transit => 500000,
- :speed_max_mode_rapid_transit => 300,
- :speed_min_mode_rapid_transit => 20,
- :inter_stop_duration_variation_max_mode_rapid_transit => 60},
- :taxi => {
- :allowed_transport_mode_taxi => false,
- :inter_stop_area_distance_min_mode_taxi => 500,
- :inter_stop_area_distance_max_mode_taxi => 300000,
- :speed_max_mode_taxi => 130,
- :speed_min_mode_taxi => 20,
- :inter_stop_duration_variation_max_mode_taxi => 60},
- :local_train => {
- :allowed_transport_mode_local_train => false,
- :inter_stop_area_distance_min_mode_local_train => 2000,
- :inter_stop_area_distance_max_mode_local_train => 500000,
- :speed_max_mode_local_train => 300,
- :speed_min_mode_local_train => 20,
- :inter_stop_duration_variation_max_mode_local_train => 60},
- :train => {
- :allowed_transport_mode_train => false,
- :inter_stop_area_distance_min_mode_train => 2000,
- :inter_stop_area_distance_max_mode_train => 500000,
- :speed_max_mode_train => 300,
- :speed_min_mode_train => 20,
- :inter_stop_duration_variation_max_mode_train => 60},
- :long_distance_train => {
- :allowed_transport_mode_long_distance_train => false,
- :inter_stop_area_distance_min_mode_long_distance_train => 2000,
- :inter_stop_area_distance_max_mode_long_distance_train => 500000,
- :speed_max_mode_long_distance_train => 300,
- :speed_min_mode_long_distance_train => 20,
- :inter_stop_duration_variation_max_mode_long_distance_train => 60},
- :tramway => {
- :allowed_transport_mode_tramway => false,
- :inter_stop_area_distance_min_mode_tramway => 300,
- :inter_stop_area_distance_max_mode_tramway => 2000,
- :speed_max_mode_tramway => 50,
- :speed_min_mode_tramway => 20,
- :inter_stop_duration_variation_max_mode_tramway => 30},
- :trolleybus => {
- :allowed_transport_mode_trolleybus => false,
- :inter_stop_area_distance_min_mode_trolleybus => 300,
- :inter_stop_area_distance_max_mode_trolleybus => 2000,
- :speed_max_mode_trolleybus => 50,
- :speed_min_mode_trolleybus => 20,
- :inter_stop_duration_variation_max_mode_trolleybus => 30},
- :private_vehicle => {
- :allowed_transport_mode_private_vehicle => false,
- :inter_stop_area_distance_min_mode_private_vehicle => 500,
- :inter_stop_area_distance_max_mode_private_vehicle => 300000,
- :speed_max_mode_private_vehicle => 130,
- :speed_min_mode_private_vehicle => 20,
- :inter_stop_duration_variation_max_mode_private_vehicle => 60},
- :bicycle => {
- :allowed_transport_mode_bicycle => false,
- :inter_stop_area_distance_min_mode_bicycle => 300,
- :inter_stop_area_distance_max_mode_bicycle => 30000,
- :speed_max_mode_bicycle => 40,
- :speed_min_mode_bicycle => 10,
- :inter_stop_duration_variation_max_mode_bicycle => 10},
- :other => {
- :allowed_transport_mode_other => false,
- :inter_stop_area_distance_min_mode_other => 300,
- :inter_stop_area_distance_max_mode_other => 30000,
- :speed_max_mode_other => 40,
- :speed_min_mode_other => 10,
- :inter_stop_duration_variation_max_mode_other => 10},
- }
- # :waterborne, :bus, :ferry, :walk, :metro, :shuttle, :rapidtransit, :taxi, :localtrain, :train, :longdistancetrain, :tramway, :trolleybus, :privatevehicle, :bicycle, :other
- end
- def self.default(organisation)
- self.default_for_all_modes(organisation).tap do |rps|
- rps.name = ""
- end
- end
- def self.default_for_all_modes(organisation)
- mode_attributes = mode_default_params.values.inject(self.default_params){|memo, obj| memo.merge! obj}
- self.new(
- { :organisation_id => organisation.id,
- :name => "valeurs par defaut"
- }.merge(mode_attributes))
- end
-
- def allowed(mode)
- return true unless self.check_allowed_transport_modes == "1"
- # puts "#{mode} = "+self.send("allowed_transport_mode_#{mode}").to_s
- return self.send("allowed_transport_mode_#{mode}") == "1"
- end
-
- def selected(object)
- # puts "#{mode} = "+self.send("allowed_transport_mode_#{mode}").to_s
- return self.send("check_#{object}") == "1"
- end
-
- def selected_column(object,column)
- # puts "#{mode} = "+self.send("allowed_transport_mode_#{mode}").to_s
- return self.send("unique_column_#{column}_object_#{object}") == "1" ||
- self.send("pattern_column_#{column}_object_#{object}") != "0" ||
- !self.send("min_size_column_#{column}_object_#{object}").empty? ||
- !self.send("max_size_column_#{column}_object_#{object}").empty?
- end
-
-
- all_modes.each do |mode|
- mode_attribute_prefixes.each do |prefix|
- mode_parameter "#{prefix}_mode_#{mode}".to_sym
- end
- end
-
- general_attributes.each do |attribute|
- parameter attribute.to_sym
- unless attribute == "stop_areas_area" || attribute == "check_allowed_transport_modes"
- validates attribute.to_sym, :numericality => true, :allow_nil => true, :allow_blank => true
- end
- end
-
-
- validable_objects.each do |obj|
- object_parameter obj
- end
-
-
-end
diff --git a/app/views/compliance_check_sets/executed.html.slim b/app/views/compliance_check_sets/executed.html.slim
new file mode 100644
index 000000000..bb055272d
--- /dev/null
+++ b/app/views/compliance_check_sets/executed.html.slim
@@ -0,0 +1,84 @@
+- breadcrumb :compliance_check_set, @workbench, @compliance_check_set
+/ PageHeader
+= pageheader 'jeux-de-donnees',
+ t('compliance_check_sets.executed.title', name: @compliance_check_set.name)
+/ PageContent
+.page_content
+ .container-fluid
+ .row
+ .col-lg-6.col-md-6.col-sm-12.col-xs-12
+ = definition_list t('metadatas'),
+ ComplianceCheckSet.human_attribute_name(:name) => @compliance_check_set.name
+
+ - if params[:q].present? || @blocks_to_compliance_checks_map.any? || @direct_compliance_checks
+ .row
+ .col-lg-12
+ = render '/compliance_checks/filters'
+
+ - if @direct_compliance_checks.try(:any?)
+ .row
+ .col-lg-12
+ h2
+ = transport_mode_text()
+ .row
+ .col-lg-12
+ = table_builder_2 @direct_compliance_checks,
+ [ \
+ TableBuilderHelper::Column.new( \
+ key: :code, \
+ attribute: 'code' \
+ ), \
+ TableBuilderHelper::Column.new( \
+ key: :name, \
+ attribute: 'name', \
+ link_to: lambda do |compliance_check| \
+ compliance_check_path(compliance_check) \
+ end \
+ ), \
+ TableBuilderHelper::Column.new( \
+ key: :criticity, \
+ attribute: 'criticity' \
+ ), \
+ TableBuilderHelper::Column.new( \
+ key: :comment, \
+ attribute: 'comment' \
+ ), \
+ ],
+ sortable: true,
+ cls: 'table has-filter has-search',
+ model: ComplianceCheck
+
+ - @blocks_to_compliance_checks_map.each do |block, compliance_checks|
+
+ - if compliance_checks.try(:any?)
+ .row
+ .col-lg-12
+ h2
+ = transport_mode_text(block)
+ .row
+ .col-lg-12
+ = table_builder_2 compliance_checks,
+ [ \
+ TableBuilderHelper::Column.new( \
+ key: :code, \
+ attribute: 'code' \
+ ), \
+ TableBuilderHelper::Column.new( \
+ key: :name, \
+ attribute: 'name', \
+ link_to: lambda do |compliance_check| \
+ compliance_check_path(compliance_check) \
+ end \
+ ), \
+ TableBuilderHelper::Column.new( \
+ key: :criticity, \
+ attribute: 'criticity' \
+ ), \
+ TableBuilderHelper::Column.new( \
+ key: :comment, \
+ attribute: 'comment' \
+ ), \
+ ],
+ sortable: true,
+ cls: 'table has-filter has-search',
+ model: ComplianceCheck
diff --git a/app/views/compliance_check_sets/show.html.slim b/app/views/compliance_check_sets/show.html.slim
deleted file mode 100644
index eefa5363f..000000000
--- a/app/views/compliance_check_sets/show.html.slim
+++ /dev/null
@@ -1,12 +0,0 @@
-- breadcrumb :compliance_check_set, @workbench, @compliance_check_set
-/ PageHeader
-= pageheader 'jeux-de-donnees',
- @compliance_check_set.referential.name
-/ PageContent
-.page_content
- .container-fluid
- .row
- .col-lg-6.col-md-6.col-sm-12.col-xs-12
- = definition_list t('metadatas'),
- ComplianceCheckSet.human_attribute_name(:id) => @compliance_check_set.referential.id,
- ComplianceCheckSet.human_attribute_name(:name) => @compliance_check_set.referential.name
diff --git a/app/views/compliance_checks/_filters.html.slim b/app/views/compliance_checks/_filters.html.slim
new file mode 100644
index 000000000..0d747da27
--- /dev/null
+++ b/app/views/compliance_checks/_filters.html.slim
@@ -0,0 +1,47 @@
+/ Compliance Check Filter
+= search_form_for @q_checks_form,
+ url: executed_compliance_check_set_path(@compliance_check_set),
+ builder: SimpleForm::FormBuilder,
+ class: 'form form-filter' do |f|
+
+ .ffg-row
+ .input-group.search_bar
+ = f.search_field :name_cont,
+ class: 'form-control',
+ placeholder: t('compliance_checks.filters.name')
+ span.input-group-btn
+ button.btn.btn-default type='submit'
+ span.fa.fa-search
+
+ .ffg-row
+ .form-group.togglable#compliance_check_block-filter
+ = f.label t('activerecord.models.compliance_check_block.one'), required: false, class: 'control-label'
+ = f.input :compliance_check_block_id_eq_any,
+ collection: @compliance_check_set.compliance_check_blocks,
+ as: :check_boxes,
+ label: false,
+ label_method: lambda {|w| ("<span>#{transport_mode_text(w)}</span>").html_safe},
+ required: false,
+ wrapper_html: {class: 'checkbox_list'}
+ .form-group.togglable#subclass-filter
+ = f.label t('compliance_checks.filters.subclass'), required: false, class: 'control-label'
+ = f.input :origin_code_cont_any,
+ collection: subclass_selection_list,
+ as: :check_boxes,
+ label: false,
+ label_method: lambda {|w| ("<span>#{w.first}</span>").html_safe},
+ required: false,
+ wrapper_html: {class: 'checkbox_list'}
+ .form-group.togglable#severity-filter
+ = f.label t('compliance_checks.filters.criticity'), required: false, class: 'control-label'
+ = f.input :criticity_eq_any,
+ collection: ComplianceControl.criticities,
+ as: :check_boxes,
+ label: false,
+ label_method: lambda {|w| ("<span>#{w}</span>").html_safe},
+ required: false,
+ wrapper_html: {class: 'checkbox_list'}
+
+ .actions
+ = link_to t('actions.erase'), executed_compliance_check_set_path(@compliance_check_set), class: 'btn btn-link'
+ = f.submit t('actions.filter'), class: 'btn btn-default', id: 'compliance_check_set_compliance_checks_filter_btn'
diff --git a/app/views/compliance_control_sets/show.html.slim b/app/views/compliance_control_sets/show.html.slim
index 2bd663578..71b71f842 100644
--- a/app/views/compliance_control_sets/show.html.slim
+++ b/app/views/compliance_control_sets/show.html.slim
@@ -1,8 +1,7 @@
- breadcrumb :compliance_control_set, @compliance_control_set
/ PageHeader
= pageheader 'jeux-de-controle',
- t('compliance_control_sets.show.title', name: @compliance_control_set.name),
- 'Lorem ipsum dolor sit amet'
+ t('compliance_control_sets.show.title', name: @compliance_control_set.name)
/ Below is secondary actions & optional contents (filters, ...)
.row.mb-sm
@@ -25,21 +24,65 @@
= definition_list t('metadatas'),
ComplianceControlSet.human_attribute_name(:name) => @compliance_control_set.name,
I18n.t('activerecord.attributes.compliance_control_set.owner_jdc') => @compliance_control_set.organisation.name
- - if params[:q].present? or @compliance_controls.any?
+
+ - if params[:q].present? || @blocks_to_compliance_controls_map.any? || @direct_compliance_controls
.row
.col-lg-12
= render '/compliance_controls/filters'
- .row
- .col-lg-12
- h2
- = transport_mode("", "")
- - if @indirect_compliance_controls.try(:any?)
+ - if @direct_compliance_controls.try(:any?)
+ .row
+ .col-lg-12
+ h2
+ = transport_mode_text()
+ .row
+ .col-lg-12
+ .select_table
+ = table_builder_2 @direct_compliance_controls,
+ [ \
+ TableBuilderHelper::Column.new( \
+ key: :code, \
+ attribute: 'code' \
+ ), \
+ TableBuilderHelper::Column.new( \
+ key: :name, \
+ attribute: 'name', \
+ link_to: lambda do |compliance_control| \
+ compliance_control_set_compliance_control_path(@compliance_control_set, compliance_control) \
+ end \
+ ), \
+ TableBuilderHelper::Column.new( \
+ key: :criticity, \
+ attribute: 'criticity' \
+ ), \
+ TableBuilderHelper::Column.new( \
+ key: :comment, \
+ attribute: 'comment' \
+ ), \
+ ],
+ sortable: true,
+ cls: 'table has-filter has-search',
+ model: ComplianceControl
+
+ - @blocks_to_compliance_controls_map.each do |block, compliance_controls|
+
+ - if compliance_controls.try(:any?)
+ .row
+ .col-lg-12
+ h2
+ = transport_mode_text(block)
+ .btn-group
+ .btn.dropdown-toggle{ data-toggle="dropdown" }
+ .span.fa.fa-cog
+ ul.dropdown-menu
+ li
+ = link_to t('compliance_control_sets.actions.edit'), edit_compliance_control_set_compliance_control_block_path(@compliance_control_set.id, block.id)
+ = link_to t('compliance_control_sets.actions.destroy'), compliance_control_set_compliance_control_block_path(@compliance_control_set.id, block.id), :method => :delete, :data => {:confirm => t('compliance_control_sets.actions.destroy_confirm')}
.row
.col-lg-12
.select_table
- = table_builder_2 @indirect_compliance_controls,
+ = table_builder_2 compliance_controls,
[ \
TableBuilderHelper::Column.new( \
key: :code, \
@@ -65,47 +108,15 @@
cls: 'table has-filter has-search',
model: ComplianceControl
- - @compliance_controls.each do |block, compliance_controls|
-
- - if compliance_controls.try(:any?)
- .row
- .col-lg-12
- h2
- = transport_mode(block.transport_mode, block.transport_submode)
- .btn-group
- .btn.dropdown-toggle{ data-toggle="dropdown" }
- .span.fa.fa-cog
- ul.dropdown-menu
- li
- = link_to t('compliance_control_sets.actions.edit'), edit_compliance_control_set_compliance_control_block_path(@compliance_control_set.id, block.id) if policy(ComplianceControlBlock).update? if policy(ComplianceControlBlock).update?
- = link_to t('compliance_control_sets.actions.destroy'), compliance_control_set_compliance_control_block_path(@compliance_control_set.id, block.id), :method => :delete, :data => {:confirm => t('compliance_control_sets.actions.destroy_confirm')} if policy(ComplianceControlBlock).destroy?
- .row
- .col-lg-12
- .select_table
- = table_builder_2 compliance_controls,
- [ \
- TableBuilderHelper::Column.new( \
- key: :code, \
- attribute: 'code' \
- ), \
- TableBuilderHelper::Column.new( \
- key: :name, \
- attribute: 'name', \
- link_to: lambda do |compliance_control| \
- compliance_control_set_compliance_control_path(@compliance_control_set, compliance_control) \
- end \
- ), \
- TableBuilderHelper::Column.new( \
- key: :criticity, \
- attribute: 'criticity' \
- ), \
- TableBuilderHelper::Column.new( \
- key: :comment, \
- attribute: 'comment' \
- ), \
- ],
- sortable: true,
- cls: 'table has-filter has-search',
- model: ComplianceControl
-
- = flotted_links(@compliance_control_set.id) \ No newline at end of file
+ .select_toolbox
+ ul
+ li.st_action.with_text
+ = link_to select_type_compliance_control_set_compliance_controls_path(@compliance_control_set.id)
+ span.fa.fa-plus
+ span
+ = t('compliance_control_sets.actions.add_compliance_control')
+ li.st_action.with_text
+ = link_to new_compliance_control_set_compliance_control_block_path(@compliance_control_set.id)
+ span.fa.fa-plus
+ span
+ = t('compliance_control_sets.actions.add_compliance_control_block')
diff --git a/app/views/compliance_controls/_filters.html.slim b/app/views/compliance_controls/_filters.html.slim
index c729190a0..d38da5d2d 100644
--- a/app/views/compliance_controls/_filters.html.slim
+++ b/app/views/compliance_controls/_filters.html.slim
@@ -1,3 +1,4 @@
+/ Compliance Control Filter
= search_form_for @q_controls_form,
url: compliance_control_set_path(@compliance_control_set),
builder: SimpleForm::FormBuilder,
@@ -19,7 +20,7 @@
collection: @compliance_control_set.compliance_control_blocks,
as: :check_boxes,
label: false,
- label_method: lambda {|w| ("<span>#{transport_mode(w.transport_mode, w.transport_submode)}</span>").html_safe},
+ label_method: lambda {|w| ("<span>#{transport_mode_text(w)}</span>").html_safe},
required: false,
wrapper_html: {class: 'checkbox_list'}
.form-group.togglable#subclass-filter
diff --git a/app/views/import_tasks/new.html.slim b/app/views/import_tasks/new.html.slim
index b4b77d344..dad004759 100644
--- a/app/views/import_tasks/new.html.slim
+++ b/app/views/import_tasks/new.html.slim
@@ -16,13 +16,12 @@ ul.nav.nav-pills
= form.input :referential_id, as: :hidden, :input_html => { :value => @referential.id }
= form.input :name
= form.input :no_save, as: :boolean
- = form.input :rule_parameter_set_id, as: :select, :collection => @referential.organisation.rule_parameter_sets.map { |rps| [ rps.name, rps.id ] }, :include_blank => true
= form.input :resources, as: :file
= render partial: "fields_#{import_task.data_format}_import", :locals => { :form => form }
-
+
= form.actions do
= form.action :submit, as: :button , :label => t( 'formtastic.import' )
= form.action :cancel, as: :link
-= javascript_include_tag new_referential_import_task_path(@referential, :format => :js) \ No newline at end of file
+= javascript_include_tag new_referential_import_task_path(@referential, :format => :js)
diff --git a/app/views/lines/_filters.html.slim b/app/views/lines/_filters.html.slim
index 7662c41b5..58f8f2431 100644
--- a/app/views/lines/_filters.html.slim
+++ b/app/views/lines/_filters.html.slim
@@ -17,11 +17,11 @@
.form-group.togglable
= f.label Chouette::Line.human_attribute_name(:transport_mode), required: false, class: 'control-label'
- = f.input :transport_mode_eq_any, collection: Chouette::Line.sorted_transport_modes, as: :check_boxes, label: false, label_method: lambda{|l| ("<span>" + t("enumerize.transport_mode.#{l}") + "</span>").html_safe}, required: false, wrapper_html: { class: 'checkbox_list'}
+ = f.input :transport_mode_eq_any, collection: StifTransportModeEnumerations.sorted_transport_modes, as: :check_boxes, label: false, label_method: lambda{|l| ("<span>" + t("enumerize.transport_mode.#{l}") + "</span>").html_safe}, required: false, wrapper_html: { class: 'checkbox_list'}
.form-group.togglable
= f.label Chouette::Line.human_attribute_name(:transport_submode), required: false, class: 'control-label'
- = f.input :transport_submode_eq_any, collection: Chouette::Line.sorted_transport_submodes, as: :check_boxes, label: false, label_method: lambda{|l| ("<span>" + t("enumerize.transport_submode.#{l}") + "</span>").html_safe}, required: false, wrapper_html: { class: 'checkbox_list'}
+ = f.input :transport_submode_eq_any, collection: StifTransportSubmodeEnumerations.sorted_transport_submodes, as: :check_boxes, label: false, label_method: lambda{|l| ("<span>" + t("enumerize.transport_submode.#{l}") + "</span>").html_safe}, required: false, wrapper_html: { class: 'checkbox_list'}
.actions
= link_to 'Effacer', @workbench, class: 'btn btn-link'
diff --git a/app/views/organisations/show.html.slim b/app/views/organisations/show.html.slim
index 89e3b2870..e7ab18dd3 100644
--- a/app/views/organisations/show.html.slim
+++ b/app/views/organisations/show.html.slim
@@ -27,8 +27,3 @@
= link_to t('organisations.actions.edit'), edit_organisation_path, class: 'edit'
li
= link_to t('users.actions.new'), new_organisation_user_path, class: 'add'
-
- / FIXME ref #2007
- - if false
- li
- = link_to t('rule_parameter_sets.actions.new'), new_organisation_rule_parameter_set_path, class: 'add'
diff --git a/app/views/rule_parameter_sets/_column_fields.html.slim b/app/views/rule_parameter_sets/_column_fields.html.slim
deleted file mode 100644
index 176318765..000000000
--- a/app/views/rule_parameter_sets/_column_fields.html.slim
+++ /dev/null
@@ -1,13 +0,0 @@
-td
-td = t("activerecord.attributes.#{object_name}.#{column}")
-- suffix = "column_#{column}_object_#{object_name}"
-td = f.check_box "unique_#{suffix}".to_sym, class: 'special'
-
-- if RuleParameterSet.validable_column_type(object_name, column) == :string
- td
- = f.select "pattern_#{suffix}".to_sym, options_for_select([[t("rule_parameter_sets.labels.free_char"), "0"], [t("rule_parameter_sets.labels.num_char"), "1"], [t("rule_parameter_sets.labels.alpha_char"), "2"], [t("rule_parameter_sets.labels.upper_char"), "3"], [t("rule_parameter_sets.labels.lower_char"), "4"]])
-- else
- td = t('rule_parameter_sets.labels.num_char')
-
-td = f.number_field "min_size_#{suffix}".to_sym, class: 'special'
-td = f.number_field "max_size_#{suffix}".to_sym, class: 'special'
diff --git a/app/views/rule_parameter_sets/_form.html.slim b/app/views/rule_parameter_sets/_form.html.slim
deleted file mode 100644
index b93caae58..000000000
--- a/app/views/rule_parameter_sets/_form.html.slim
+++ /dev/null
@@ -1,73 +0,0 @@
-= semantic_form_for [ :organisation, @rule_parameter_set] do |form|
- = form.inputs do
- = form.input :name
- = form.input :inter_stop_area_distance_min, as: :number
- = form.input :parent_stop_area_distance_max, as: :number
- = form.input :stop_areas_area
- = form.input :inter_access_point_distance_min, as: :number
- = form.input :inter_connection_link_distance_max, as: :number
- = form.input :walk_default_speed_max, as: :number
- = form.input :walk_occasional_traveller_speed_max, as: :number
- = form.input :walk_frequent_traveller_speed_max, as: :number
- = form.input :walk_mobility_restricted_traveller_speed_max, as: :number
-
- = form.input :inter_access_link_distance_max, as: :number
- = form.input :inter_stop_duration_max, as: :number
- = form.input :facility_stop_area_distance_max, as: :number
-
- = form.input :check_lines_in_groups, as: :boolean
- = form.input :check_line_routes, as: :boolean
- = form.input :check_stop_parent, as: :boolean
- = form.input :check_connection_link_on_physical, as: :boolean
- = form.input :check_allowed_transport_modes, as: :boolean
-
- table.table.table-striped.table-condensed
- thead
- tr
- th = t("transport_modes.name")
-
- - RuleParameterSet.mode_attribute_prefixes.each do |prefix|
- - if prefix == "allowed_transport"
- - hidden = (@rule_parameter_set.check_allowed_transport_modes == "1") ? "" : 'display:none;'
- th.allowed style="#{hidden}"
- = RuleParameterSet.human_attribute_name(prefix)
- - else
- th = RuleParameterSet.human_attribute_name(prefix)
-
- tbody
- / To be removed, see #1936
- - Chouette::Line.transport_mode.values.each do |mode|
- tr
- == render partial: "mode_fields", :locals => { f: form, mode: mode }
-
- = t("rule_parameter_sets.labels.columns_restrictions")
-
- table.table.table-bordered.table-condensed
- - RuleParameterSet.validable_object_names.each do |object_name|
- thead
- tr
- th
- = form.check_box "check_#{object_name}".to_sym, class: 'special'
- = t("activerecord.models.#{object_name}.one")
-
- th = RuleParameterSet.human_attribute_name("attribute")
- th = RuleParameterSet.human_attribute_name("unique")
- th = RuleParameterSet.human_attribute_name("string_type")
- th = RuleParameterSet.human_attribute_name("min_size")
- th = RuleParameterSet.human_attribute_name("max_size")
-
- tbody
- - RuleParameterSet.validable_columns[object_name].each do |col|
- tr class="columns_for_#{object_name.pluralize}"
- == render partial: "column_fields", :locals => { f: form, object_name: object_name, column: col }
-
- = form.actions do
- = form.action :submit, as: :button
- = form.action :cancel, as: :link
-
-javascript:
- $(function() {
- $( "#rule_parameter_set_check_allowed_transport_modes").change( function() {
- $(".allowed").toggle();
- });
- });
diff --git a/app/views/rule_parameter_sets/_mode_fields.html.slim b/app/views/rule_parameter_sets/_mode_fields.html.slim
deleted file mode 100644
index 848e065f3..000000000
--- a/app/views/rule_parameter_sets/_mode_fields.html.slim
+++ /dev/null
@@ -1,9 +0,0 @@
-td = t("transport_modes.label.#{mode}")
-
-- RuleParameterSet.mode_attribute_prefixes.each do |prefix|
- - if prefix == "allowed_transport"
- - hidden = (@rule_parameter_set.check_allowed_transport_modes == "1") ? "" : 'display: none;'
- td.allowed style="#{hidden}"
- = f.check_box "#{prefix}_mode_#{mode}".to_sym, class: 'special'
- - else
- td = f.number_field "#{prefix}_mode_#{mode}".to_sym, class: 'special' \ No newline at end of file
diff --git a/app/views/rule_parameter_sets/_mode_selection.html.slim b/app/views/rule_parameter_sets/_mode_selection.html.slim
deleted file mode 100644
index b9afd10b6..000000000
--- a/app/views/rule_parameter_sets/_mode_selection.html.slim
+++ /dev/null
@@ -1,4 +0,0 @@
-/ select.undescribed_modes
-/ - Chouette::TransportMode.all.map { |m| m.name.downcase}.each do |mode|
-/ option value="#{mode}"
-/ = t("transport_modes.label.#{mode}") \ No newline at end of file
diff --git a/app/views/rule_parameter_sets/_rule_parameter_set.html.slim b/app/views/rule_parameter_sets/_rule_parameter_set.html.slim
deleted file mode 100644
index 5603d2b80..000000000
--- a/app/views/rule_parameter_sets/_rule_parameter_set.html.slim
+++ /dev/null
@@ -1,14 +0,0 @@
-#index_item.panel.panel-default.rule_parameter_set
- .panel-heading
- .panel-title.clearfix
- span.pull-right
- = link_to edit_organisation_rule_parameter_set_path( rule_parameter_set), class: 'btn btn-default btn-sm' do
- span.fa.fa-pencil
-
- - if rule_parameter_set.organisation.rule_parameter_sets.size > 1
- = link_to organisation_rule_parameter_set_path( rule_parameter_set), method: :delete, data: { confirm: t('rule_parameter_sets.actions.destroy_confirm') }, class: 'btn btn-danger btn-sm' do
- span.fa.fa-trash-o
-
- h5
- = link_to( organisation_rule_parameter_set_path( rule_parameter_set), class: 'preview', title: "#{RuleParameterSet.model_name.human.capitalize} #{rule_parameter_set.name}") do
- span.name = truncate(rule_parameter_set.name, length: 20) \ No newline at end of file
diff --git a/app/views/rule_parameter_sets/_transport_mode_parameter_set_fields.html.slim b/app/views/rule_parameter_sets/_transport_mode_parameter_set_fields.html.slim
deleted file mode 100644
index ede7e2b75..000000000
--- a/app/views/rule_parameter_sets/_transport_mode_parameter_set_fields.html.slim
+++ /dev/null
@@ -1,9 +0,0 @@
-= f.inputs class: 'transport_mode_parameter_sets nested-fields' do
- = f.input :transport_mode, as: :select, collection: transport_mode_label_pairs, include_blank: false, label: "transport_mode", wrapper_html: { class: 'fl1' }
- = f.input :inter_stop_area_distance_min, as: :number, label: "inter_stop_area_distance_min", wrapper_html: { class: 'fl1' }
- = f.input :inter_stop_area_distance_max, as: :number, label: "inter_stop_area_distance_max", wrapper_html: { class: 'fl2' }
- = f.input :speed_min, as: :number, label: "speed_min", wrapper_html: { class: 'fl2' }
- = f.input :speed_max, as: :number, label: "speed_max", wrapper_html: { class: 'fl2' }
- = f.input :inter_stop_duration_variation_max, as: :number, label: "inter_stop_duration_variation_max", wrapper_html: { class: 'fl2' }
-
- = link_to_remove_association t('actions.destroy'), f
diff --git a/app/views/rule_parameter_sets/edit.html.slim b/app/views/rule_parameter_sets/edit.html.slim
deleted file mode 100644
index b49b02cf6..000000000
--- a/app/views/rule_parameter_sets/edit.html.slim
+++ /dev/null
@@ -1,3 +0,0 @@
-= title_tag t('rule_parameter_sets.edit.title', rule_parameter_set: @rule_parameter_set.name )
-
-== render 'form' \ No newline at end of file
diff --git a/app/views/rule_parameter_sets/index.html.slim b/app/views/rule_parameter_sets/index.html.slim
deleted file mode 100644
index 6be57d68e..000000000
--- a/app/views/rule_parameter_sets/index.html.slim
+++ /dev/null
@@ -1,7 +0,0 @@
-= title_tag t('rule_parameter_sets.index.title')
-
-= paginated_content(@rule_parameter_sets)
-
-- content_for :sidebar do
- ul.actions
- li = link_to t('rule_parameter_sets.actions.new'), new_organisation_rule_parameter_set_path, class: 'add' \ No newline at end of file
diff --git a/app/views/rule_parameter_sets/mode.js.slim b/app/views/rule_parameter_sets/mode.js.slim
deleted file mode 100644
index 392446a7c..000000000
--- a/app/views/rule_parameter_sets/mode.js.slim
+++ /dev/null
@@ -1,9 +0,0 @@
-| if ( $("#specific_parameters_#{@mode}").length == 0 ) {
-| - form_content = ""
-| - semantic_form_for [@referential, @rule_parameter_set] do |form|
-| - form_content += render(partial: 'mode_fields', locals: { mode: @mode, f: form })
-| $('#added_mode_parameter_set').before("#{escape_javascript(form_content).html_safe}");
-| } else {
-| $("#_destroy_mode_#{@mode}").attr( "value", false);
-| $("#specific_parameters_#{@mode}").toggle();
-| } \ No newline at end of file
diff --git a/app/views/rule_parameter_sets/new.html.slim b/app/views/rule_parameter_sets/new.html.slim
deleted file mode 100644
index c4e4c5b4d..000000000
--- a/app/views/rule_parameter_sets/new.html.slim
+++ /dev/null
@@ -1,3 +0,0 @@
-= title_tag t('rule_parameter_sets.new.title')
-
-== render 'form' \ No newline at end of file
diff --git a/app/views/rule_parameter_sets/show.html.slim b/app/views/rule_parameter_sets/show.html.slim
deleted file mode 100644
index 6adfeab89..000000000
--- a/app/views/rule_parameter_sets/show.html.slim
+++ /dev/null
@@ -1,143 +0,0 @@
-= title_tag t('rule_parameter_sets.show.title', :rule_parameter_set => @rule_parameter_set.name )
-
-.rule_parameter_set_show
- .summary
- p
- label = "#{RuleParameterSet.human_attribute_name('stop_areas_area')} : "
- = @rule_parameter_set.stop_areas_area
-
- .attributes_group
- span.title = t(".min_distance")
-
- .columns
- .two_columns
- label = "#{t('.inter_stop_area_distance_min')} : "
- span.value = @rule_parameter_set.inter_stop_area_distance_min
-
- .two_columns
- label = "#{t('.inter_access_point_distance_min')} : "
- span.value = @rule_parameter_set.inter_access_point_distance_min
-
- .attributes_group
- span.title = t(".max_distance")
-
- .columns
- .two_columns
- label = "#{t('.parent_stop_area_distance_max')} : "
- span.value = @rule_parameter_set.parent_stop_area_distance_max
-
- .two_columns
- label = "#{t('.inter_connection_link_distance_max')} : "
- span.value = @rule_parameter_set.inter_connection_link_distance_max
-
- .columns
- .two_columns
- label = "#{t('.inter_access_link_distance_max')} : "
- span.value = @rule_parameter_set.inter_access_link_distance_max
-
- .two_columns
- label = "#{t('.facility_stop_area_distance_max')} : "
- span.value = @rule_parameter_set.facility_stop_area_distance_max
-
- .attributes_group
- span.title = t(".walk_speed")
-
- .columns
- .four_columns
- label = "#{t('.walk_default_speed_max')} : "
- span.value = @rule_parameter_set.walk_default_speed_max
-
- .four_columns
- label = "#{t('.walk_occasional_traveller_speed_max')} : "
- span.value = @rule_parameter_set.walk_occasional_traveller_speed_max
-
- .four_columns
- label = "#{t('.walk_frequent_traveller_speed_max')} : "
- span.value = @rule_parameter_set.walk_frequent_traveller_speed_max
-
- .four_columns
- label = "#{t('.walk_mobility_restricted_traveller_speed_max')} : "
- span.value = @rule_parameter_set.walk_mobility_restricted_traveller_speed_max
-
- p
- label = "#{t('.inter_stop_duration_max')} :"
- = @rule_parameter_set.inter_stop_duration_max
-
- p
- label = "#{RuleParameterSet.human_attribute_name('check_lines_in_groups')} : "
- = boolean_value(@rule_parameter_set.check_lines_in_groups)
-
- p
- label = "#{RuleParameterSet.human_attribute_name('check_line_routes')} : "
- = boolean_value(@rule_parameter_set.check_line_routes)
-
- p
- label = "#{RuleParameterSet.human_attribute_name('check_stop_parent')} : "
- = boolean_value(@rule_parameter_set.check_stop_parent)
-
- p
- label = "#{RuleParameterSet.human_attribute_name('check_connection_link_on_physical')} : "
- = boolean_value(@rule_parameter_set.check_connection_link_on_physical)
-
- p
- label = "#{RuleParameterSet.human_attribute_name('check_allowed_transport_modes')} : "
- = boolean_value(@rule_parameter_set.check_allowed_transport_modes)
-
- .rule_parameter_by_mode
- label
- = t(".rule_parameter_by_mode")
- = t(".modes_allowed") if @rule_parameter_set.check_allowed_transport_modes == "1"
-
- table.table.table-striped.table-condensed
- tr
- th = t("transport_modes.name")
-
- - RuleParameterSet.mode_attribute_prefixes.each do |prefix|
- - unless prefix == "allowed_transport"
- th = RuleParameterSet.human_attribute_name(prefix)
- / To be removed, see #1936
- - Chouette::Line.transport_mode.values.each do |mode|
- - if @rule_parameter_set.allowed(mode)
- tr
- td = t("transport_modes.label.#{mode}")
-
- - RuleParameterSet.mode_attribute_prefixes.each do |prefix|
- - unless prefix == "allowed_transport"
- td = @rule_parameter_set.send "#{prefix}_mode_#{mode}"
-
- .rule_parameter_by_object
- label = t("rule_parameter_sets.labels.columns_restrictions")
-
- table.table.table-bordered.table-condensed
- - RuleParameterSet.validable_object_names.each do |object_name|
- - if @rule_parameter_set.selected(object_name)
- thead
- tr
- th = t("activerecord.models.#{object_name}.one")
- th = RuleParameterSet.human_attribute_name("attribute")
- th = RuleParameterSet.human_attribute_name("unique")
- th = RuleParameterSet.human_attribute_name("string_type")
- th = RuleParameterSet.human_attribute_name("min_size")
- th = RuleParameterSet.human_attribute_name("max_size")
-
- tbody
- - RuleParameterSet.validable_columns[object_name].each do |col|
- - if @rule_parameter_set.selected_column(object_name,col)
- tr
- td
- td = t("activerecord.attributes.#{object_name}.#{col}")
- - suffix = "column_#{col}_object_#{object_name}"
- td = unique(@rule_parameter_set.send "unique_#{suffix}".to_sym)
- td = pattern(@rule_parameter_set.send "pattern_#{suffix}".to_sym)
- td = @rule_parameter_set.send "min_size_#{suffix}".to_sym
- td = @rule_parameter_set.send "max_size_#{suffix}".to_sym
-
-- content_for :sidebar do
- ul.actions
- li = link_to t('rule_parameter_sets.actions.new'), new_organisation_rule_parameter_set_path, class: 'add'
-
- - if @rule_parameter_set.persisted?
- li = link_to t('rule_parameter_sets.actions.edit'), edit_organisation_rule_parameter_set_path( @rule_parameter_set), class: 'edit'
-
- - if current_organisation.rule_parameter_sets.size > 1
- li = link_to t('rule_parameter_sets.actions.destroy'), organisation_rule_parameter_set_path( @rule_parameter_set), method: :delete, data: { confirm: t('rule_parameter_sets.actions.destroy_confirm') }, class: 'remove'
diff --git a/config/breadcrumbs.rb b/config/breadcrumbs.rb
index 0cabf9c6b..4ef16059f 100644
--- a/config/breadcrumbs.rb
+++ b/config/breadcrumbs.rb
@@ -3,7 +3,7 @@ crumb :root do
end
crumb :workbench do |workbench|
- link breadcrumb_name(workbench), workbench_path(workbench)
+ link workbench.name, workbench_path(workbench)
end
crumb :referential do |referential|
diff --git a/config/initializers/apartment.rb b/config/initializers/apartment.rb
index 1c951317a..87bca0b45 100644
--- a/config/initializers/apartment.rb
+++ b/config/initializers/apartment.rb
@@ -24,7 +24,6 @@ Apartment.configure do |config|
'Organisation',
'User',
'Api::V1::ApiKey',
- 'RuleParameterSet',
'StopAreaReferential',
'StopAreaReferentialMembership',
'StopAreaReferentialSync',
diff --git a/config/locales/compliance_check_blocks.en.yml b/config/locales/compliance_check_blocks.en.yml
new file mode 100644
index 000000000..a20fb483e
--- /dev/null
+++ b/config/locales/compliance_check_blocks.en.yml
@@ -0,0 +1,8 @@
+en:
+ activerecord:
+ models:
+ compliance_check_block:
+ zero: Control blocks
+ one: Control block
+ other: Control blocks
+
diff --git a/config/locales/compliance_check_blocks.fr.yml b/config/locales/compliance_check_blocks.fr.yml
new file mode 100644
index 000000000..3d385aff6
--- /dev/null
+++ b/config/locales/compliance_check_blocks.fr.yml
@@ -0,0 +1,7 @@
+fr:
+ activerecord:
+ models:
+ compliance_check_block:
+ zero: "Groupe de contrôle"
+ one: "Groupe de contrôle"
+ other: "Groupes de contrôles"
diff --git a/config/locales/compliance_check_sets.en.yml b/config/locales/compliance_check_sets.en.yml
index 89c142a49..5aa6f9740 100644
--- a/config/locales/compliance_check_sets.en.yml
+++ b/config/locales/compliance_check_sets.en.yml
@@ -1,9 +1,5 @@
en:
compliance_check_sets:
- index:
- title: Control reports
- new: Creating a Control Report
- edit: Update a Control Report
actions:
new: Add a control report
edit: Edit a control report
@@ -12,12 +8,25 @@ en:
filters:
name: Specify a control report name...
error_period_filter: End date must be greater than or equal to begin date
+ index:
+ title: Compliance control set
+ new: New compliance control set
+ new_control: Creating a Control
+ select_types: Control Type Selection
+ edit: Edit compliance control set
search_no_results: No control reports match your search
+ executed:
+ title: Executed control report %{name}
activerecord:
- attributes:
- compliance_check_set:
- ref: réf
- creation_date: Created at
- associated_object: Associated object
- assigned_to: Assigned to
- compliance_control_set: Compliance control set
+ attributes:
+ compliance_check_set:
+ ref: ref
+ creation_date: Created at
+ associated_object: Associated object
+ assigned_to: Assigned to
+ compliance_control_set: Compliance control set
+ name: Name
+ models:
+ compliance_check_block:
+ one: compliance_control_set
+ other: compliance_control_sets
diff --git a/config/locales/compliance_check_sets.fr.yml b/config/locales/compliance_check_sets.fr.yml
index 8c21f33fd..8ad5af904 100644
--- a/config/locales/compliance_check_sets.fr.yml
+++ b/config/locales/compliance_check_sets.fr.yml
@@ -1,9 +1,5 @@
fr:
compliance_check_sets:
- index:
- title: Rapports de contrôle
- new: Création d'un rapport de contrôle
- edit: Édition d'un rapport de contrôle
actions:
new: Ajouter
edit: Editer
@@ -12,12 +8,22 @@ fr:
filters:
name: Indiquez un nom d'un objet associé...
error_period_filter: La date de fin doit être supérieure ou égale à la date de début0
+ index:
+ title: "Liste des jeux de contrôles"
search_no_results: Aucun rapport de contrôle ne correspond à votre recherche
+ executed:
+ title: Jeu de contrôles exécutés %{name}
activerecord:
- attributes:
- compliance_check_set:
- ref: réf
- creation_date: Date et heure de création
- associated_object: Objet associé
- assigned_to: Affectation
- compliance_control_set: jeu de contrôle
+ attributes:
+ compliance_check_set:
+ ref: réf
+ creation_date: Date et heure de création
+ associated_object: Objet associé
+ assigned_to: Affectation
+ compliance_control_set: jeu de contrôle
+ name: Nom
+ models:
+ compliance_check_block:
+ zero: "Groupe de contrôle"
+ one: "Groupe de contrôle"
+ other: "Groupes de contrôles"
diff --git a/config/locales/compliance_checks.en.yml b/config/locales/compliance_checks.en.yml
index 7f3e317be..177c87852 100644
--- a/config/locales/compliance_checks.en.yml
+++ b/config/locales/compliance_checks.en.yml
@@ -1,2 +1,10 @@
en:
+ activerecord:
+ attributes:
+ compliance_check:
+ code: Code
compliance_checks:
+ filters:
+ subclass: Object
+ criticity: Severity
+ name: Name
diff --git a/config/locales/compliance_checks.fr.yml b/config/locales/compliance_checks.fr.yml
index 421574cbd..d11d37003 100644
--- a/config/locales/compliance_checks.fr.yml
+++ b/config/locales/compliance_checks.fr.yml
@@ -1,3 +1,14 @@
fr:
+ activerecord:
+ attributes:
+ compliance_check:
+ code: Code
+ name: Nom
+ criticity: Criticité
+ comment: Commentaire
compliance_checks:
+ filters:
+ subclass: Objet
+ criticity: Criticité
+ name: Nom
diff --git a/config/locales/import_tasks.en.yml b/config/locales/import_tasks.en.yml
index ad633e872..34f7e6998 100644
--- a/config/locales/import_tasks.en.yml
+++ b/config/locales/import_tasks.en.yml
@@ -30,7 +30,6 @@ en:
no_save: "No save"
resources: "File to import"
references_type: "Data to be imported"
- rule_parameter_set_id: "Rule parameter set for compliance check"
object_id_prefix: "Neptune Id prefix"
max_distance_for_commercial: "Max distance for commercial stop"
max_distance_for_connection_link: "Max distance for connection link"
diff --git a/config/locales/import_tasks.fr.yml b/config/locales/import_tasks.fr.yml
index 13e796520..002ca03cb 100644
--- a/config/locales/import_tasks.fr.yml
+++ b/config/locales/import_tasks.fr.yml
@@ -30,7 +30,6 @@ fr:
no_save: "Pas de sauvegarde"
resources: "Fichier à importer"
references_type: "Données à importer"
- rule_parameter_set_id: "Jeu de paramètres pour validation"
object_id_prefix: "Préfixe d'identifiants"
max_distance_for_commercial: "Distance max pour créer les zones"
max_distance_for_connection_link: "Distance max pour créer les correspondances"
diff --git a/config/locales/imports.en.yml b/config/locales/imports.en.yml
index 10434dd19..97574007c 100644
--- a/config/locales/imports.en.yml
+++ b/config/locales/imports.en.yml
@@ -19,7 +19,6 @@ en:
show:
report: "Report"
imported_file: "Original file"
- rule_parameter_set: "Rule parameter set"
compliance_check: "Validation report"
compliance_check_of: "Validation of import: "
import_of_validation: "Import of the validation"
@@ -69,7 +68,6 @@ en:
creator: "Creator"
references_type: "Data to be imported"
no_save: "No save"
- rule_parameter_set_id: "Rule parameter set for compliance check"
object_id_prefix: "Neptune Id prefix"
max_distance_for_commercial: "Max distance for commercial stop"
max_distance_for_connection_link: "Max distance for connection link"
diff --git a/config/locales/imports.fr.yml b/config/locales/imports.fr.yml
index 099488a6b..59107cccb 100644
--- a/config/locales/imports.fr.yml
+++ b/config/locales/imports.fr.yml
@@ -19,7 +19,6 @@ fr:
show:
report: "Rapport"
imported_file: "Fichier source"
- rule_parameter_set: "Jeu de paramètres"
compliance_check: "Test de conformité"
compliance_check_of: "Validation de l'import : "
import_of_validation: "L'import de la validation"
@@ -69,7 +68,6 @@ fr:
creator: "Opérateur"
no_save: "Pas de sauvegarde"
references_type: "Données à importer"
- rule_parameter_set_id: "Jeu de paramètres pour validation"
object_id_prefix: "Préfixe d'identifiants"
max_distance_for_commercial: "Distance max pour créer les zones"
max_distance_for_connection_link: "Distance max pour créer les correspondances"
diff --git a/config/locales/organisations.en.yml b/config/locales/organisations.en.yml
index a64920daf..cade312e1 100644
--- a/config/locales/organisations.en.yml
+++ b/config/locales/organisations.en.yml
@@ -8,7 +8,6 @@ en:
key_not_registered: "No key registered"
show:
users: "Users"
- rule_parameter_sets: "Rule parameter sets"
activerecord:
models:
organisation:
diff --git a/config/locales/organisations.fr.yml b/config/locales/organisations.fr.yml
index 50cb9f3be..756615285 100644
--- a/config/locales/organisations.fr.yml
+++ b/config/locales/organisations.fr.yml
@@ -8,7 +8,6 @@ fr:
key_not_registered: "Pas de clé"
show:
users: "Utilisateurs"
- rule_parameter_sets: "Jeux de paramètres"
activerecord:
models:
organisation:
diff --git a/config/locales/referentials.en.yml b/config/locales/referentials.en.yml
index a2c6fcf59..8420e9539 100644
--- a/config/locales/referentials.en.yml
+++ b/config/locales/referentials.en.yml
@@ -86,7 +86,6 @@ en:
imports: "Imports"
exports: "Exports"
compliance_checks: "Validations"
- rule_parameter_sets: "Rule parameters sets"
data_format_restrictions: "Data format constraint"
data_format: "Favorite format for export"
timebands: "Time bands"
diff --git a/config/locales/referentials.fr.yml b/config/locales/referentials.fr.yml
index e132c959d..ec7ed776d 100644
--- a/config/locales/referentials.fr.yml
+++ b/config/locales/referentials.fr.yml
@@ -86,7 +86,6 @@ fr:
imports: "Imports"
exports: "Exports"
compliance_checks: "Validations"
- rule_parameter_sets: "Jeux de paramètres"
data_format_restrictions: "Format d'export privilégié"
data_format: "Format d'export privilégié"
timebands: "Créneaux horaires"
diff --git a/config/locales/rule_parameter_sets.en.yml b/config/locales/rule_parameter_sets.en.yml
deleted file mode 100644
index 814e97f1d..000000000
--- a/config/locales/rule_parameter_sets.en.yml
+++ /dev/null
@@ -1,78 +0,0 @@
-en:
- rule_parameter_sets:
- actions:
- new: "Add a new parameter set"
- edit: "Edit this parameter set"
- index: "Rule parameter sets"
- destroy: "Remove this rule parameter set"
- destroy_confirm: "Are you sure you want destroy this rule parameter set ?"
- new:
- title: "Add a new parameter set"
- destroy:
- last_rps_protected: "Delete refused. Last rule parameter set in current referential can't be destroyed."
- edit:
- title: "Update parameter set %{rule_parameter_set}"
- form:
- add_mode_parameter_set: "Add mode specific parameter set"
- show:
- title: "Parameter Set %{rule_parameter_set}"
- max_distance: "Maximum distance between "
- min_distance: "Minimum distance between "
- walk_speed: "Maximum walk speed for travellers"
- inter_stop_area_distance_min: "2 stop areas having different parent"
- parent_stop_area_distance_max: "a stop area and its own parent"
- inter_access_point_distance_min: "2 access with different names on a same stop area"
- inter_connection_link_distance_max: "stop areas in a connection link"
- walk_default_speed_max: "a regular one"
- walk_occasional_traveller_speed_max: "an occasional one"
- walk_frequent_traveller_speed_max: "a frequent one"
- walk_mobility_restricted_traveller_speed_max: "a mobility restricted one"
- inter_access_link_distance_max: "an access point and a linked stop area"
- inter_stop_duration_max: "Maximum duration between the moment when a vehicle is arriving at a stop and the moment when the vehicle is leaving"
- facility_stop_area_distance_max: "a stop area and a facility"
- rule_parameter_by_mode: "Parameters by mode"
- modes_allowed: " (only for allowed ones)"
- index:
- title: "Parameter sets"
- labels:
- columns_restrictions: "Check model objects atributes"
- attribute: "attribute"
- free_char: "free"
- num_char: "number only"
- alpha_char: "character only"
- lower_char: "lowercase only"
- upper_char: "uppercase only"
- activerecord:
- models:
- rule_parameter_set: "Parameter Set for Conformity Rules"
- attributes:
- rule_parameter_set:
- name: "Name"
- inter_stop_area_distance_min: "Minimum distance between 2 stop areas having different parent"
- parent_stop_area_distance_max: "Maximum distance between a stop area and its own parent"
- stop_areas_area: "Geographic stop area envelop"
- inter_access_point_distance_min: "Minimum distance between 2 access having different name for a commun stop area"
- inter_connection_link_distance_max: "Maximum distance between stop area departure and stop area arrival in a connection link"
- walk_default_speed_max: "Maximum walk speed for a regular traveller"
- walk_occasional_traveller_speed_max: "Maximum walk speed for an occasional traveller"
- walk_frequent_traveller_speed_max: "Maximum walk speed for a frequent traveller"
- walk_mobility_restricted_traveller_speed_max: "Maximum walk speed for a mobility restricted traveller"
- inter_access_link_distance_max: "Access link maximum distance"
- inter_stop_duration_max: "Maximum duration for a stopping time"
- facility_stop_area_distance_max: "Maximum distance between a stop area and a facility"
- inter_stop_area_distance_min: "Maximum distance between 2 stop areas"
- inter_stop_area_distance_max: "Maximum distance between 2 stop areas"
- speed_min: "Minimum speed"
- speed_max: "Maximum speed"
- inter_stop_duration_variation_max: "Maximum duration gap between 2 vehicle journeys and between 2 following stops"
- check_lines_in_groups: "check if each line belongs scrictly to one group of line"
- check_line_routes: "check if each line have 1 route or 2 routes coupled"
- check_stop_parent: "check if all physical stop areas are owned by a commercial stop point"
- check_connection_link_on_physical: "check if connection links connect only physical stops"
- check_allowed_transport_modes: "Check transport modes"
- allowed_transport: "Allowed"
- attribute: "attribute"
- unique: "uniqness"
- string_type: "allowed characters"
- min_size: "minimal size or value"
- max_size: "maximal size or value"
diff --git a/config/locales/rule_parameter_sets.fr.yml b/config/locales/rule_parameter_sets.fr.yml
deleted file mode 100644
index fd5d75938..000000000
--- a/config/locales/rule_parameter_sets.fr.yml
+++ /dev/null
@@ -1,78 +0,0 @@
-fr:
- rule_parameter_sets:
- actions:
- new: "Ajouter un jeu de paramètres"
- edit: "Editer ce jeu de paramètres"
- index: "Jeux de paramètres"
- destroy: "Supprimer ce jeu de paramètres"
- destroy_confirm: "Etes vous sûr de supprimer ce jeu de paramètres ?"
- new:
- title: "Ajouter un jeu de paramètres"
- form:
- add_mode_parameter_set: "Ajouter les paramètres spécifiques à un mode"
- edit:
- title: "Editer le jeu de paramètres %{rule_parameter_set}"
- destroy:
- last_rps_protected: "Suppresion impossible. L'espace de données doit compter au minimum un jeu de paramètres."
- show:
- title: "Jeu de paramètres %{rule_parameter_set}"
- max_distance: "Distance maximum entre : "
- min_distance: "Distance minimum entre : "
- walk_speed: "Vitesse de marche maximum d'un voyageur : "
- inter_stop_area_distance_min: "2 arrêts n'ayant pas le même parent"
- parent_stop_area_distance_max: "un arrêt et son parent"
- inter_access_point_distance_min: "2 accès de noms différents pour un même arrêt"
- inter_connection_link_distance_max: "les arrêts en correspondance"
- walk_default_speed_max: "ordinaire"
- walk_occasional_traveller_speed_max: "occasionnel"
- walk_frequent_traveller_speed_max: "habituel"
- walk_mobility_restricted_traveller_speed_max: "à mobilité réduite"
- inter_access_link_distance_max: "liaison accès - arrêt"
- facility_stop_area_distance_max: "un arrêt et un équipement"
- inter_stop_duration_max: "Durée maximum de stationnement à un arrêt"
- rule_parameter_by_mode: "Jeu de paramètres pour un mode de transport"
- modes_allowed: " (uniquement pour les modes autorisés)"
- index:
- title: "Jeux de paramètres"
- labels:
- columns_restrictions: "Contôles sur les attributs des objets du modèle"
- attribute: "attribut"
- free_char: "libre"
- num_char: "numérique"
- alpha_char: "alphabétique"
- lower_char: "minuscule"
- upper_char: "majuscule"
- activerecord:
- models:
- rule_parameter_set: "Jeu de paramètres pour le contrôle de qualité des données"
- attributes:
- rule_parameter_set:
- name: "Nom"
- inter_stop_area_distance_min: "Distance minimum entre 2 arrêts n'ayant pas le même parent"
- parent_stop_area_distance_max: "Distance maximum entre un arrêt et son parent"
- stop_areas_area: "Délimitation géographique des arrêts"
- inter_access_point_distance_min: "Distance minimum entre 2 accès de noms différents pour un même arrêt"
- inter_connection_link_distance_max: "Distance maximum entre les arrêts en correspondance"
- walk_default_speed_max: "Vitesse de marche maximum pour un voyageur ordinaire"
- walk_occasional_traveller_speed_max: "Vitesse de marche maximum pour un voyageur occasionnel"
- walk_frequent_traveller_speed_max: "Vitesse de marche maximum pour un voyageur habituel"
- walk_mobility_restricted_traveller_speed_max: "Vitesse de marche maximum pour un voyageur à mobilité réduite"
- inter_access_link_distance_max: "Distance maximum d'un liaison accès - arrêt"
- inter_stop_duration_max: "Durée maximum entre les horaires d'arrivée et de départ à un arrêt"
- facility_stop_area_distance_max: "Distance maximum entre un arrêt et un équipement"
- inter_stop_area_distance_min: "Distance minimum entre 2 arrêts"
- inter_stop_area_distance_max: "Distance maximum entre 2 arrêts"
- speed_min: "Vitesse minimum"
- speed_max: "Vitesse maximum"
- inter_stop_duration_variation_max: "Ecart maximum de durée entre 2 arrêts successifs pour les différentes courses"
- check_lines_in_groups: "Contrôler que chaque ligne appartient à un et un seul groupe de lignes"
- check_line_routes: "Contrôler que chaque ligne a une séquence d'arrêt ou un couple A/R de séquences d'arrêts"
- check_stop_parent: "Contrôler que chaque arrêt physique est rattaché à un arrêt commercial"
- check_connection_link_on_physical: "Contrôler que les correspondances ne relient que des arrêts physiques"
- check_allowed_transport_modes: "Contrôler les modes de transport des lignes et des courses"
- allowed_transport: "Autorisé"
- attribute: "attribut"
- unique: "unicité"
- string_type: "caractères autorisés"
- min_size: "taille ou valeur minimale"
- max_size: "taille ou valeur maximale"
diff --git a/config/locales/validation_tasks.en.yml b/config/locales/validation_tasks.en.yml
index 1b142e992..ebccae383 100644
--- a/config/locales/validation_tasks.en.yml
+++ b/config/locales/validation_tasks.en.yml
@@ -96,7 +96,6 @@ en:
status: "Status"
references_type: "subset"
no_save: "No save"
- rule_parameter_set_id: "Rule parameter set for compliance check"
object_id_prefix: "Neptune Id prefix"
max_distance_for_commercial: "Max distance for commercial stop"
max_distance_for_connection_link: "Max distance for connection link"
diff --git a/config/locales/validation_tasks.fr.yml b/config/locales/validation_tasks.fr.yml
index adbd9c99f..286807edd 100644
--- a/config/locales/validation_tasks.fr.yml
+++ b/config/locales/validation_tasks.fr.yml
@@ -96,7 +96,6 @@ fr:
status: "Status"
no_save: "Pas de sauvegarde"
references_type: "Sous ensemble"
- rule_parameter_set_id: "Jeu de paramètres pour validation"
object_id_prefix: "Préfixe d'identifiants"
max_distance_for_commercial: "Distance max pour créer les zones"
max_distance_for_connection_link: "Distance max pour créer les correspondances"
diff --git a/config/locales/validations.en.yml b/config/locales/validations.en.yml
index 5bac62ff3..aa63c2551 100644
--- a/config/locales/validations.en.yml
+++ b/config/locales/validations.en.yml
@@ -101,7 +101,6 @@ en:
status: "Status"
references_type: "subset"
no_save: "No save"
- rule_parameter_set_id: "Rule parameter set for compliance check"
object_id_prefix: "Neptune Id prefix"
max_distance_for_commercial: "Max distance for commercial stop"
max_distance_for_connection_link: "Max distance for connection link"
diff --git a/config/locales/validations.fr.yml b/config/locales/validations.fr.yml
index dc459bee0..d1c1355db 100644
--- a/config/locales/validations.fr.yml
+++ b/config/locales/validations.fr.yml
@@ -101,7 +101,6 @@ fr:
status: "Status"
no_save: "Pas de sauvegarde"
references_type: "Sous ensemble"
- rule_parameter_set_id: "Jeu de paramètres pour validation"
object_id_prefix: "Préfixe d'identifiants"
max_distance_for_commercial: "Distance max pour créer les zones"
max_distance_for_connection_link: "Distance max pour créer les correspondances"
diff --git a/config/routes.rb b/config/routes.rb
index 27db66c2c..8ea8168bf 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -12,6 +12,7 @@ ChouetteIhm::Application.routes.draw do
end
end
resources :compliance_check_sets, only: [:index, :show] do
+ get :executed, on: :member
resources :compliance_checks, only: [:show]
end
end
@@ -71,7 +72,6 @@ ChouetteIhm::Application.routes.draw do
resource :organisation, :only => [:show, :edit, :update] do
resources :users
- resources :rule_parameter_sets
end
resources :api_keys, :only => [:edit, :update, :new, :create, :destroy]
diff --git a/db/migrate/20150218175300_set_organisation_id_to_rps.rb b/db/migrate/20150218175300_set_organisation_id_to_rps.rb
deleted file mode 100644
index 024f5938e..000000000
--- a/db/migrate/20150218175300_set_organisation_id_to_rps.rb
+++ /dev/null
@@ -1,13 +0,0 @@
-class SetOrganisationIdToRps < ActiveRecord::Migration
- def up
- RuleParameterSet.where(organisation_id: nil).update_all "name = concat(name, ' ', id)"
-
- # RuleParameterSet.joins(...).update_all("organisation_id = referentials.organisation_id")
- # fails (see https://github.com/rails/arel/pull/294)
- execute "UPDATE rule_parameter_sets SET organisation_id = referentials.organisation_id FROM referentials WHERE referentials.id = rule_parameter_sets.referential_id;"
- end
-
- def down
- RuleParameterSet.update_all organisation_id: nil
- end
-end
diff --git a/db/migrate/20150219175300_insert_default_organisation.rb b/db/migrate/20150219175300_insert_default_organisation.rb
index c8e97b562..2734893f5 100644
--- a/db/migrate/20150219175300_insert_default_organisation.rb
+++ b/db/migrate/20150219175300_insert_default_organisation.rb
@@ -1,10 +1,8 @@
class InsertDefaultOrganisation < ActiveRecord::Migration
class Organisation < ActiveRecord::Base
attr_accessor :name
-
- has_many :rule_parameter_sets, :dependent => :destroy
end
-
+
def up
organisation = Organisation.find_or_create_by!(:name => "Chouette")
Referential.where( :organisation_id => nil).each do |r|
@@ -13,10 +11,6 @@ class InsertDefaultOrganisation < ActiveRecord::Migration
User.where( :organisation_id => nil).each do |r|
r.update_attributes :organisation_id => organisation.id
end
- Organisation.all.each do |organisation|
- RuleParameterSet.default_for_all_modes( organisation).save if organisation.rule_parameter_sets.empty?
- end
-
end
def down
diff --git a/db/migrate/20171114102438_drop_table_rule_parameter_sets.rb b/db/migrate/20171114102438_drop_table_rule_parameter_sets.rb
new file mode 100644
index 000000000..55dfd32df
--- /dev/null
+++ b/db/migrate/20171114102438_drop_table_rule_parameter_sets.rb
@@ -0,0 +1,5 @@
+class DropTableRuleParameterSets < ActiveRecord::Migration
+ def change
+ drop_table :rule_parameter_sets
+ end
+end
diff --git a/db/schema.rb b/db/schema.rb
index a992eb32b..21aa73cd8 100644
--- a/db/schema.rb
+++ b/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: 20171113101005) do
+ActiveRecord::Schema.define(version: 20171114102438) do
# These are extensions that must be enabled in order to support this database
enable_extension "plpgsql"
@@ -682,14 +682,6 @@ ActiveRecord::Schema.define(version: 20171113101005) do
t.integer "line_id", limit: 8
end
- create_table "rule_parameter_sets", id: :bigserial, force: :cascade do |t|
- t.text "parameters"
- t.string "name"
- t.datetime "created_at"
- t.datetime "updated_at"
- t.integer "organisation_id", limit: 8
- end
-
create_table "stop_area_referential_memberships", id: :bigserial, force: :cascade do |t|
t.integer "organisation_id", limit: 8
t.integer "stop_area_referential_id", limit: 8
diff --git a/lib/stif/netex_file.rb b/lib/stif/netex_file.rb
index 424663c1c..a977c1ad3 100644
--- a/lib/stif/netex_file.rb
+++ b/lib/stif/netex_file.rb
@@ -52,8 +52,6 @@ module STIF
end
end
- LINE_FORMAT = /^offre_.*\.xml$/
-
def add_offer_file(file_name)
if file_name =~ /^offre_([^_]*)_/
line_refs << $1
diff --git a/spec/controllers/compliance_check_sets_controller_spec.rb b/spec/controllers/compliance_check_sets_controller_spec.rb
index 804b0a658..3ddb1dad1 100644
--- a/spec/controllers/compliance_check_sets_controller_spec.rb
+++ b/spec/controllers/compliance_check_sets_controller_spec.rb
@@ -5,9 +5,9 @@ RSpec.describe ComplianceCheckSetsController, type: :controller do
let(:compliance_check_set) { create :compliance_check_set }
- describe "GET show" do
+ describe "GET executed" do
it 'should be successful' do
- get :show, workbench_id: compliance_check_set.workbench.id, id: compliance_check_set.id
+ get :executed, workbench_id: compliance_check_set.workbench.id, id: compliance_check_set.id
expect(response).to be_success
end
end
diff --git a/spec/controllers/rule_parameter_sets_controller_spec.rb b/spec/controllers/rule_parameter_sets_controller_spec.rb
deleted file mode 100644
index 0f57855b7..000000000
--- a/spec/controllers/rule_parameter_sets_controller_spec.rb
+++ /dev/null
@@ -1,36 +0,0 @@
-# require 'spec_helper'
-
-# describe RuleParameterSetsController, :type => :controller do
-# login_user
-# let(:mode){"air"}
-
- # shared_examples_for "organisation dependant" do
- # it "assigns rule_parameter_set.organisation as current organisation" do
- # expect(assigns[:organisation]).to eq(assigns[:organisation].rule_parameter_sets[0].organisation)
- # end
- # end
-
- # describe "GET /index" do
- # before(:each) do
- # get :index
- # end
- # it "should assign rule_parameter_sets to organisation rule_parameter_sets" do
- # expect(assigns[:rule_parameter_sets].size).to eq(assigns[:rule_parameter_sets][0].organisation.rule_parameter_sets.size)
- # assigns[:rule_parameter_sets].each do |rps|
- # expect(rps.organisation.id).to eq(assigns[:rule_parameter_sets][0].organisation.id)
- # end
- # end
- # end
-
- # describe "GET /new" do
- # before(:each) do
- # get :new
- # end
- # it_behaves_like "organisation dependant"
- # it "should assign rule_parameter_set with default params" do
- # RuleParameterSet.default_params.each do |k,v|
- # expect(assigns[:rule_parameter_set].send( k )).to eq(v)
- # end
- # end
- # end
-# end
diff --git a/spec/db/schema_spec.rb b/spec/db/schema_spec.rb
new file mode 100644
index 000000000..a7fe0a162
--- /dev/null
+++ b/spec/db/schema_spec.rb
@@ -0,0 +1,49 @@
+RSpec.describe ActiveRecord::Schema do
+ it "uses type `bigint` for primary and foreign keys" do
+ expect('db/schema.rb').to use_bigint_keys
+ end
+end
+
+
+RSpec::Matchers.define :use_bigint_keys do
+ match do |filename|
+ @original = ""
+ @expected = ""
+
+ File.open(filename, 'r') do |f|
+ f.each_line do |line|
+ expected_line = line
+
+ # Primary key
+ if line =~ /create_table\s/ &&
+ !(line =~ /id: \s+ (?: :bigserial | false)/x)
+ expected_line = line.sub(/(create_table\s"\w+",\s)/, '\1id: :bigserial, ')
+ end
+
+ # Foreign key
+ if line =~ /t\.integer\s+"\w+_id"/ &&
+ !(line =~ /limit: 8/)
+ expected_line = line.sub(/(t.integer\s+"\w+")/, '\1, limit: 8')
+ end
+
+ @original += line
+ @expected += expected_line
+ end
+ end
+
+ @original == @expected
+ end
+
+ failure_message do |filename|
+ <<-EOS
+expected #{filename.inspect} to use bigint keys
+Diff: #{diff}
+ EOS
+ end
+
+ def diff
+ RSpec::Support::Differ.new(
+ color: RSpec::Matchers.configuration.color?
+ ).diff_as_string(@original, @expected)
+ end
+end
diff --git a/spec/factories/compliance_control_blocks.rb b/spec/factories/compliance_control_blocks.rb
index 4785d8419..94773d4b3 100644
--- a/spec/factories/compliance_control_blocks.rb
+++ b/spec/factories/compliance_control_blocks.rb
@@ -1,7 +1,8 @@
FactoryGirl.define do
factory :compliance_control_block do
sequence(:name) { |n| "Compliance control block #{n}" }
- transport_mode "air"
+ transport_mode StifTransportModeEnumerations.transport_modes.first
+ transport_submode StifTransportSubmodeEnumerations.transport_submodes.first
association :compliance_control_set
end
end
diff --git a/spec/factories/netex_imports.rb b/spec/factories/netex_imports.rb
index 9e9d836e4..b59267a0a 100644
--- a/spec/factories/netex_imports.rb
+++ b/spec/factories/netex_imports.rb
@@ -1,5 +1,7 @@
FactoryGirl.define do
factory :netex_import, class: NetexImport, parent: :import do
file { File.open(Rails.root.join('spec', 'fixtures', 'OFFRE_TRANSDEV_2017030112251.zip')) }
+ association :parent, factory: :workbench_import
+
end
end
diff --git a/spec/factories/rule_parameter_sets.rb b/spec/factories/rule_parameter_sets.rb
deleted file mode 100644
index e20fff8ce..000000000
--- a/spec/factories/rule_parameter_sets.rb
+++ /dev/null
@@ -1,9 +0,0 @@
-FactoryGirl.define do
- factory :rule_parameter_set do
- sequence(:name) { |n| "Test #{n}" }
- association :organisation
- after(:create) do |rsp|
- rsp.parameters = RuleParameterSet.default_for_all_modes( rsp.organisation).parameters
- end
- end
-end
diff --git a/spec/features/compliance_check_sets_spec.rb b/spec/features/compliance_check_sets_spec.rb
new file mode 100644
index 000000000..7ba64b6b8
--- /dev/null
+++ b/spec/features/compliance_check_sets_spec.rb
@@ -0,0 +1,110 @@
+require 'rails_helper'
+
+RSpec.describe "ComplianceCheckSets", type: :feature do
+
+ include ComplianceCheckSetsHelper
+ include TransportModeHelper
+
+ login_user
+
+ # We setup a control_set with two blocks and one direct control (meaning that it is not attached to a block)
+ # Then we add one control to the first block and two controls to the second block
+ let( :compliance_check_set ){ create :compliance_check_set, name: random_string }
+ let(:blox){[
+ create( :compliance_check_block,
+ compliance_check_set: compliance_check_set, transport_mode: 'bus', transport_submode: 'demandAndResponseBus'),
+ create( :compliance_check_block,
+ compliance_check_set: compliance_check_set, transport_mode: 'rail', transport_submode: 'suburbanRailway')
+ ]}
+ let!(:direct_checks){ make_check(nil, times: 2) + make_check(nil, severity: :error) }
+ let!(:indirect_checks){ blox.flat_map{ |block| make_check(block) } }
+ let( :all_checks ){ direct_checks + indirect_checks }
+
+
+ context 'executed' do
+
+ before do
+ visit(executed_compliance_check_set_path(compliance_check_set))
+ end
+
+ it 'we can see the expected content' do
+ # Breadcrumbs
+ expect_breadcrumb_links "Accueil", "Gestion de l'offre", "Liste des jeux de contrôles"
+
+ # Headline
+ expect( page ).to have_content("Jeu de contrôles exécutés #{compliance_check_set.name}")
+
+ # Information Definition List
+ expect( page.first('.dl-term') ).to have_content("Nom")
+ expect( page.first('.dl-def') ).to have_content(compliance_check_set.name)
+
+ # Filters
+ within( 'form.form-filter' ) do
+ expect( page ).to have_content("Groupe de contrôle")
+ expect( page ).to have_content("Objet")
+ expect( page ).to have_content("Criticité")
+ end
+
+ # Checks
+ # Direct Children
+ within(:xpath, xpath_for_div_of_block) do
+ direct_checks.each do | direct_check |
+ expect( page ).to have_content( direct_check.code )
+ expect( page ).to have_content( direct_check.name )
+ expect( page ).to have_content( direct_check.criticity )
+ expect( page ).to have_content( direct_check.comment )
+ end
+
+ end
+ # Indirect Children
+ compliance_check_set.compliance_check_blocks.each do | block |
+ within(:xpath, xpath_for_div_of_block(block)) do
+ block.compliance_checks.each do | check |
+ expect( page ).to have_content( check.code )
+ expect( page ).to have_content( check.name )
+ expect( page ).to have_content( check.criticity )
+ expect( page ).to have_content( check.comment )
+ end
+ end
+ end
+ end
+
+ it 'can filter the results and remove the filter' do
+ # Filter
+ check('error')
+ click_on('Filtrer')
+ all_checks.each do | check |
+ if check.criticity == 'error'
+ expect( page ).to have_content(check.code)
+ else
+ expect( page ).not_to have_content(check.code)
+ end
+ end
+
+ # Remove filter
+ click_on('Effacer')
+ all_checks.each do | check |
+ expect( page ).to have_content(check.code)
+ end
+
+ end
+ end
+
+ def make_check ccblock=nil, times: 1, severity: :warning
+ times.times.map do
+ make_one_check ccblock, severity
+ end
+ end
+
+ def make_one_check ccblock, severity
+ create( :compliance_check,
+ code: random_string,
+ compliance_check_block: ccblock,
+ compliance_check_set: compliance_check_set,
+ criticity: severity)
+ end
+
+ def xpath_for_div_of_block(block = nil)
+ %{.//div[@class="col-lg-12"]/h2[contains(text(),"#{transport_mode_text(block)}")]/../../..}
+ end
+end
diff --git a/spec/features/compliance_control_sets_spec.rb b/spec/features/compliance_control_sets_spec.rb
index 500d4ce6f..bcb989cdc 100644
--- a/spec/features/compliance_control_sets_spec.rb
+++ b/spec/features/compliance_control_sets_spec.rb
@@ -25,7 +25,18 @@ RSpec.describe "ComplianceControlSets", type: :feature do
visit compliance_control_set_path( control_set )
end
- it 'we can see the controls inside their blocks' do
+ it 'we can see the expected content' do
+ # Breadcrumb
+ expect_breadcrumb_links "Accueil", "Liste des jeux de contrôles"
+
+ # Headline
+ expect( page ).to have_content("Consulter le jeu de contrôles #{control_set.name}")
+
+ # Information Definition List
+ expect( page.first('.dl-term') ).to have_content("Nom")
+ expect( page.first('.dl-def') ).to have_content(control_set.name)
+
+ # Children
controls.each do | control |
expect( page ).to have_content(control.code)
end
@@ -76,7 +87,8 @@ RSpec.describe "ComplianceControlSets", type: :feature do
create( :generic_attribute_control_min_max,
code: random_string,
compliance_control_block: ccblock,
- compliance_control_set: control_set)
+ compliance_control_set: control_set,
+ criticity: severity)
end
end
diff --git a/spec/models/compliance_check_block_spec.rb b/spec/models/compliance_check_block_spec.rb
index a3d98d459..0629a645d 100644
--- a/spec/models/compliance_check_block_spec.rb
+++ b/spec/models/compliance_check_block_spec.rb
@@ -1,10 +1,17 @@
-require 'rails_helper'
-
RSpec.describe ComplianceCheckBlock, type: :model do
- it 'should have a valid factory' do
- expect(FactoryGirl.build(:compliance_check_block)).to be_valid
- end
it { should belong_to :compliance_check_set }
it { should have_many :compliance_checks }
+
+ it { should allow_values(*%w{bus metro rail tram funicular}).for(:transport_mode) }
+ it { should_not allow_values(*%w{bs mtro ril tramm Funicular}).for(:transport_mode) }
+
+
+ it { should allow_values( *%w{ demandAndResponseBus nightBus airportLinkBus highFrequencyBus expressBus
+ railShuttle suburbanRailway regionalRail interregionalRail })
+ .for(:transport_submode) }
+
+ it { should_not allow_values( *%w{ demandResponseBus nightus irportLinkBus highrequencyBus expressBUs
+ Shuttle suburban regioalRail interregion4lRail })
+ .for(:transport_submode) }
end
diff --git a/spec/models/compliance_control_block_spec.rb b/spec/models/compliance_control_block_spec.rb
index c7440a5eb..4abe0ed9c 100644
--- a/spec/models/compliance_control_block_spec.rb
+++ b/spec/models/compliance_control_block_spec.rb
@@ -1,13 +1,20 @@
require 'rails_helper'
RSpec.describe ComplianceControlBlock, type: :model do
- subject { create(:compliance_control_block) }
-
- it 'should have a valid factory' do
- expect(FactoryGirl.build(:compliance_control_block)).to be_valid
- end
it { should belong_to :compliance_control_set }
it { should have_many(:compliance_controls).dependent(:destroy) }
it { should validate_presence_of(:transport_mode) }
+
+ it { should allow_values(*%w{bus metro rail tram funicular}).for(:transport_mode) }
+ it { should_not allow_values(*%w{bs mtro ril tramm Funicular}).for(:transport_mode) }
+
+
+ it { should allow_values( *%w{ demandAndResponseBus nightBus airportLinkBus highFrequencyBus expressBus
+ railShuttle suburbanRailway regionalRail interregionalRail })
+ .for(:transport_submode) }
+
+ it { should_not allow_values( *%w{ demandResponseBus nightus irportLinkBus highrequencyBus expressBUs
+ Shuttle suburban regioalRail interregion4lRail })
+ .for(:transport_submode) }
end
diff --git a/spec/models/import/netex_import_spec.rb b/spec/models/import/netex_import_spec.rb
new file mode 100644
index 000000000..8ffeed1f4
--- /dev/null
+++ b/spec/models/import/netex_import_spec.rb
@@ -0,0 +1,33 @@
+RSpec.describe NetexImport, type: [:model, :with_commit] do
+
+ let( :boiv_iev_uri ){ URI("#{Rails.configuration.iev_url}/boiv_iev/referentials/importer/new?id=#{subject.id}")}
+
+
+ before do
+ allow(Thread).to receive(:new).and_yield
+ end
+
+ context 'with referential' do
+ subject{ build( :netex_import, id: random_int ) }
+
+ it 'will trigger the Java API' do
+ with_stubbed_request(:get, boiv_iev_uri) do |request|
+ with_commit{ subject.save! }
+ expect(request).to have_been_requested
+ end
+ end
+ end
+
+ context 'without referential' do
+ subject { build :netex_import, referential_id: nil }
+
+ it 'its status is forced to aborted and the Java API is not callled' do
+ with_stubbed_request(:get, boiv_iev_uri) do |request|
+ with_commit{ subject.save! }
+ expect(subject.reload.status).to eq('aborted')
+ expect(request).not_to have_been_requested
+ end
+ end
+ end
+
+end
diff --git a/spec/models/import_spec.rb b/spec/models/import_spec.rb
index 7be05908a..4e8aac3f4 100644
--- a/spec/models/import_spec.rb
+++ b/spec/models/import_spec.rb
@@ -13,9 +13,9 @@ RSpec.describe Import, type: :model do
it { should allow_value('file.zip').for(:file).with_message(I18n.t('activerecord.errors.models.import.attributes.file.wrong_file_extension')) }
it { should_not allow_values('file.json', 'file.png', 'file.pdf').for(:file) }
- let(:workbench_import) { build_stubbed(:workbench_import) }
+ let(:workbench_import) {netex_import.parent}
let(:workbench_import_with_completed_steps) do
- workbench_import = build_stubbed(
+ build_stubbed(
:workbench_import,
total_steps: 2,
current_step: 2
@@ -23,20 +23,18 @@ RSpec.describe Import, type: :model do
end
let(:netex_import) do
- netex_import = build_stubbed(
- :netex_import,
- parent: workbench_import
+ build_stubbed(
+ :netex_import
)
end
describe "#destroy" do
it "must destroy all child imports" do
- workbench_import = create(:workbench_import)
- create(:netex_import, parent: workbench_import)
+ netex_import = create(:netex_import)
- workbench_import.destroy
+ netex_import.parent.destroy
- expect(workbench_import).to be_destroyed
+ expect(netex_import.parent).to be_destroyed
expect(NetexImport.count).to eq(0)
end
diff --git a/spec/models/line_referential_spec.rb b/spec/models/line_referential_spec.rb
index ea83c0ebd..46434a7ab 100644
--- a/spec/models/line_referential_spec.rb
+++ b/spec/models/line_referential_spec.rb
@@ -1,6 +1,4 @@
-require 'spec_helper'
-
-RSpec.describe LineReferential, :type => :model do
+RSpec.describe LineReferential, type: :model do
it 'should have a valid factory' do
expect(FactoryGirl.build(:line_referential)).to be_valid
end
@@ -11,9 +9,4 @@ RSpec.describe LineReferential, :type => :model do
it { should validate_presence_of(:sync_interval) }
it { should validate_presence_of(:objectid_format) }
- describe "#transport_modes" do
- it 'returns a list of all transport modes' do
- expect(FactoryGirl.create(:line_referential).class.transport_modes).to match_array(StifTransportModeEnumerations.transport_modes )
- end
- end
end
diff --git a/spec/models/netex_import_spec.rb b/spec/models/netex_import_spec.rb
new file mode 100644
index 000000000..c6051a869
--- /dev/null
+++ b/spec/models/netex_import_spec.rb
@@ -0,0 +1,39 @@
+RSpec.describe NetexImport, type: :model do
+ describe "#destroy" do
+ it "must destroy its associated Referential if ready: false" do
+ workbench_import = create(:workbench_import)
+ referential_ready_false = create(:referential, ready: false)
+ referential_ready_true = create(:referential, ready: true)
+ create(
+ :netex_import,
+ parent: workbench_import,
+ referential: referential_ready_false
+ )
+ create(
+ :netex_import,
+ parent: workbench_import,
+ referential: referential_ready_true
+ )
+
+ workbench_import.destroy
+
+ expect(
+ Referential.where(id: referential_ready_false.id).exists?
+ ).to be false
+ expect(
+ Referential.where(id: referential_ready_true.id).exists?
+ ).to be true
+ end
+
+ it "doesn't try to destroy nil referentials" do
+ workbench_import = create(:workbench_import)
+ create(
+ :netex_import,
+ parent: workbench_import,
+ referential: nil
+ )
+
+ expect { workbench_import.destroy }.not_to raise_error
+ end
+ end
+end
diff --git a/spec/models/rule_parameter_set_spec.rb b/spec/models/rule_parameter_set_spec.rb
deleted file mode 100644
index 71ab0cddd..000000000
--- a/spec/models/rule_parameter_set_spec.rb
+++ /dev/null
@@ -1,49 +0,0 @@
-# require 'spec_helper'
-
-# describe RuleParameterSet, :type => :model do
-
-# describe ".mode_of_mode_attribute" do
-# it "should retreive attribute name" do
-# expect(subject.class.attribute_of_mode_attribute("dummy1_mode_dummy2")).to eq("dummy1")
-# end
-# it "should retreive mode" do
-# expect(subject.class.mode_of_mode_attribute("dummy1_mode_dummy2")).to eq("dummy2")
-# end
-# end
-
-# RuleParameterSet.mode_attribute_prefixes.each do |prefix|
-# RuleParameterSet.all_modes.map do |mode|
-# "#{prefix}_mode_#{mode}".tap do |attribute|
-# describe "##{attribute}=" do
-# it "should store value on parameters hash" do
-# subject.send( "#{attribute}=".to_sym, 1234)
-# expect(subject.send( attribute.to_sym)).to eq(1234)
-# expect(subject.parameters["mode_#{mode}"][ prefix]).to eq(1234)
-# end
-# end
-# it { is_expected.to allow_mass_assignment_of attribute.to_sym}
-# end
-# end
-# end
-
-# RuleParameterSet.general_attributes.each do |attribute|
-# describe "##{attribute}=" do
-# it "should store value on parameters hash" do
-# subject.send( "#{attribute}=".to_sym, 1234)
-# expect(subject.send( attribute.to_sym)).to eq(1234)
-# expect(subject.parameters[ attribute]).to eq(1234)
-# end
-# end
-# it { is_expected.to allow_mass_assignment_of attribute.to_sym}
-# end
-
-# describe "#referential" do
-# it { is_expected.to validate_presence_of(:referential) }
-# it { is_expected.to allow_mass_assignment_of :referential_id }
-# end
-
-# describe "#name" do
-# it { is_expected.to validate_presence_of(:name) }
-# it { is_expected.to allow_mass_assignment_of :name }
-# end
-# end
diff --git a/spec/support/breadcrumb_features.rb b/spec/support/breadcrumb_features.rb
new file mode 100644
index 000000000..36bfce19c
--- /dev/null
+++ b/spec/support/breadcrumb_features.rb
@@ -0,0 +1,15 @@
+module BreadcrumbFeatures
+ def expect_breadcrumb_links *link_names
+ within('.breadcrumbs') do
+ all('a').zip( link_names ).each do | link_element, link_content |
+ within(link_element) do | |
+ expect(page).to have_content(link_content)
+ end
+ end
+ end
+ end
+end
+
+RSpec.configure do | conf |
+ conf.include BreadcrumbFeatures, type: :feature
+end
diff --git a/spec/support/webmock/helpers.rb b/spec/support/webmock/helpers.rb
index fc6c77850..a6506c035 100644
--- a/spec/support/webmock/helpers.rb
+++ b/spec/support/webmock/helpers.rb
@@ -8,6 +8,11 @@ module Support
def make_headers(headers={}, authorization_token:)
headers.merge('Authorization' => "Token token=#{authorization_token.inspect}")
end
+
+ def with_stubbed_request( method, uri, &blk )
+ stub_request(method, uri).tap(&blk)
+ end
+
end
end
end
diff --git a/spec/support/with_commit.rb b/spec/support/with_commit.rb
new file mode 100644
index 000000000..2b4725f89
--- /dev/null
+++ b/spec/support/with_commit.rb
@@ -0,0 +1,10 @@
+module WithCommit
+ def with_commit
+ yield
+ subject._run_commit_callbacks
+ end
+end
+
+RSpec.configure do |conf|
+ conf.include WithCommit, type: :with_commit
+end
diff --git a/spec/views/rule_parameter_sets/new.html.erb_spec.rb b/spec/views/rule_parameter_sets/new.html.erb_spec.rb
deleted file mode 100644
index 6f44311d5..000000000
--- a/spec/views/rule_parameter_sets/new.html.erb_spec.rb
+++ /dev/null
@@ -1,27 +0,0 @@
-require 'spec_helper'
-
-describe "/rule_parameter_sets/new", :type => :view do
-
- assign_organisation
- let!(:organisation) { create(:organisation) }
- let!(:rule_parameter_set) { assign :rule_parameter_set, build( :rule_parameter_set, :organisation => organisation) }
-
- describe "form" do
-
- xit "should render input for name" do
- render
- expect(rendered).to have_selector("form") do
- with_selector "input[type=text][name=?]", rule_parameter_set.name
- end
- end
- xit "should render input div for added_mode_parameter_set" do
- render
- expect(rendered).to have_selector("form") do
- with_selector "#added_mode_parameter_set"
- end
- end
-
- end
-
-end
-