aboutsummaryrefslogtreecommitdiffstats
path: root/app/controllers/admin_public_body_controller.rb
diff options
context:
space:
mode:
authorfrancis <francis>2008-04-14 12:09:38 +0000
committerfrancis <francis>2008-04-14 12:09:38 +0000
commitcbd99b225b27c8a0e7b8a1754840b7f204334130 (patch)
treeb5de320e803fbc8240644f2423e11fcea0910d62 /app/controllers/admin_public_body_controller.rb
parentbcbb73350156347ff61e1e4900cc6d6a4228f165 (diff)
Import CSV file using web interface.
Diffstat (limited to 'app/controllers/admin_public_body_controller.rb')
-rw-r--r--app/controllers/admin_public_body_controller.rb29
1 files changed, 28 insertions, 1 deletions
diff --git a/app/controllers/admin_public_body_controller.rb b/app/controllers/admin_public_body_controller.rb
index dbaba324a..4c7b63f24 100644
--- a/app/controllers/admin_public_body_controller.rb
+++ b/app/controllers/admin_public_body_controller.rb
@@ -4,7 +4,7 @@
# Copyright (c) 2007 UK Citizens Online Democracy. All rights reserved.
# Email: francis@mysociety.org; WWW: http://www.mysociety.org/
#
-# $Id: admin_public_body_controller.rb,v 1.11 2008-04-11 15:53:57 francis Exp $
+# $Id: admin_public_body_controller.rb,v 1.12 2008-04-14 12:09:38 francis Exp $
class AdminPublicBodyController < ApplicationController
layout "admin"
@@ -66,6 +66,33 @@ class AdminPublicBodyController < ApplicationController
redirect_to admin_url('body/list')
end
+ def import_csv
+ if params[:csv_file]
+ # Try with dry run first
+ csv_contents = params[:csv_file].read
+ en = PublicBody.import_csv(csv_contents, params[:tag], true)
+ errors = en[0]
+ notes = en[1]
+
+ if errors.size == 0
+ # And if OK, with real run
+ en = PublicBody.import_csv(csv_contents, params[:tag], false)
+ errors = en[0]
+ notes = en[1]
+ if errors.size != 0
+ raise "dry run mismatched real run"
+ end
+ notes.push("Import was successful.")
+ end
+ @errors = errors.join("\n")
+ @notes = notes.join("\n")
+ else
+ @errors = ""
+ @notes = ""
+ end
+
+ end
+
private
end