aboutsummaryrefslogtreecommitdiffstats
path: root/app
diff options
context:
space:
mode:
authorteddywing2017-08-29 13:35:10 +0200
committerGitHub2017-08-29 13:35:10 +0200
commitaa8b39b2679a39cf3c93a8df314a4446fae7a6ae (patch)
tree3b5ab839f2f1019c6a381d11103e7bdd18341c91 /app
parenta64bf1115eedf12af4effc5556042a3cfd9493bb (diff)
parenta4686af60a193f6b245946b415bc77106d8f719f (diff)
downloadchouette-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.rb41
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