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 | ||||
		Loading…
	
		Reference in New Issue