diff options
| -rw-r--r-- | app/controllers/stop_area_exports_controller.rb | 25 | ||||
| -rw-r--r-- | app/models/stop_area_export.rb | 28 | ||||
| -rw-r--r-- | app/views/stop_area_exports/index.xls.erb | 33 | ||||
| -rw-r--r-- | app/views/stop_area_imports/new.html.erb | 4 | ||||
| -rw-r--r-- | config/locales/stop_area_imports.yml | 4 | ||||
| -rw-r--r-- | spec/fixtures/stop_area_import_invalid.csv | 14 | ||||
| -rw-r--r-- | spec/fixtures/stop_area_import_valid.csv | 14 | 
7 files changed, 104 insertions, 18 deletions
| diff --git a/app/controllers/stop_area_exports_controller.rb b/app/controllers/stop_area_exports_controller.rb new file mode 100644 index 000000000..e675a9826 --- /dev/null +++ b/app/controllers/stop_area_exports_controller.rb @@ -0,0 +1,25 @@ +class StopAreaExportsController < ChouetteController +  belongs_to :referential +     +  respond_to :csv, :only => [:index] +  respond_to :xls, :only => [:index]  + +  def index +    @column_names = column_names  +    index! do |format| +      format.csv { send_data StopAreaExport.new( {:column_names => column_names, :stop_areas => collection} ).to_csv  } +      format.xls +    end +  end +   +  protected  + +  def column_names +    ["id","name","longitude","latitude","area_type","parent_id", "comment","country_code","street_name","mobility_restricted_suitability","stairs_availability","lift_availability","int_user_needs"] +  end +   +  def collection +    @stop_areas ||= Chouette::StopArea.order(:country_code, :name) +  end +   +end diff --git a/app/models/stop_area_export.rb b/app/models/stop_area_export.rb new file mode 100644 index 000000000..1b9cc36a7 --- /dev/null +++ b/app/models/stop_area_export.rb @@ -0,0 +1,28 @@ +# -*- coding: utf-8 -*- +require "csv" + +class StopAreaExport    +  include ActiveModel::Validations +  include ActiveModel::Conversion +  extend  ActiveModel::Naming + +  attr_accessor :column_names, :stop_areas +   +  def initialize(attributes = {})     +    attributes.each { |name, value| send("#{name}=", value) } +  end +   +  def persisted? +    false +  end +   +  def to_csv(options = {})    +    CSV.generate(options) do |csv|       +      csv << column_names +      stop_areas.each do |stop_area| +        csv << stop_area.attributes.values_at(*column_names) +      end +    end +  end + +end diff --git a/app/views/stop_area_exports/index.xls.erb b/app/views/stop_area_exports/index.xls.erb new file mode 100644 index 000000000..e48a97fe0 --- /dev/null +++ b/app/views/stop_area_exports/index.xls.erb @@ -0,0 +1,33 @@ +<?xml version="1.0"?> +<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet" +  xmlns:o="urn:schemas-microsoft-com:office:office" +  xmlns:x="urn:schemas-microsoft-com:office:excel" +  xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" +  xmlns:html="http://www.w3.org/TR/REC-html40"> +  <Worksheet ss:Name="Sheet1"> +    <Table> +      <Row> +        <% @column_names.each do |column_name|%> +          <Cell><Data ss:Type="String"><%= column_name %></Data></Cell> +        <% end %> +      </Row> +    <% @stop_areas.each do |stop_area| %> +      <Row> +        <Cell><Data ss:Type="Number"><%= stop_area.id %></Data></Cell> +        <Cell><Data ss:Type="String"><%= stop_area.name %></Data></Cell> +        <Cell><Data ss:Type="Number"><%= stop_area.longitude %></Data></Cell> +        <Cell><Data ss:Type="Number"><%= stop_area.latitude %></Data></Cell> +        <Cell><Data ss:Type="String"><%= stop_area.area_type %></Data></Cell> +        <Cell><Data ss:Type="Number"><%= stop_area.parent_id %></Data></Cell> +        <Cell><Data ss:Type="String"><%= stop_area.comment %></Data></Cell> +        <Cell><Data ss:Type="String"><%= stop_area.country_code %></Data></Cell> +        <Cell><Data ss:Type="String"><%= stop_area.street_name %></Data></Cell> +        <Cell><Data ss:Type="String"><%= stop_area.mobility_restricted_suitability %></Data></Cell> +        <Cell><Data ss:Type="String"><%= stop_area.stairs_availability %></Data></Cell> +        <Cell><Data ss:Type="String"><%= stop_area.lift_availability %></Data></Cell> +        <Cell><Data ss:Type="String"><%= stop_area.int_user_needs %></Data></Cell>         +      </Row> +    <% end %> +    </Table> +  </Worksheet> +</Workbook> diff --git a/app/views/stop_area_imports/new.html.erb b/app/views/stop_area_imports/new.html.erb index 67b02892d..54ca1c57a 100644 --- a/app/views/stop_area_imports/new.html.erb +++ b/app/views/stop_area_imports/new.html.erb @@ -6,8 +6,8 @@         <%= t('stop_area_imports.new.export_stop_areas') %><span class="caret"></span>      </button>      <ul class="dropdown-menu" role="menu"> -      <li><%= link_to image_tag("icons/file_csv.png") + " Csv" , "/stop_area_imports.csv" %></li> -      <li><%= link_to image_tag("icons/file_excel.png") + " Excel", "/stop_area_imports.xls" %></li> +      <li><%= link_to image_tag("icons/file_csv.png") + " Csv" , referential_stop_area_exports_path(@referential, :format => :csv) %></li> +      <li><%= link_to image_tag("icons/file_excel.png") + " Excel", referential_stop_area_exports_path(@referential, :format => :xls) %></li>      </ul>    </div>  </div> diff --git a/config/locales/stop_area_imports.yml b/config/locales/stop_area_imports.yml index 124157cba..c080ea1b5 100644 --- a/config/locales/stop_area_imports.yml +++ b/config/locales/stop_area_imports.yml @@ -2,7 +2,7 @@ en:    stop_area_imports:      new:        title: "Import stop areas" -      export_stop_areas: "Export a model" +      export_stop_areas: "Export existing stop_areas"        succcess: "Import is a success"        tooltip:          file: "Select a CSV or Excel file" @@ -18,7 +18,7 @@ fr:    stop_area_imports:      new:        title: "Import des arrêts" -      export_stop_areas: "Exporter un modèle" +      export_stop_areas: "Exporter les arrêts existants"        succcess: "L'import des données est un succès"        tooltip:          file: "Sélectionner un fichier CSV ou Excel"   diff --git a/spec/fixtures/stop_area_import_invalid.csv b/spec/fixtures/stop_area_import_invalid.csv index 7fc4caefc..379c33012 100644 --- a/spec/fixtures/stop_area_import_invalid.csv +++ b/spec/fixtures/stop_area_import_invalid.csv @@ -1,7 +1,7 @@ -"id","name","longitude","latitude","area_type","comment","country_code","street_name","mobility_restricted_suitability","stairs_availability","lift_availability","int_user_needs" -,"StopArea1","0.1","0.1",,"Comment",,,,,, -,"StopArea2","0.2","0.2",,"Comment",,,,,, -,"StopArea3","0.3","0.3",,"Comment",,,,,, -,"StopArea4","0.4","0.4",,"Comment",,,,,, -,"StopArea5","0.5","0.5",,"Comment",,,,,, -,"StopArea6","0.6","0.6",,"Comment",,,,,, +"id","name","longitude","latitude","area_type","parent_id","comment","country_code","street_name","mobility_restricted_suitability","stairs_availability","lift_availability","int_user_needs" +,"StopArea1","0.1","0.1",,,"Comment",,,,,, +,"StopArea2","0.2","0.2",,,"Comment",,,,,, +,"StopArea3","0.3","0.3",,,"Comment",,,,,, +,"StopArea4","0.4","0.4",,,"Comment",,,,,, +,"StopArea5","0.5","0.5",,,"Comment",,,,,, +,"StopArea6","0.6","0.6",,,"Comment",,,,,, diff --git a/spec/fixtures/stop_area_import_valid.csv b/spec/fixtures/stop_area_import_valid.csv index a929378f9..d3d2c6974 100644 --- a/spec/fixtures/stop_area_import_valid.csv +++ b/spec/fixtures/stop_area_import_valid.csv @@ -1,7 +1,7 @@ -"id","name","longitude","latitude","area_type","comment","country_code","street_name","mobility_restricted_suitability","stairs_availability","lift_availability","int_user_needs" -,"StopArea1","0.1","0.1","Quay","Comment",,,,,, -,"StopArea2","0.2","0.2","Quay","Comment",,,,,, -,"StopArea3","0.3","0.3","Quay","Comment",,,,,, -,"StopArea4","0.4","0.4","Quay","Comment",,,,,, -,"StopArea5","0.5","0.5","Quay","Comment",,,,,, -,"StopArea6","0.6","0.6","Quay","Comment",,,,,, +"id","name","longitude","latitude","area_type","parent_id","comment","country_code","street_name","mobility_restricted_suitability","stairs_availability","lift_availability","int_user_needs" +,"StopArea1","0.1","0.1","Quay",,"Comment",,,,,, +,"StopArea2","0.2","0.2","Quay",,"Comment",,,,,, +,"StopArea3","0.3","0.3","Quay",,"Comment",,,,,, +,"StopArea4","0.4","0.4","Quay",,"Comment",,,,,, +,"StopArea5","0.5","0.5","Quay",,"Comment",,,,,, +,"StopArea6","0.6","0.6","Quay",,"Comment",,,,,, | 
