nccu data task
This commit is contained in:
parent
a32027b64b
commit
136fc68cdc
|
@ -58,6 +58,7 @@ class Bulletin
|
|||
validates :title, :at_least_one => true
|
||||
|
||||
before_save :check_deadline, :update_avliable_language, :clean_tags
|
||||
before_create :update_avliable_language
|
||||
|
||||
before_save :fetch_dept
|
||||
after_save :save_bulletin_links
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -10,6 +10,38 @@ namespace :nccu_data do
|
|||
new_unit.build_title :en => row[4], :zh_tw => row[3]
|
||||
new_unit.save
|
||||
end
|
||||
end
|
||||
|
||||
task :setup_0918_announcement => :environment do
|
||||
def null_or_val(str)
|
||||
if str == "NULL"
|
||||
return nil
|
||||
else
|
||||
if str.class == "String"
|
||||
return str.force_encoding("utf-8")
|
||||
else
|
||||
return str
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
require 'csv'
|
||||
Bulletin.destroy_all
|
||||
to_this_category = BulletinCategory.first({conditions:{key: 'Announcement'}})
|
||||
counter = 0
|
||||
CSV.foreach("vendor/built_in_modules/announcement/lib/nccu_ann20120918.csv") do |row|
|
||||
#bul_h1,bul_content,bul_ENh1,bul_ENcontent,bul_date,bul_deadline
|
||||
data = {:title_translations=>{:zh_tw=>(null_or_val(row[0]) rescue nil),:en=>(null_or_val(row[2]) rescue nil)},
|
||||
:text_translations=>{:zh_tw=>(null_or_val(row[1]) rescue nil),:en=>(null_or_val(row[3]) rescue nil)},
|
||||
:postdate=>(Date.parse(row[4]) rescue nil),
|
||||
:deadline=>(Date.parse(row[5]) rescue nil),
|
||||
:bulletin_category_id=>to_this_category.id }
|
||||
if counter >=1
|
||||
Bulletin.create!(data.merge({:is_checked=> true,:is_pending=>false}))
|
||||
end
|
||||
counter+=1
|
||||
end
|
||||
Bulletin.all.each{|t| t.save}
|
||||
end
|
||||
end
|
File diff suppressed because one or more lines are too long
|
@ -0,0 +1,108 @@
|
|||
# encoding: utf-8
|
||||
require 'open-uri'
|
||||
require 'tempfile'
|
||||
require 'nokogiri'
|
||||
require 'csv'
|
||||
|
||||
namespace :nccu_data do
|
||||
desc "load nccu data from csv"
|
||||
|
||||
task :setup_0918_news => :environment do
|
||||
|
||||
def null_or_val(str)
|
||||
# binding.pry
|
||||
|
||||
if str == "NULL"
|
||||
return nil
|
||||
else
|
||||
if str.class.to_s == "String"
|
||||
return str.force_encoding("utf-8")
|
||||
else
|
||||
return str
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
# def get_file(str)
|
||||
# default_base = "http://secrt.nccu.edu.tw/newsimages/"
|
||||
# path = null_or_val(str)
|
||||
# file = nil
|
||||
|
||||
# if !path.nil?
|
||||
# # binding.pry
|
||||
# file = Tempfile.new(str)
|
||||
# full_path = ""
|
||||
|
||||
|
||||
# begin
|
||||
# full_path = default_base+path
|
||||
# opened = open(full_path)
|
||||
# file.binmode
|
||||
# open(url, headers) { |data| file.write data.read }
|
||||
# rescue Exception => e
|
||||
# case e.message
|
||||
# when /404/ then puts "Str:#{str} 404"
|
||||
# else
|
||||
# e.to_s
|
||||
# end
|
||||
# return nil
|
||||
# end
|
||||
# binding.pry
|
||||
# abort('Debug')
|
||||
# end
|
||||
|
||||
# return file
|
||||
# end
|
||||
|
||||
|
||||
NewsBulletin.destroy_all
|
||||
|
||||
type={
|
||||
1 =>NewsBulletinCategory.first({conditions:{key: "administration"}}),
|
||||
2 =>NewsBulletinCategory.first({conditions:{key: "People"}}),
|
||||
3 =>NewsBulletinCategory.first({conditions:{key: "campus_life"}}),
|
||||
4 =>NewsBulletinCategory.first({conditions:{key: "academics"}}),
|
||||
6 =>NewsBulletinCategory.first({conditions:{key: "alumni"}}),
|
||||
8 =>NewsBulletinCategory.first({conditions:{key: "Statement"}}),
|
||||
11 =>NewsBulletinCategory.first({conditions:{key: "International"}})
|
||||
}
|
||||
|
||||
counter = 0
|
||||
CSV.foreach("vendor/built_in_modules/news/lib/nccu_news20120918.csv") do |row|
|
||||
# news_id,uid,type_id,news_title,news_subtitle,news_content,news_posttime,news_overtime,news_editor,news_units,news_type,news_language,news_frontshow,news_check,news_head,news_pic,news_hit
|
||||
if counter >=1
|
||||
|
||||
csv_title = ""
|
||||
csv_subtitle = ""
|
||||
csv_text = ""
|
||||
|
||||
case row[11]
|
||||
when "1" #zh_tw
|
||||
csv_title = {:zh_tw=>(null_or_val(row[3]) rescue nil),:en=>nil}
|
||||
csv_subtitle = {:zh_tw=>(null_or_val(row[4]) rescue nil),:en=>nil}
|
||||
csv_text = {:zh_tw=>(null_or_val(row[5]) rescue nil),:en=>nil}
|
||||
when "2" #en
|
||||
csv_title = {:zh_tw=>nil,:en=>(null_or_val(row[3]) rescue nil)}
|
||||
csv_subtitle = {:zh_tw=>nil,:en=>(null_or_val(row[4]) rescue nil)}
|
||||
csv_text = {:zh_tw=>nil,:en=>(null_or_val(row[5]) rescue nil)}
|
||||
end
|
||||
|
||||
data = {:title_translations=> csv_title,
|
||||
:subtitle_translations=>csv_subtitle,
|
||||
:text_translations=>csv_text,
|
||||
:postdate=>(Date.parse(row[6]) rescue nil),
|
||||
:deadline=>(Date.parse(row[7]) rescue nil),
|
||||
:news_bulletin_category_id=> type[(null_or_val(row[2].to_i))].id,
|
||||
:view_count => (row[16].to_i rescue 0)
|
||||
}
|
||||
news_bulletin = NewsBulletin.new(data.merge({:is_checked=> true,:is_pending=>false,:public=>true}))
|
||||
# get_file(row[15])
|
||||
news_bulletin.save
|
||||
#p bulletin
|
||||
end
|
||||
counter+=1
|
||||
end
|
||||
NewsBulletin.all.each{|t| t.save}
|
||||
end
|
||||
end
|
Reference in New Issue