diff options
| author | Alban Peignier | 2018-05-17 13:09:22 +0200 | 
|---|---|---|
| committer | GitHub | 2018-05-17 13:09:22 +0200 | 
| commit | 831d7336cdfb7678ada56f62c7588b7d3873bc8e (patch) | |
| tree | 514e39dd22125b73d29646a5c636dd7df20be38f /app | |
| parent | 27340235bf523f1d82ac9c8f709a73bfb112a06b (diff) | |
| parent | ceec2e53425f8a1c726f4903d03e268386cb598e (diff) | |
| download | chouette-core-831d7336cdfb7678ada56f62c7588b7d3873bc8e.tar.bz2 | |
Merge pull request #571 from af83/6854-clean-up--destroy-routes-outside-referential
Clean up destroy routes outside referential. Fixes #6854
Diffstat (limited to 'app')
| -rw-r--r-- | app/models/clean_up.rb | 25 | 
1 files changed, 19 insertions, 6 deletions
| diff --git a/app/models/clean_up.rb b/app/models/clean_up.rb index 0f73e07b2..9cf2389c9 100644 --- a/app/models/clean_up.rb +++ b/app/models/clean_up.rb @@ -16,6 +16,8 @@ class CleanUp < ApplicationModel      where(referential_id: referential.id)    end +  attr_accessor :methods +    def end_date_must_be_greater_that_begin_date      if self.end_date && self.date_type == 'between' && self.begin_date >= self.end_date        errors.add(:base, I18n.t('activerecord.errors.models.clean_up.invalid_period')) @@ -43,17 +45,22 @@ class CleanUp < ApplicationModel            end          end -        destroy_vehicle_journeys_outside_referential +        destroy_routes_outside_referential          # Disabled for the moment. See #5372          # destroy_time_tables_outside_referential -        destroy_vehicle_journeys -        destroy_journey_patterns -        destroy_routes +        # Run caller-specified cleanup methods +        run_methods        end      end    end +  def run_methods +    return if methods.nil? + +    methods.each { |method| send(method) } +  end +    def destroy_time_tables_between      time_tables = Chouette::TimeTable.where('end_date < ? AND start_date > ?', self.end_date, self.begin_date)      self.destroy_time_tables(time_tables) @@ -100,9 +107,9 @@ class CleanUp < ApplicationModel      destroy_time_tables(time_tables)    end -  def destroy_vehicle_journeys_outside_referential +  def destroy_routes_outside_referential      line_ids = referential.metadatas.pluck(:line_ids).flatten.uniq -    Chouette::VehicleJourney.joins(:route).where(["routes.line_id not in (?)", line_ids]).destroy_all +    Chouette::Route.where(['line_id not in (?)', line_ids]).destroy_all    end    def destroy_vehicle_journeys @@ -117,6 +124,12 @@ class CleanUp < ApplicationModel      Chouette::Route.where("id not in (select distinct route_id from journey_patterns)").destroy_all    end +  def destroy_empty +    destroy_vehicle_journeys +    destroy_journey_patterns +    destroy_routes +  end +    def overlapping_periods      self.end_date = self.begin_date if self.date_type != 'between'      Chouette::TimeTablePeriod.where('(period_start, period_end) OVERLAPS (?, ?)', self.begin_date, self.end_date) | 
