aboutsummaryrefslogtreecommitdiffstats
path: root/config
diff options
context:
space:
mode:
Diffstat (limited to 'config')
-rw-r--r--config/breadcrumbs.rb12
-rw-r--r--config/database/ci.yml11
-rw-r--r--config/database/jenkins.yml8
-rw-r--r--config/environments/development.rb9
-rw-r--r--config/environments/production.rb8
-rw-r--r--config/initializers/apartment.rb80
-rw-r--r--config/initializers/exporters.rb6
-rw-r--r--config/initializers/sidekiq.rb4
-rw-r--r--config/initializers/stif.rb4
-rw-r--r--config/locales/compliance_controls.fr.yml2
-rw-r--r--config/locales/export_messages.en.yml3
-rw-r--r--config/locales/export_messages.fr.yml3
-rw-r--r--config/locales/exports.en.yml80
-rw-r--r--config/locales/exports.fr.yml84
-rw-r--r--config/locales/footnotes.fr.yml4
-rw-r--r--config/locales/import_messages.en.yml4
-rw-r--r--config/locales/import_resources.en.yml20
-rw-r--r--config/locales/import_resources.fr.yml22
-rw-r--r--config/locales/import_tasks.en.yml52
-rw-r--r--config/locales/import_tasks.fr.yml53
-rw-r--r--config/locales/imports.en.yml13
-rw-r--r--config/locales/imports.fr.yml20
-rw-r--r--config/locales/journey_patterns.fr.yml2
-rw-r--r--config/locales/routing_constraint_zones.fr.yml6
-rw-r--r--config/locales/stop_areas.en.yml18
-rw-r--r--config/locales/stop_areas.fr.yml19
-rw-r--r--config/locales/vehicle_journeys.fr.yml2
-rw-r--r--config/locales/workbenches.en.yml15
-rw-r--r--config/locales/workbenches.fr.yml15
-rw-r--r--config/middlewares/cachesettings.rb20
-rw-r--r--config/routes.rb12
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]