diff options
Diffstat (limited to 'config')
31 files changed, 374 insertions, 237 deletions
diff --git a/config/breadcrumbs.rb b/config/breadcrumbs.rb index adcbb0b6f..e57cbc4f2 100644 --- a/config/breadcrumbs.rb +++ b/config/breadcrumbs.rb @@ -111,13 +111,23 @@ crumb :imports do |workbench| parent :workbench, workbench end +crumb :exports do |workbench| + link I18n.t('exports.index.title'), workbench_exports_path(workbench) + parent :workbench, workbench +end + crumb :import do |workbench, import| link breadcrumb_name(import), workbench_import_path(workbench, import) parent :imports, workbench end +crumb :export do |workbench, export| + link breadcrumb_name(export), workbench_export_path(workbench, export) + parent :exports, workbench +end + crumb :import_resources do |import, import_resources| - link I18n.t('import_resources.index.title'), workbench_import_import_resources_path(import.workbench, import.parent) + link I18n.t('import.resources.index.title'), workbench_import_import_resources_path(import.workbench, import.parent) parent :import, import.workbench, import.parent end diff --git a/config/database/ci.yml b/config/database/ci.yml new file mode 100644 index 000000000..44103454a --- /dev/null +++ b/config/database/ci.yml @@ -0,0 +1,11 @@ +test: + adapter: <%= ENV.fetch 'RAILS_DB_ADAPTER', 'postgis' %> + encoding: unicode + pool: <%= ENV.fetch 'RAILS_DB_POOLSIZE', '5' %> + host: <%= ENV.fetch 'RAILS_DB_HOST', 'localhost' %> + port: <%= ENV.fetch 'RAILS_DB_PORT', '5432' %> + schema_search_path: 'public,shared_extensions' + postgis_schema: 'shared_extensions' + database: <%= ENV.fetch 'RAILS_DB_NAME', 'stif_boiv_test' %> + username: <%= ENV['RAILS_DB_USER'] || ENV['POSTGRESQL_ENV_POSTGRES_USER'] || 'jenkins' %> + password: <%= ENV['RAILS_DB_PASSWORD'] || ENV['POSTGRESQL_ENV_POSTGRES_PASSWORD'] %> diff --git a/config/database/jenkins.yml b/config/database/jenkins.yml deleted file mode 100644 index 8b7a8ef2f..000000000 --- a/config/database/jenkins.yml +++ /dev/null @@ -1,8 +0,0 @@ -test: - adapter: postgis - encoding: unicode - schema_search_path: 'public,shared_extensions' - postgis_schema: 'shared_extensions' - username: <%= ENV['POSTGRESQL_ENV_POSTGRES_USER'] || 'jenkins' %> - password: <%= ENV['POSTGRESQL_ENV_POSTGRES_PASSWORD'] %> - database: stif_boiv_test diff --git a/config/environments/development.rb b/config/environments/development.rb index 446e72190..7bd049979 100644 --- a/config/environments/development.rb +++ b/config/environments/development.rb @@ -1,3 +1,5 @@ +require Rails.root + 'config/middlewares/cachesettings' + Rails.application.configure do # Settings specified here will take precedence over those in config/application.rb. @@ -96,6 +98,13 @@ Rails.application.configure do config.middleware.insert_after(ActionDispatch::Static, Rack::LiveReload) if ENV['LIVERELOAD'] config.middleware.use I18n::JS::Middleware + config.middleware.use CacheSettings, { + /\/assets\/.*/ => { + cache_control: "max-age=86400, public", + expires: 86400 + } + } + config.development_toolbar = false if ENV['TOOLBAR'] && File.exists?("config/development_toolbar.rb") config.development_toolbar = OpenStruct.new diff --git a/config/environments/production.rb b/config/environments/production.rb index 9a699eb44..eb44e1ab1 100644 --- a/config/environments/production.rb +++ b/config/environments/production.rb @@ -1,3 +1,5 @@ +require Rails.root + 'config/middlewares/cachesettings' + Rails.application.configure do # Settings specified here will take precedence over those in config/application.rb. @@ -136,6 +138,12 @@ Rails.application.configure do config.iev_url = ENV.fetch('IEV_URL',"http://iev:8080") config.rails_host = ENV.fetch('RAILS_HOST','http://front:3000') + config.middleware.use CacheSettings, { + /\/assets\/.*/ => { + cache_control: "max-age=#{1.year.to_i}, public", + expires: 1.year.to_i + } + } # Set node env for browserify-rails # config.browserify_rails.node_env = "production" end diff --git a/config/initializers/apartment.rb b/config/initializers/apartment.rb index a996549fd..6b817caed 100644 --- a/config/initializers/apartment.rb +++ b/config/initializers/apartment.rb @@ -18,70 +18,76 @@ Apartment.configure do |config| # config.excluded_models = %w{Tenant} # config.excluded_models = [ - 'Referential', - 'ReferentialMetadata', - 'ReferentialSuite', - 'Organisation', - 'User', 'Api::V1::ApiKey', - 'StopAreaReferential', - 'StopAreaReferentialMembership', - 'StopAreaReferentialSync', - 'StopAreaReferentialSyncMessage', - 'Chouette::StopArea', - 'LineReferential', - 'LineReferentialMembership', - 'LineReferentialSync', - 'LineReferentialSyncMessage', - 'Chouette::Line', - 'Chouette::GroupOfLine', + 'Calendar', 'Chouette::Company', + 'Chouette::GroupOfLine', + 'Chouette::Line', 'Chouette::Network', - 'ReferentialCloning', - 'Workbench', - 'Workgroup', + 'Chouette::StopArea', 'CleanUp', 'CleanUpResult', - 'Calendar', - 'Import', - 'NetexImport', - 'WorkbenchImport', - 'ImportMessage', - 'ImportResource', + 'ComplianceCheck', + 'ComplianceCheckBlock', + 'ComplianceCheckMessage', + 'ComplianceCheckResource', + 'ComplianceCheckSet', 'ComplianceControl', + 'ComplianceControlBlock', + 'ComplianceControlSet', + 'CustomField', + 'Export::Base', + 'Export::Message', + 'Export::Resource', 'GenericAttributeControl::MinMax', 'GenericAttributeControl::Pattern', 'GenericAttributeControl::Uniqueness', + 'Import::Base', + 'Import::Gtfs', + 'Import::Message', + 'Import::Netex', + 'Import::Resource', + 'Import::Workbench', 'JourneyPatternControl::Duplicates', 'JourneyPatternControl::VehicleJourney', 'LineControl::Route', + 'LineReferential', + 'LineReferentialMembership', + 'LineReferentialSync', + 'LineReferentialSyncMessage', + 'Merge', + 'Organisation', + 'Referential', + 'ReferentialCloning', + 'ReferentialMetadata', + 'ReferentialSuite', 'RouteControl::Duplicates', 'RouteControl::JourneyPattern', 'RouteControl::MinimumLength', 'RouteControl::OmnibusJourneyPattern', - 'RouteControl::OppositeRouteTerminus', 'RouteControl::OppositeRoute', + 'RouteControl::OppositeRouteTerminus', 'RouteControl::StopPointsInJourneyPattern', 'RouteControl::UnactivatedStopPoint', 'RouteControl::ZDLStopArea', 'RoutingConstraintZoneControl::MaximumLength', 'RoutingConstraintZoneControl::MinimumLength', 'RoutingConstraintZoneControl::UnactivatedStopPoint', + 'SimpleExporter', + 'SimpleImporter', + 'SimpleInterface', + 'StopAreaReferential', + 'StopAreaReferentialMembership', + 'StopAreaReferentialSync', + 'StopAreaReferentialSyncMessage', + 'User', 'VehicleJourneyControl::Delta', - 'VehicleJourneyControl::WaitingTime', 'VehicleJourneyControl::Speed', 'VehicleJourneyControl::TimeTable', 'VehicleJourneyControl::VehicleJourneyAtStops', - 'ComplianceControlSet', - 'ComplianceControlBlock', - 'ComplianceCheck', - 'ComplianceCheckSet', - 'ComplianceCheckBlock', - 'ComplianceCheckResource', - 'ComplianceCheckMessage', - 'Merge', - 'CustomField', - 'SimpleImporter', + 'VehicleJourneyControl::WaitingTime', + 'Workbench', + 'Workgroup', ] # use postgres schemas? diff --git a/config/initializers/exporters.rb b/config/initializers/exporters.rb new file mode 100644 index 000000000..dfd82a54c --- /dev/null +++ b/config/initializers/exporters.rb @@ -0,0 +1,6 @@ +SimpleExporter.define :referential_companies do |config| + config.separator = ";" + config.encoding = 'ISO-8859-1' + config.add_column :name + config.add_column :registration_number +end diff --git a/config/initializers/sidekiq.rb b/config/initializers/sidekiq.rb index 2f65b8800..a177e7091 100644 --- a/config/initializers/sidekiq.rb +++ b/config/initializers/sidekiq.rb @@ -14,8 +14,4 @@ Sidekiq.configure_client do |config| config.redis = { url: ENV.fetch('SIDEKIQ_REDIS_URL', 'redis://localhost:6379/12') } end -Sidekiq.configure_client do |config| - config.redis = { url: ENV.fetch('SIDEKIQ_REDIS_URL', 'redis://localhost:6379/12') } -end - Sidekiq.default_worker_options = { retry: false } diff --git a/config/initializers/stif.rb b/config/initializers/stif.rb index a73e4931b..2ddadbc7e 100644 --- a/config/initializers/stif.rb +++ b/config/initializers/stif.rb @@ -27,8 +27,6 @@ Rails.application.config.to_prepare do Organisation.before_validation(on: :create) do |organisation| organisation.custom_view = "stif" end -end - -Rails.application.config.to_prepare do Dashboard.default_class = Stif::Dashboard + Chouette::VehicleJourneyAtStop.day_offset_max = 1 end diff --git a/config/locales/compliance_controls.fr.yml b/config/locales/compliance_controls.fr.yml index 44d01a973..78b92451f 100644 --- a/config/locales/compliance_controls.fr.yml +++ b/config/locales/compliance_controls.fr.yml @@ -191,7 +191,7 @@ fr: vehicle_journey_control/speed: one: "La vitesse entre deux arrêts doit être dans une fourchette paramétrable" vehicle_journey_control/delta: - one: "Les vitesses entre 2 arrêts doivent être similaires pour toutes les courses d’une même mission" + one: "Les temps de parcours entre 2 arrêts doivent être similaires pour toutes les courses d’une même mission" vehicle_journey_control/time_table: one: "Une course doit avoir au moins un calendrier d’application" vehicle_journey_control/vehicle_journey_at_stops: diff --git a/config/locales/export_messages.en.yml b/config/locales/export_messages.en.yml new file mode 100644 index 000000000..f7951a103 --- /dev/null +++ b/config/locales/export_messages.en.yml @@ -0,0 +1,3 @@ +en: + export_messages: + success: Success diff --git a/config/locales/export_messages.fr.yml b/config/locales/export_messages.fr.yml new file mode 100644 index 000000000..5c2191f35 --- /dev/null +++ b/config/locales/export_messages.fr.yml @@ -0,0 +1,3 @@ +fr: + export_messages: + success: Succès diff --git a/config/locales/exports.en.yml b/config/locales/exports.en.yml index 2a47fba54..88c1b99f8 100644 --- a/config/locales/exports.en.yml +++ b/config/locales/exports.en.yml @@ -1,25 +1,32 @@ en: - exports: + exports: &exports + search_no_results: "No export matching your query" + filters: + referential: "Select data space..." + name_or_creator_cont: "Select an export or creator name..." + error_period_filter: "End date must be greater or equal than begin date" actions: new: "New export" + create: "New export" + show: "Export report" + download: "Download original file" destroy: "Destroy" destroy_confirm: "Are you sure you want destroy this export?" - new: - title: "New export" - all: "All" - flash: "Export task on queue, refresh page to see progression" index: title: "Exports" warning: "" + new: + title: "Generate a new export" + create: + title: "Generate a new export" show: + title: "Export %{name}" report: "Report" - exported_file: "Exported file" - statuses: - started: "Started" - scheduled: "Processing ..." - terminated: "Completed" - canceled: "Canceled" - aborted: "Failed" + exported_file: "Original file" + compliance_check: "Validation report" + compliance_check_of: "Validation of export: " + export_of_validation: "Export of the validation" + compliance_check_task: "Validate Report" severities: info: "Information" uncheck: "Unchecked" @@ -27,7 +34,13 @@ en: warning: "Warning" error: "Error" fatal: "Fatal" - activemodel: + export: + workgroup: Workgroup + netex: Netex + referential_companies: Companies + base: + <<: *exports + activerecord: models: export: zero: "export" @@ -37,6 +50,10 @@ en: zero: "export" one: "Neptune export" other: "exports" + csv_export: + zero: "export" + one: "CSV export" + other: "exports" gtfs_export: zero: "export" one: "GTFS export" @@ -44,4 +61,39 @@ en: netex_export: zero: "export" one: "NeTEx export" - other: "exports"
\ No newline at end of file + other: "exports" + errors: + models: + export: + base: + attributes: + file: + wrong_file_extension: "The exported file must be a zip file" + attributes: + attrs: &attrs + resources: "File to export" + created_at: "Created on" + started_at: "Started at" + name: "Name" + status: "Status" + creator: "Creator" + references_type: "Data to be exported" + no_save: "No save" + 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" + ignore_last_word: "ignore last word" + ignore_end_chars: "ignore last chars" + parent: Parent + export: + <<: *attrs + base: + <<: *attrs + workgroup: + duration: Duration + referential_companies: + referential_id: Referential + flash: + exports: + create: + notice: "The export is in progress. Please wait and refresh the page in a few moments." diff --git a/config/locales/exports.fr.yml b/config/locales/exports.fr.yml index 2d7cc0259..fa3ac8fc7 100644 --- a/config/locales/exports.fr.yml +++ b/config/locales/exports.fr.yml @@ -1,33 +1,46 @@ fr: - exports: + exports: &exports + search_no_results: "Aucun export ne correspond à votre recherche" + filters: + referential: "Sélectionnez un jeu de données..." + name_or_creator_cont: "Indiquez un nom d'export ou d'opérateur..." + error_period_filter: "La date de fin doit être supérieure ou égale à la date de début" actions: new: "Nouvel export" + create: "Nouvel export" + show: "Rapport d'export" + download: "Téléch. fichier source" destroy: "Supprimer cet export" destroy_confirm: "Etes vous sûr de supprimer cet export ?" - new: - title: "Nouvel export" - all: "Toutes" - flash: "La demande d'export est mise en file d'attente, veuillez rafraichir régulièrement la page pour en suivre la progression" index: title: "Exports" warning: "" + new: + title: "Générer un export" + create: + title: "Générer un export" show: + title: "Export %{name}" report: "Rapport" - exported_file: "Fichier exporté" - statuses: - started: "En file d'attente..." - scheduled: "En cours..." - terminated: "Achevé" - canceled: "Annulé" - aborted: "Echoué" + exported_file: "Fichier source" + compliance_check: "Test de conformité" + compliance_check_of: "Validation de l'export : " + export_of_validation: "L'export de la validation" + compliance_check_task: "Validation" severities: info: "Information" - uncheck: "Non disponible" + uncheck: "Non testé" ok: "Ok" warning: "Alerte" error: "Erreur" fatal: "Fatal" - activemodel: + export: + workgroup: Groupe de travail + netex: Netex + referential_companies: Transporteurs + base: + <<: *exports + activerecord: models: export: zero: "export" @@ -35,7 +48,11 @@ fr: other: "exports" neptune_export: zero: "export" - one: "export neptune" + one: "export Neptune" + other: "exports" + csv_export: + zero: "export" + one: "export CSV" other: "exports" gtfs_export: zero: "export" @@ -45,3 +62,40 @@ fr: zero: "export" one: "export NeTEx" other: "exports" + errors: + models: + export: + base: + attributes: + file: + wrong_file_extension: "Le fichier exporté doit être au format zip" + attributes: + attrs: &attrs + resources: "Fichier à exporter" + created_at: "Créé le" + started_at: Démarrage + name: "Nom de l'export" + status: "Etat" + creator: "Opérateur" + no_save: "Pas de sauvegarde" + references_type: "Données à exporter" + 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" + ignore_last_word: "ignorer le dernier mot" + ignore_end_chars: "ignorer les n derniers caractères" + type: "Type d'export" + file: "Résultat" + parent: Parent + export: + <<: *attrs + base: + <<: *attrs + workgroup: + duration: Durée + referential_companies: + referential_id: Jeu de données + flash: + exports: + create: + notice: "L'export est en cours, veuillez patienter. Actualiser votre page si vous voulez voir l'avancement de votre traitement." diff --git a/config/locales/footnotes.fr.yml b/config/locales/footnotes.fr.yml index 692098046..5169cfc11 100644 --- a/config/locales/footnotes.fr.yml +++ b/config/locales/footnotes.fr.yml @@ -15,6 +15,6 @@ fr: other: "notes" attributes: footnote: - code: "numéro" + code: "titre" checksum: Signature métier - label: "ligne de texte" + label: "texte" diff --git a/config/locales/import_messages.en.yml b/config/locales/import_messages.en.yml index aad4fb772..bc06c46f0 100644 --- a/config/locales/import_messages.en.yml +++ b/config/locales/import_messages.en.yml @@ -1,5 +1,5 @@ en: - import_messages: + import_message: corrupt_zip_file: "The zip file %{source_filename} is corrupted and cannot be read" inconsistent_zip_file: "The zip file %{source_filename} contains unexpected directories: %{spurious_dirs}, which are ignored" referential_creation: "Le référentiel n'a pas pu être créé car un référentiel existe déjà sur les mêmes périodes et lignes" @@ -50,4 +50,4 @@ en: 2_netexstif_servicejourneypattern_2: "%{source_filename}-Ligne %{source_line_number}-Colonne %{source_column_number} : l'objet ServiceJourneyPattern d'identifiant %{source_objectid} doit contenir au moins 2 StopPointInJourneyPattern" 2_netexstif_servicejourneypattern_3_1: "%{source_filename}-Ligne %{source_line_number}-Colonne %{source_column_number} : l'objet ServiceJourneyPattern d'identifiant %{source_objectid} n'a pas de valeur pour l'attribut ServiceJourneyPatternType" 2_netexstif_servicejourneypattern_3_2: "%{source_filename}-Ligne %{source_line_number}-Colonne %{source_column_number} : l'objet ServiceJourneyPattern d'identifiant %{source_objectid} a une valeur interdite %{error_value} pour l'attribut ServiceJourneyPatternType différente de 'passenger'" - 2_netexstif_servicejourneypattern_4: "%{source_filename}-Ligne %{source_line_number}-Colonne %{source_column_number}, objet ServiceJourneyPattern d'identifiant %{source_objectid} : les attributs 'order' des StopPointInJourneyPattern ne sont pas croissants."
\ No newline at end of file + 2_netexstif_servicejourneypattern_4: "%{source_filename}-Ligne %{source_line_number}-Colonne %{source_column_number}, objet ServiceJourneyPattern d'identifiant %{source_objectid} : les attributs 'order' des StopPointInJourneyPattern ne sont pas croissants." diff --git a/config/locales/import_resources.en.yml b/config/locales/import_resources.en.yml index 5f0f3213e..386039319 100644 --- a/config/locales/import_resources.en.yml +++ b/config/locales/import_resources.en.yml @@ -1,11 +1,14 @@ en: + import: + resources: &resources + index: + title: "NeTEx conformity" + table_state: "%{lines_imported} line(s) imported on %{lines_in_zipfile} presents in zipfile" + table_title: "Satus of anlyzed files" + table_explanation: "When calendriers.xml and/or commun.xml are not imported, then all lines file are not processed." + metrics: "%{ok_count} ok, %{error_count} errors, %{warning_count} warnings, %{uncheck_count} n/a" import_resources: - index: - title: "NeTEx conformity" - table_state: "%{lines_imported} line(s) imported on %{lines_in_zipfile} presents in zipfile" - table_title: "Satus of anlyzed files" - table_explanation: "When calendriers.xml and/or commun.xml are not imported, then all lines file are not processed." - metrics: "%{ok_count} ok, %{error_count} errors, %{warning_count} warnings, %{uncheck_count} n/a" + <<: *resources activerecord: models: import_resource: @@ -14,5 +17,6 @@ en: other: "netex conformities" attributes: import: - name: "Filename" - status: "Status" + resource: + name: "Filename" + status: "Status" diff --git a/config/locales/import_resources.fr.yml b/config/locales/import_resources.fr.yml index a271ae1ca..50fb7f1ca 100644 --- a/config/locales/import_resources.fr.yml +++ b/config/locales/import_resources.fr.yml @@ -1,11 +1,14 @@ fr: + import: + resources: &resources + index: + title: "Rapport de conformité NeTEx" + table_state: "%{lines_imported} ligne(s) importée(s) sur %{lines_in_zipfile} présente(s) dans l'archive" + table_title: "Etat des fichiers analysés" + table_explanation: "Dans le cas ou le(s) fichiers calendriers.xml et/ou commun.xml sont dans un état non importé, alors tous les fichiers lignes sont automatiquement dans un état non traité." + metrics: "%{ok_count} ok, %{error_count} errors, %{warning_count} warnings, %{uncheck_count} n/a" import_resources: - index: - title: "Rapport de conformité NeTEx" - table_state: "%{lines_imported} ligne(s) importée(s) sur %{lines_in_zipfile} présente(s) dans l'archive" - table_title: "Etat des fichiers analysés" - table_explanation: "Dans le cas ou le(s) fichiers calendriers.xml et/ou commun.xml sont dans un état non importé, alors tous les fichiers lignes sont automatiquement dans un état non traité." - metrics: "%{ok_count} ok, %{error_count} errors, %{warning_count} warnings, %{uncheck_count} n/a" + <<: *resources activerecord: models: import_resource: @@ -13,6 +16,7 @@ fr: one: "rapport de conformité Netex" other: "rapports de conformité Netex" attributes: - import_resource: - name: "Fichier" - status: "Etat" + import: + resource: + name: "Fichier" + status: "Etat" diff --git a/config/locales/import_tasks.en.yml b/config/locales/import_tasks.en.yml deleted file mode 100644 index 34f7e6998..000000000 --- a/config/locales/import_tasks.en.yml +++ /dev/null @@ -1,52 +0,0 @@ -en: - import_tasks: - actions: - new: "New import" - new: - title: "New import" - all: "All" - flash: "Import task on queue, refresh page to see progression" - activemodel: - models: - import_task: - zero: "import" - one: "import" - other: "imports" - neptune_import: - zero: "import" - one: "Neptune import" - other: "imports" - gtfs_import: - zero: "import" - one: "GTFS import" - other: "imports" - netex_import: - zero: "import" - one: "NeTEx import" - other: "imports" - attributes: - import_task: - name: "Import name" - no_save: "No save" - resources: "File to import" - references_type: "Data to be imported" - 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" - ignore_last_word: "ignore last word" - ignore_end_chars: "ignore last chars" - errors: - models: - import_task: - attributes: - resources: - maximum_file_size: "File should smaller than %{maximum_file_size} (%{file_size} sent)" - invalid_mime_type: "File doesn't use the expected format (%{mime_type} sent)" - formtastic: - titles: - import_task: - max_distance_for_commercial: "Maximal distance to merge homonymous stops in commercial stop in meter" - max_distance_for_connection_link: "Maximal distance to link stops by connection link stop in meter" - ignore_last_word: "ignore last word on stop name in homonymous detection (inappliable when just one word occurs)" - ignore_end_chars: "ignore some chars at the end of stop names in homonymous detection" - references_type: "Filter on stop areas import only GTFS stops and transfers files, these may contain extra attributes" diff --git a/config/locales/import_tasks.fr.yml b/config/locales/import_tasks.fr.yml deleted file mode 100644 index 002ca03cb..000000000 --- a/config/locales/import_tasks.fr.yml +++ /dev/null @@ -1,53 +0,0 @@ -fr: - import_tasks: - actions: - new: "Nouvel import" - new: - title: "Nouvel import" - all: "Tout" - flash: "La demande d'import est mise en file d'attente, veuillez rafraichir régulièrement la page pour en suivre la progression" - activemodel: - models: - import_task: - zero: "import" - one: "import" - other: "imports" - neptune_import: - zero: "import" - one: "import Neptune" - other: "imports" - gtfs_import: - zero: "import" - one: "import GTFS" - other: "imports" - netex_import: - zero: "import" - one: "import NeTEx" - other: "imports" - attributes: - import_task: - name: "Nom de l'import" - no_save: "Pas de sauvegarde" - resources: "Fichier à importer" - references_type: "Données à importer" - 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" - ignore_last_word: "ignorer le dernier mot" - ignore_end_chars: "ignorer les n derniers caractères" - errors: - models: - import_task: - attributes: - resources: - maximum_file_size: "Le fichier ne peut dépasser %{maximum_file_size} (%{file_size} soumis)" - invalid_mime_type: "Le fichier n'utilise pas le format attendu (%{mime_type} soumis)" - - formtastic: - titles: - import_task: - max_distance_for_commercial: "Distance maximale entre deux arrêts homonymes pour créer les zones d'arrêt (en mètre)" - max_distance_for_connection_link: "Distance maximale entre deux arrêts pour créer les correspondances (en mètre)" - ignore_last_word: "Ignorer le dernier mot pour détecter l'homonymie des noms d'arrêt (inapplicable quand le nom ne comporte qu'un mot)" - ignore_end_chars: "Ignorer les n derniers caractères du nom de l'arrêt pour détecter l'homonymie" - references_type: "Le filtre sur arrêts importe uniquement les fichiers GTFS stops et transfers gtfs, ceux-ci pouvant contenir des attributs supplémentaires" diff --git a/config/locales/imports.en.yml b/config/locales/imports.en.yml index b0644acd3..d0db87fb1 100644 --- a/config/locales/imports.en.yml +++ b/config/locales/imports.en.yml @@ -59,11 +59,12 @@ en: errors: models: import: - attributes: - file: - wrong_file_extension: "The imported file must be a zip file" + base: + attributes: + file: + wrong_file_extension: "The imported file must be a zip file" attributes: - import: + attrs: &attrs resources: "File to import" created_at: "Created on" started_at: "Started at" @@ -77,6 +78,10 @@ en: max_distance_for_connection_link: "Max distance for connection link" ignore_last_word: "ignore last word" ignore_end_chars: "ignore last chars" + import: + <<: *attrs + base: + <<: *attrs flash: imports: create: diff --git a/config/locales/imports.fr.yml b/config/locales/imports.fr.yml index 2380eac45..40272889a 100644 --- a/config/locales/imports.fr.yml +++ b/config/locales/imports.fr.yml @@ -1,5 +1,5 @@ fr: - imports: + imports: &imports search_no_results: "Aucun import ne correspond à votre recherche" filters: referential: "Sélectionnez un jeu de données..." @@ -34,6 +34,9 @@ fr: warning: "Alerte" error: "Erreur" fatal: "Fatal" + import: + base: + <<: *imports activerecord: models: import: @@ -59,11 +62,12 @@ fr: errors: models: import: - attributes: - file: - wrong_file_extension: "Le fichier importé doit être au format zip" + base: + attributes: + file: + wrong_file_extension: "Le fichier importé doit être au format zip" attributes: - import: + attrs: &attrs resources: "Fichier à importer" created_at: "Créé le" started_at: Démarrage @@ -77,6 +81,12 @@ fr: max_distance_for_connection_link: "Distance max pour créer les correspondances" ignore_last_word: "ignorer le dernier mot" ignore_end_chars: "ignorer les n derniers caractères" + + import: + <<: *attrs + base: + <<: *attrs + flash: imports: create: diff --git a/config/locales/journey_patterns.fr.yml b/config/locales/journey_patterns.fr.yml index fb69f4190..8f1dc1e41 100644 --- a/config/locales/journey_patterns.fr.yml +++ b/config/locales/journey_patterns.fr.yml @@ -42,7 +42,7 @@ fr: published_name: "Nom public" section_status: "Status section" comment: "Commentaire" - registration_number: "Numéro d'enregistrement" + registration_number: "Code mission" stop_point_ids: "Sélection des arrêts desservis" objectid: "Identifiant Neptune" object_version: "Version" diff --git a/config/locales/routing_constraint_zones.fr.yml b/config/locales/routing_constraint_zones.fr.yml index 024dd3288..d4b97fff2 100644 --- a/config/locales/routing_constraint_zones.fr.yml +++ b/config/locales/routing_constraint_zones.fr.yml @@ -2,9 +2,9 @@ fr: activerecord: models: routing_constraint_zone: - zero: zone de contrainte - one: zone de contrainte - other: zone de contraintes + zero: ITL + one: ITL + other: ITLs attributes: routing_constraint_zone: checksum: Signature métier diff --git a/config/locales/stop_areas.en.yml b/config/locales/stop_areas.en.yml index c1ced1094..389f70c0c 100644 --- a/config/locales/stop_areas.en.yml +++ b/config/locales/stop_areas.en.yml @@ -5,6 +5,10 @@ en: errors: empty: Aucun stop_area_id parent_area_type: can not be of type %{area_type} + registration_number: + already_taken: Already taken + cannot_be_empty: This field is mandatory + invalid: Incorrect value default_geometry_success: "%{count} modified stop areas" stop_area: no_position: "No Position" @@ -66,6 +70,9 @@ en: access_managment: "Access Points and Links managment" access_points: "Access Points" not_editable: "Le type d'arrêt est non modifiable" + state: + active: Active + deactivated: Deactivated genealogical: genealogical: "Links between stop area" genealogical_routing: "Routing constraint's links" @@ -103,8 +110,11 @@ en: name: "Name" registration_number: "Registration number" published_name: "Published name" - deleted: "Deleted" - deleted_at: "Deleted at" + in_creation: "In creation" + confirmed: "Activated" + confirmed_at: "Activated at" + deleted: "Deactivated" + deleted_at: "Deactivated at" comment: "Description" stop_area_type: "Area type" area_type: "Area type" @@ -136,14 +146,14 @@ en: coordinates: "Coordinates (lat,lng) WGS84" zip_code: "Zip code" city_name: "City" - created_at: Created at - updated_at: Updated at waiting_time: Waiting time (minutes) + state: State formtastic: titles: stop_area: name: "" registration_number: "only alphanumerical or underscore characters" + registration_number_format: "authorized format : %{registration_number_format}" objectid: "[prefix]:StopArea:[unique_key] : prefix contains only alphanumerical or underscore characters, unique_key accepts also minus character" nearest_topic_name: "" city_name: "" diff --git a/config/locales/stop_areas.fr.yml b/config/locales/stop_areas.fr.yml index ede1aada6..aee112be7 100644 --- a/config/locales/stop_areas.fr.yml +++ b/config/locales/stop_areas.fr.yml @@ -6,6 +6,10 @@ fr: empty: Aucun stop_area_id parent_area_type: ne peut être de type %{area_type} incorrect_kind_area_type: Ce type d'arrêt est invalide pour cette catégorie + registration_number: + already_taken: Déjà utilisé + cannot_be_empty: Ce champ est requis + invalid: Valeur invalide default_geometry_success: "%{count} arrêts édités" stop_area: no_position: "Pas de position" @@ -67,6 +71,9 @@ fr: access_managment: "Gestion des accès et liens associés" access_points: "Points d'accès" not_editable: "Le type d'arrêt est non modifiable" + state: + active: Actif + deactivated: Désactivé genealogical: genealogical: "Lien entre arrêts" genealogical_routing: "Liens de l'ITL" @@ -105,8 +112,12 @@ fr: kind: "Catégorie" registration_number: "Numéro d'enregistrement" published_name: "Nom public" - deleted: "Supprimé" - deleted_at: "Activé" + in_creation: "En création" + confirmed: "Actif" + confirmed_at: "Activé le" + deleted: "Désactivé" + deactivated: "Désactivé" + deleted_at: "Désactivé le" comment: "Commentaire" stop_area_type: "Type d'arrêt" area_type: "Type d'arrêt" @@ -138,14 +149,14 @@ fr: coordinates: "Coordonnées (lat,lng) WGS84" zip_code: "Code postal" city_name: "Commune" - created_at: "Créé le" - updated_at: "Edité le" waiting_time: Temps de desserte (minutes) + state: État formtastic: titles: stop_area: name: "" registration_number: "caractères autorisés : alphanumériques et 'souligné'" + registration_number_format: "format autorisé: %{registration_number_format}" objectid: "[prefixe]:StopArea:[clé_unique] caractères autorisés : alphanumériques et 'souligné' pour le préfixe, la clé unique accepte en plus le 'moins'" nearest_topic_name: "" city_name: "" diff --git a/config/locales/vehicle_journeys.fr.yml b/config/locales/vehicle_journeys.fr.yml index a43fa4580..a1eb5b3f7 100644 --- a/config/locales/vehicle_journeys.fr.yml +++ b/config/locales/vehicle_journeys.fr.yml @@ -122,7 +122,7 @@ fr: object_version: "Version" objectid: "Identifiant Neptune" on_demand_fs: "Service à la demande" - published_journey_identifier: "Identifiant public" + published_journey_identifier: "Numéro de train" published_journey_name: "Nom public" purchase_window: "Disponibilité commerciale" regular_fs: "Service régulier" diff --git a/config/locales/workbenches.en.yml b/config/locales/workbenches.en.yml index 7f21f47a0..2d9b27045 100644 --- a/config/locales/workbenches.en.yml +++ b/config/locales/workbenches.en.yml @@ -2,6 +2,14 @@ en: workbenches: show: title: "%{name}" + edit: + title: "Configure the workbench" + update: + title: "Configure the workbench" + referential_count: + zero: "There are no referentials in your workbench" + one: "There is one referential in your workbench" + other: "There are #{count} referentials in your workbench" index: title: "%{organisation} dashboard" offers: @@ -12,10 +20,9 @@ en: calendars: "Calendars" see: "See the list" no_content: "No content yet." - referential_count: - zero: "There is no referential in your workbench" - one: "There is one referential in your workbench" - other: "There are #{count} referentials in your workbench" + actions: + show_output: "Merge offer" + affect_ccset: "Configure" activerecord: models: workbench: diff --git a/config/locales/workbenches.fr.yml b/config/locales/workbenches.fr.yml index e7a392e66..8eee1a516 100644 --- a/config/locales/workbenches.fr.yml +++ b/config/locales/workbenches.fr.yml @@ -2,12 +2,27 @@ fr: workbenches: show: title: "%{name}" + edit: + title: "Configurer l'espace de travail" + update: + title: "Configurer l'espace de travail" referential_count: zero: "Aucun jeu de données dans cet espace de travail" one: "1 jeu de données dans cet espace de travail" other: "#{count} jeux de données dans cet espace de travail" + index: + title: "%{organisation} dashboard" + offers: + title: "Offre de transport" + organisation: "Offres de mon Organisation" + idf: "Offres IDF" + referentials: "Jeux de données" + calendars: "Calendriers" + see: "Voir la liste" + no_content: "Aucun contenu" actions: show_output: "Finaliser l'Offre" + configure: "Configurer" activerecord: models: workbench: diff --git a/config/middlewares/cachesettings.rb b/config/middlewares/cachesettings.rb new file mode 100644 index 000000000..8a122891f --- /dev/null +++ b/config/middlewares/cachesettings.rb @@ -0,0 +1,20 @@ +class CacheSettings + def initialize app, pat + @app = app + @pat = pat + end + + def call env + res = @app.call(env) + path = env["REQUEST_PATH"] + @pat.each do |pattern,data| + if path =~ pattern + res[1]["Cache-Control"] = data[:cache_control] if data.has_key?(:cache_control) + res[1]["Expires"] = (Time.now + data[:expires]).utc.rfc2822 if data.has_key?(:expires) + res[1]["X-Custom-Cache-Control"] = "yes" if Rails.env.development? + return res + end + end + res + end +end diff --git a/config/routes.rb b/config/routes.rb index 456cb66f5..6313b5678 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -3,7 +3,7 @@ require 'sidekiq/web' ChouetteIhm::Application.routes.draw do resource :dashboard - resources :workbenches, only: [:show, :index] do + resources :workbenches, except: [:destroy] do delete :referentials, on: :member, action: :delete_referentials resources :imports do get :download, on: :member @@ -11,6 +11,12 @@ ChouetteIhm::Application.routes.draw do resources :import_messages, only: [:index] end end + resources :exports do + post :upload, on: :member + resources :export_resources, only: [:index] do + resources :export_messages, only: [:index] + end + end resources :compliance_check_sets, only: [:index, :show] do get :executed, on: :member resources :compliance_checks, only: [:show] @@ -57,6 +63,8 @@ ChouetteIhm::Application.routes.draw do match 'lines' => 'lines#destroy_all', :via => :delete resources :lines, controller: "referential_lines", except: :index do + get :autocomplete, on: :collection, to: 'autocomplete_lines#index' + resource :footnotes, controller: "line_footnotes" delete :index, on: :collection, action: :delete_all collection do @@ -174,7 +182,7 @@ ChouetteIhm::Application.routes.draw do namespace :api do namespace :v1 do - resources :workbenches, only: [:index, :show] do + resources :workbenches, except: [:destroy] do resources :imports, only: [:index, :show, :create] end resources :access_links, only: [:index, :show] |
