Import Announcements, Journal Paper, Conference Data, book data

Conflicts:
	app/models/user/user.rb
This commit is contained in:
saurabhbhatia 2013-09-11 09:54:07 +08:00
parent 93909eeca0
commit d2a07d9ffb
3 changed files with 193 additions and 44 deletions

View File

@ -6,12 +6,12 @@ require 'open-uri'
class Admin::ImportDataController < OrbitBackendController
def get_teacher_data
uri = URI("https://15fc4b.ngrok.com/teachers.xml")
uri = URI("https://tp.rulingcom.com:33333/teachers.xml")
#params = {"UnitName" => "管理學院".encode('big5-uao'), "account" => "manage"}
#uri.query = URI.encode_www_form(params)
res = Net::HTTP.get_response(uri)
@teacher_data = Hash.from_xml(res.body)
@teachers = @teacher_data["objects"]
@i = 2000
@ -42,53 +42,199 @@ class Admin::ImportDataController < OrbitBackendController
@i += 10
if hash['email'].blank?
@teacher.email = "#{@i}@ntu.edu.tw"
Rails.logger.info"@@@@@@@@@@@@@@@@@@@@@"+@teacher.email.inspect
else
@teacher.email = hash['email']
end
@teacher.user_id = hash['teacher_en']
if hash['teacher_zh_tw'].blank?
@teacher.user_id = hash['teacher_en']
elsif hash['teacher_en'].blank?
@teacher.user_id = hash['teacher_zh_tw']
end
@teacher.save!
end
end
# def get_book_data
# uri = URI("http://ann.cc.ntu.edu.tw/Achv/xmlTeacherData.asp")
# params = {"UnitName" => "管理學院".encode('big5-uao'), "account" => "manage"}
# uri.query = URI.encode_www_form(params)
# res = Net::HTTP.get_response(uri)
# teachers = User.all
def get_book_data
uri = URI("http://ann.cc.ntu.edu.tw/Achv/xmlTeacherData.asp")
params = {"UnitName" => "管理學院".encode('big5-uao'), "account" => "manage"}
uri.query = URI.encode_www_form(params)
res = Net::HTTP.get_response(uri)
teachers = User.all
teachers.each do |hash|
if hash.ntu_seq.present?
ntu_seq = hash.ntu_seq
books_xml = Nokogiri::XML( \
open("http://ann.cc.ntu.edu.tw/Achv/xmlBook.asp?Seq=#{ntu_seq}"))
@books = books_xml.xpath("//Book").map do |book_node|
{
author: (book_node>"Authors").text,
year: (book_node>"PublishYear").text,
title: (book_node>"DocTitle").text,
remarks: (book_node>"Remarks").text,
publisher: (book_node>"Publisher").text,
book_title: (book_node>"BookTitle").text
}
end
if @books.present?
@books.each do |b|
@book = WritingBook.new
@book.authors = b[:author]
@book.paper_title = b[:title]
@book.book_title = b[:book_title]
@book.year = b[:year]
@book.note = b[:remarks]
@book.publisher = b[:publisher]
@book.create_user_id = hash.id
@book.save
end
else
puts "No books by Teacher"
end
end
end
end
def get_conference_data
uri = URI("http://ann.cc.ntu.edu.tw/Achv/xmlTeacherData.asp")
params = {"UnitName" => "管理學院".encode('big5-uao'), "account" => "manage"}
uri.query = URI.encode_www_form(params)
res = Net::HTTP.get_response(uri)
teachers = User.all
teachers.each do |hash|
if hash.ntu_seq.present?
ntu_seq = hash.ntu_seq
conference_xml = Nokogiri::XML( \
open("http://ann.cc.ntu.edu.tw/Achv/xmlPaper.asp?Seq=#{ntu_seq}&type=C"))
#open("http://versatile.management.ntu.edu.tw/publication1/conference/#{ntuseq}.xml"))
@conference_papers = conference_xml.xpath("//Paper").map do |cp_node|
{
author: (cp_node>"Authors").text,
year: (cp_node>"PublishYear").text,
title: (cp_node>"PaperTitle").text,
conference: (cp_node>"PublishOn").text,
date: Date::MONTHNAMES[(cp_node>"PublishMonth").text.to_i],
location: (cp_node>"Location").text,
remarks: (cp_node>"Remarks").text
}
end
if @conference_papers.present?
@conference_papers.each do |b|
@conference_paper = WritingConference.new
@conference_paper.authors = b[:author]
if b[:title].blank?
@conference_paper.paper_title = b[:title]
else
@conference_paper.paper_title = "No Title Present"
end
@conference_paper.year = b[:year]
@conference_paper.note = b[:remarks]
@conference_paper.create_user_id = hash.id
@conference_paper.save!
end
else
puts "No conference by Teacher"
end
end
end
end
def get_journal_paper_data
uri = URI("http://ann.cc.ntu.edu.tw/Achv/xmlTeacherData.asp")
params = {"UnitName" => "管理學院".encode('big5-uao'), "account" => "manage"}
uri.query = URI.encode_www_form(params)
res = Net::HTTP.get_response(uri)
teachers = User.all
teachers.each do |hash|
if hash.ntu_seq.present?
ntu_seq = hash.ntu_seq
paper_xml = Nokogiri::XML( \
#open("http://versatile.management.ntu.edu.tw/publication1/journal/#{ntuseq}.xml"))
open("http://ann.cc.ntu.edu.tw/Achv/xmlPaper.asp?Seq=#{ntu_seq}&type=J"))
@journal_papers = paper_xml.xpath("//Paper").map do |paper_node|
{
author: (paper_node>"Authors").text,
year: (paper_node>"PublishYear").text,
title: (paper_node>"PaperTitle").text,
journal: (paper_node>"PublishOn").text,
volume:(paper_node>"Volume").text,
volumeno:(paper_node>"VolumeNo").text,
beginpage:(paper_node>"BeginPage").text,
endpage:(paper_node>"EndPage").text,
subgroup:(paper_node>"subgroup").text,
remarks: (paper_node>"Remarks").text,
cate: ((paper_node>"subgroup")>"group").text
}
end
if @journal_papers.present?
@journal_papers.each do |b|
@journal_paper = WritingJournal.new
@journal_paper.authors = b[:author]
if b[:title].blank?
@journal_paper.paper_title = b[:title]
else
@journal_paper.paper_title = "No Title Present"
end
@journal_paper.year = b[:year]
@journal_paper.note = b[:remarks]
@journal_paper.vol_no = b[:volumeno]
@journal_paper.form_to_start = b[:beginpage]
@journal_paper.form_to_end = b[:endpage]
@journal_paper.create_user_id = hash.id
@journal_paper.save!
end
else
puts "No journal paper by Teacher"
end
end
end
end
def get_announcement_data
uri = URI("https://tp.rulingcom.com:33333/announcements.xml")
#params = {"UnitName" => "管理學院".encode('big5-uao'), "account" => "manage"}
#uri.query = URI.encode_www_form(params)
res = Net::HTTP.get_response(uri)
@announcement_data = Hash.from_xml(res.body)
@announcements = @announcement_data["objects"]
@announcements.each do |hash|
@bulletin = Bulletin.new
I18n.locale = :zh_tw
if hash['announcement_title_zh_tw'].blank?
@bulletin.title = hash['announcement_title_en']
@bulletin.text = hash['announcement_content_zh_tw']
elsif hash['announcement_title_zh_tw'].blank? && hash['announcement_title_en'].blank?
@bulletin.title = "Please Fill the Name"
@bulletin.text = hash['announcement_content_zh_tw']
else
@bulletin.title = hash['announcement_title_zh_tw']
@bulletin.text = hash['announcement_content_zh_tw']
end
I18n.locale = :en
if hash['announcement_title_en'].blank?
@bulletin.title = hash['announcement_zh_tw']
@bulletin.text = hash['announcement_content_en']
elsif hash['announcement_title_zh_tw'].blank? && hash['announcement_title_en'].blank?
@bulletin.first_name = "Please Fill the Name"
@bulletin.text = hash['announcement_content_en']
else
@bulletin.first_name = hash['announcement_title_en']
@bulletin.text = hash['announcement_content_en']
end
@bulletin.save!
end
end
# teachers.each do |hash|
# if hash.ntu_seq.present?
# ntu_seq = hash.ntu_seq
# books_xml = Nokogiri::XML( \
# open("http://ann.cc.ntu.edu.tw/Achv/xmlBook.asp?Seq=#{ntu_seq}"))
# @books = books_xml.xpath("//Book").map do |book_node|
# {
# author: (book_node>"Authors").text,
# year: (book_node>"PublishYear").text,
# title: (book_node>"DocTitle").text,
# remarks: (book_node>"Remarks").text,
# publisher: (book_node>"Publisher").text,
# book_title: (book_node>"BookTitle").text
# }
# end
# if @books.present?
# @books.each do |b|
# @book = WritingBook.new
# @book.authors = b[:author]
# @book.paper_title = b[:title]
# @book.book_title = b[:book_title]
# @book.year = b[:year]
# @book.note = b[:remarks]
# @book.publisher = b[:publisher]
# @book.create_user_id = hash.id
# @book.save
# end
# else
# puts "No books by Teacher"
# end
# end
# end
#end
end

View File

@ -18,6 +18,8 @@ class User
field :office_tel
field :cache_dept,type: Hash
field :status_record,type: Hash
field :ntu_seq
#validates :ntu_seq, :uniqueness => true
has_and_belongs_to_many :approving_apps, class_name: 'AuthApproval', inverse_of: 'authorized_users'
has_and_belongs_to_many :managing_apps, class_name: 'AuthManager', inverse_of: 'authorized_users'

View File

@ -0,0 +1 @@
<p>Successfully Journal Paper Data!</p>