aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorZakaria BOUZIANE2015-05-21 11:03:19 +0200
committerZakaria BOUZIANE2015-05-21 11:03:19 +0200
commitf539406189faacc1fd6e645f637dc9db24cd6426 (patch)
tree75b8fa56a090b63d3bc6269866ccb2eef280aa39
parent31b66390ed9811105f3bd55445b9b007ac3d4826 (diff)
downloadchouette-core-f539406189faacc1fd6e645f637dc9db24cd6426.tar.bz2
Setting start/end dates for all Exports. Form date inputs validation.
-rw-r--r--app/models/export_task.rb33
-rw-r--r--app/models/gtfs_export.rb4
-rw-r--r--app/models/hub_export.rb14
-rw-r--r--app/models/kml_export.rb4
-rw-r--r--app/models/neptune_export.rb2
-rw-r--r--app/models/netex_export.rb2
-rw-r--r--app/views/export_tasks/_fields_hub_export.html.erb2
-rw-r--r--app/views/export_tasks/_fields_neptune_export.html.erb2
-rw-r--r--app/views/export_tasks/new.html.erb6
-rw-r--r--config/locales/export_tasks.en.yml3
-rw-r--r--config/locales/export_tasks.fr.yml3
11 files changed, 53 insertions, 22 deletions
diff --git a/app/models/export_task.rb b/app/models/export_task.rb
index cb808d493..a14472518 100644
--- a/app/models/export_task.rb
+++ b/app/models/export_task.rb
@@ -6,6 +6,8 @@ class ExportTask
include ActiveModel::Validations
include ActiveModel::Conversion
+ attr_accessor :start_date, :end_date
+
define_model_callbacks :initialize, only: :after
enumerize :data_format, in: %w( neptune netex gtfs hub kml )
@@ -16,12 +18,43 @@ class ExportTask
validates_presence_of :user_name
validates_presence_of :name
validates_presence_of :data_format
+
+ validate :period_validation
+
+ after_initialize :init_period
def initialize( params = {} )
run_callbacks :initialize do
params.each {|k,v| send("#{k}=",v)}
end
end
+
+ def period_validation
+ st_date = Date.parse(start_date) unless start_date.blank?
+ ed_date = Date.parse(end_date) unless end_date.blank?
+ unless Chouette::TimeTable.start_validity_period.nil? || st_date.nil?
+ tt_st_date = Chouette::TimeTable.start_validity_period
+ errors.add(:start_date, ExportTask.human_attribute_name("start_date_greater_than" , {:tt_st_date => tt_st_date})) unless tt_st_date <= st_date
+ end
+ unless st_date.nil? || ed_date.nil?
+ errors.add(:end_date, ExportTask.human_attribute_name("end_date_greater_than_start_date")) unless st_date < ed_date
+ end
+ unless ed_date.nil? || Chouette::TimeTable.end_validity_period.nil?
+ tt_ed_date = Chouette::TimeTable.end_validity_period
+ errors.add(:end_date, ExportTask.human_attribute_name("end_date_less_than", {:tt_ed_date => tt_ed_date})) unless ed_date <= tt_ed_date
+ end
+ end
+
+ def init_period
+ unless Chouette::TimeTable.start_validity_period.nil?
+ if start_date.nil?
+ self.start_date = Chouette::TimeTable.start_validity_period
+ end
+ if end_date.nil?
+ self.end_date = Chouette::TimeTable.end_validity_period
+ end
+ end
+ end
def referential
Referential.find(referential_id)
diff --git a/app/models/gtfs_export.rb b/app/models/gtfs_export.rb
index 0fa6e377d..bef468c32 100644
--- a/app/models/gtfs_export.rb
+++ b/app/models/gtfs_export.rb
@@ -27,7 +27,9 @@ class GtfsExport < ExportTask
"organisation_name" => organisation.name,
"referential_name" => referential.name,
"time_zone" => real_time_zone,
- "object_id_prefix" => object_id_prefix
+ "object_id_prefix" => object_id_prefix,
+ "start_date" => start_date,
+ "end_date" => end_date
}
}
end
diff --git a/app/models/hub_export.rb b/app/models/hub_export.rb
index dcbfc01a1..802600692 100644
--- a/app/models/hub_export.rb
+++ b/app/models/hub_export.rb
@@ -1,20 +1,6 @@
class HubExport < ExportTask
- attr_accessor :start_date, :end_date
enumerize :references_type, in: %w( network line company group_of_line )
-
- after_initialize :init_period
-
- def init_period
- unless Chouette::TimeTable.start_validity_period.nil?
- if start_date.nil?
- self.start_date = Chouette::TimeTable.start_validity_period
- end
- if end_date.nil?
- self.end_date = Chouette::TimeTable.end_validity_period
- end
- end
- end
def action_params
{
diff --git a/app/models/kml_export.rb b/app/models/kml_export.rb
index 16a565eed..f6db77172 100644
--- a/app/models/kml_export.rb
+++ b/app/models/kml_export.rb
@@ -10,7 +10,9 @@ class KmlExport < ExportTask
"reference_ids" => reference_ids,
"user_name" => user_name,
"organisation_name" => organisation.name,
- "referential_name" => referential.name
+ "referential_name" => referential.name,
+ "start_date" => start_date,
+ "end_date" => end_date
}
}
end
diff --git a/app/models/neptune_export.rb b/app/models/neptune_export.rb
index 8e9d91557..6f26c7583 100644
--- a/app/models/neptune_export.rb
+++ b/app/models/neptune_export.rb
@@ -1,6 +1,6 @@
class NeptuneExport < ExportTask
- attr_accessor :start_date, :end_date, :extensions, :export_type
+ attr_accessor :extensions, :export_type
enumerize :references_type, in: %w( network line company group_of_line )
def action_params
diff --git a/app/models/netex_export.rb b/app/models/netex_export.rb
index cb48434a7..a4c3e2454 100644
--- a/app/models/netex_export.rb
+++ b/app/models/netex_export.rb
@@ -11,6 +11,8 @@ class NetexExport < ExportTask
"user_name" => user_name,
"organisation_name" => organisation.name,
"referential_name" => referential.name,
+ "start_date" => start_date,
+ "end_date" => end_date
}
}
end
diff --git a/app/views/export_tasks/_fields_hub_export.html.erb b/app/views/export_tasks/_fields_hub_export.html.erb
index 48e9ef172..e69de29bb 100644
--- a/app/views/export_tasks/_fields_hub_export.html.erb
+++ b/app/views/export_tasks/_fields_hub_export.html.erb
@@ -1,2 +0,0 @@
-<%= form.input :start_date, :as => :date_picker, :input_html => { :title => t("formtastic.titles.export_task.start_date")} %>
-<%= form.input :end_date, :as => :date_picker, :input_html => { :title => t("formtastic.titles.export_task.end_date")} %>
diff --git a/app/views/export_tasks/_fields_neptune_export.html.erb b/app/views/export_tasks/_fields_neptune_export.html.erb
index e1ef631a5..9f331d329 100644
--- a/app/views/export_tasks/_fields_neptune_export.html.erb
+++ b/app/views/export_tasks/_fields_neptune_export.html.erb
@@ -1,4 +1,2 @@
-<%= form.input :start_date, :as => :date_picker, :input_html => { :title => t("formtastic.titles.export_task.start_date")} %>
-<%= form.input :end_date, :as => :date_picker, :input_html => { :title => t("formtastic.titles.export_task.end_date")} %>
<%= form.input :projection_type, :as => :hidden, :input_html => { :value => @referential.projection_type || "" } %>
<%= form.input :extensions , :as => :boolean%>
diff --git a/app/views/export_tasks/new.html.erb b/app/views/export_tasks/new.html.erb
index b97201f2e..1cdb4fa79 100644
--- a/app/views/export_tasks/new.html.erb
+++ b/app/views/export_tasks/new.html.erb
@@ -18,7 +18,11 @@
<% export_task.class.references_types.each do |type| %>
<%= form.input :reference_ids, :as => :reference_ids, :json => references_referential_export_tasks_path(@referential, :format => :json) + "?filter=#{type}", :hint_text => t('search_hint'), :no_result_text => t('no_result_text'),:searching_text => t('searching_term'), :id => "#{export_task.data_format}_#{type}_reference_ids", :input_html => { :id => "#{export_task.data_format}_#{type}_reference_ids" }, :wrapper_html => { :style => "display:none;", :id => "#{export_task.data_format}_#{type}", :"data-type" => "#{type}" } %>
<% end %>
- <% end %>
+ <% end %>
+
+ <%= form.input :start_date, :as => :date_picker, :input_html => { :title => t("formtastic.titles.export_task.start_date")} %>
+ <%= form.input :end_date, :as => :date_picker, :input_html => { :title => t("formtastic.titles.export_task.end_date")} %>
+
<%= render partial: "fields_#{export_task.data_format}_export", :locals => { :form => form } %>
diff --git a/config/locales/export_tasks.en.yml b/config/locales/export_tasks.en.yml
index b8ec0ad9b..89e1960f3 100644
--- a/config/locales/export_tasks.en.yml
+++ b/config/locales/export_tasks.en.yml
@@ -31,6 +31,9 @@ en:
name: "Export name"
start_date: "Start date"
end_date: "End date"
+ start_date_greater_than: "Start date must be greater than or equal to %{tt_st_date}."
+ end_date_less_than: "End date must be less than or equal to %{tt_ed_date}."
+ end_date_greater_than_start_date: "End date must be greater than start date"
extensions: "Extensions"
created_at: "Created on"
status: "Status"
diff --git a/config/locales/export_tasks.fr.yml b/config/locales/export_tasks.fr.yml
index 4d6ab74b1..106901e5f 100644
--- a/config/locales/export_tasks.fr.yml
+++ b/config/locales/export_tasks.fr.yml
@@ -31,6 +31,9 @@ fr:
name: "Nom de l'export"
start_date: "Date de début"
end_date: "Date de fin"
+ start_date_greater_than: "La date de début doit être postérieure ou égale à %{tt_st_date}."
+ end_date_less_than: "La date de fin doit être antérieure ou égale à %{tt_ed_date}."
+ end_date_greater_than_start_date: "La date de fin doit être postérieure à la date de début."
extensions: "Extensions"
created_at: "Créé le"
status: "Status"