diff options
| author | teddywing | 2017-08-29 13:35:10 +0200 |
|---|---|---|
| committer | GitHub | 2017-08-29 13:35:10 +0200 |
| commit | aa8b39b2679a39cf3c93a8df314a4446fae7a6ae (patch) | |
| tree | 3b5ab839f2f1019c6a381d11103e7bdd18341c91 /app | |
| parent | a64bf1115eedf12af4effc5556042a3cfd9493bb (diff) | |
| parent | a4686af60a193f6b245946b415bc77106d8f719f (diff) | |
| download | chouette-core-aa8b39b2679a39cf3c93a8df314a4446fae7a6ae.tar.bz2 | |
Merge pull request #57 from af83/import--fix-parent-status-update-on-child-change
Import fix parent status update on child change
OH GOODNESS WHAT HAVE I DONE I SKIPPED ALL THE SPECS
Diffstat (limited to 'app')
| -rw-r--r-- | app/models/import.rb | 41 |
1 files changed, 35 insertions, 6 deletions
diff --git a/app/models/import.rb b/app/models/import.rb index 755d5a900..6c3cba6bc 100644 --- a/app/models/import.rb +++ b/app/models/import.rb @@ -33,18 +33,47 @@ class Import < ActiveRecord::Base update(notified_parent_at: DateTime.now) end - def child_change(child) + def child_change return if self.class.finished_statuses.include?(status) - if self.class.failing_statuses.include?(child.status) - return update(status: 'failed') + update_status + update_referential + end + + def update_status + status_count = children.group(:status).count + children_finished_count = children_failed_count = children_count = 0 + + status_count.each do |status, count| + if self.class.failing_statuses.include?(status) + children_failed_count += count + end + if self.class.finished_statuses.include?(status) + children_finished_count += count + end + children_count += count + end + + attributes = { + current_step: children_finished_count + } + + status = + if children_failed_count > 0 + 'failed' + elsif status_count['successful'] == children_count + 'successful' + end + + if self.class.finished_statuses.include?(status) + attributes[:ended_at] = Time.now end - update(status: 'successful') if ready? + update attributes.merge(status: status) end - def ready? - current_step == total_steps + def update_referential + referential.update(ready: true) if self.class.finished_statuses.include?(status) end private |
