Add import_journals, conferences

This commit is contained in:
manson 2014-07-15 17:43:22 +08:00
parent 23fdf6dc37
commit d9bf2c7ddc
1 changed files with 171 additions and 0 deletions

View File

@ -902,6 +902,177 @@ class Admin::ImportController < OrbitAdminController
I18n.locale = original_language I18n.locale = original_language
render :json => {"succes" => true}.to_json render :json => {"succes" => true}.to_json
end end
def import_journals
id = "1"
original_language = I18n.locale
I18n.locale = "zh_tw"
uri = URI.parse("http://192.168.1.5/DEMO24_Manson/R2/export/?module=plugin&id=#{id}&plugin=journal")
http = Net::HTTP.new(uri.host, uri.port)
request = Net::HTTP::Get.new(uri.request_uri)
response = http.request(request)
data = response.body
data = JSON.parse(data)
journals = data["jorunal_papers"]
member = MemberProfile.where(:rss2_id => id).first
journals.each do |rss2_journal|
data = {:rss2_id => rss2_journal["rss_id"],
:year => rss2_journal["year"],
:language => rss2_journal["language"].gsub('-','_'),
:vol_no => rss2_journal["volume_number"],
:issue_no => rss2_journal["issue_number"],
:form_to_start => rss2_journal["from_to"][0],
:form_to_end => rss2_journal["from_to"][1],
:total_pages => rss2_journal["total_pages"],
:isbn => rss2_journal["issn"],
:publication_date => Date.parse(rss2_journal["date_of_publication"].gsub('00','01')),
:url => rss2_journal["reference_url"],
:note => rss2_journal["note"],
:journal_title_translations => {
"en" => rss2_journal["journal_title"]["en"],
"zh_tw" => rss2_journal["journal_title"]["zh-tw"]},
:paper_title_translations => {
"en" => rss2_journal["paper_title"]["en"],
"zh_tw" => rss2_journal["paper_title"]["zh-tw"]}
}
journal = JournalPaper.where(:rss2_id => rss2_journal["rss_id"]).first
journal = JournalPaper.new() if journal.nil?
journal.update_attributes(data)
journal.journal_levels = []
rss2_journal["level_type"].each do |level|
paper_level = JournalLevel.where(:title=>level).first
if paper_level.nil?
paper_level = JournalLevel.new(:title_translations => {"en" => level, "zh_tw" => level})
paper_level.save
end
journal.journal_levels<<paper_level
end
journal.journal_paper_author_types = []
rss2_journal["author_type"].each do |type|
author_type = JournalPaperAuthorType.where(:title=>type).first
if author_type.nil?
author_type = JournalPaperAuthorType.new(:title_translations => {"en" => type, "zh_tw" => type})
author_type.save
end
journal.journal_paper_author_types<<author_type
end
journal.journal_paper_files.destroy_all
paper_file = journal.journal_paper_files.new
paper_file.remote_journal_file_url = rss2_journal["file"]["file"]
paper_file.title_translations = {"en" => rss2_journal["file"]["name"], "zh_tw" => rss2_journal["file"]["name"]}
paper_file.save rescue nil
journal.member_profile = member
journal.save
end
I18n.locale = original_language
render :json => {"succes" => true}.to_json
end
def import_conferences
id = "1"
original_language = I18n.locale
I18n.locale = "zh_tw"
uri = URI.parse("http://192.168.1.5/DEMO24_Manson/R2/export/?module=plugin&id=#{id}&plugin=conference")
http = Net::HTTP.new(uri.host, uri.port)
request = Net::HTTP::Get.new(uri.request_uri)
response = http.request(request)
data = response.body
data = JSON.parse(data)
conferences = data["conference_papers"]
member = MemberProfile.where(:rss2_id => id).first
conferences.each do |rss2_conference|
data = {:rss2_id => rss2_conference["rss_id"],
:year => rss2_conference["year"],
:language => rss2_conference["language"].gsub('-','_'),
:isi_number => rss2_conference["isi_number"],
:period_start_date => Date.parse(rss2_conference["start_date"].gsub('00','01')),
:period_end_date => Date.parse(rss2_conference["end_date"].gsub('00','01')),
:url => rss2_conference["reference_url"],
:isbn => rss2_conference["issn"],
:note => rss2_conference["note"],
:conference_title_translations => {
"en" => rss2_conference["conference_title"]["en"],
"zh_tw" => rss2_conference["conference_title"]["zh-tw"]},
:paper_title_translations => {
"en" => rss2_conference["paper_title"]["en"],
"zh_tw" => rss2_conference["paper_title"]["zh-tw"]},
:location_translations => {
"en" => rss2_conference["location"]["en"],
"zh_tw" => rss2_conference["location"]["zh-tw"]},
:authors_translations => {
"en" => rss2_conference["authors"],
"zh_tw" => rss2_conference["authors"]},
:sponsor_translations => {
"en" => rss2_conference["sponsor"]["en"],
"zh_tw" => rss2_conference["sponsor"]["zh-tw"]}
}
conference = WritingConference.where(:rss2_id => rss2_conference["rss_id"]).first
conference = WritingConference.new() if conference.nil?
conference.update_attributes(data)
conference.conference_paper_types = []
rss2_conference["paper_type"].each do |type|
paper_type = ConferencePaperType.where(:title=>type).first
if paper_type.nil?
paper_type = ConferencePaperType.new(:title_translations => {"en" => type, "zh_tw" => type})
paper_type.save
end
conference.conference_paper_types<<paper_type
end
conference.conference_paper_levels = []
rss2_conference["paper_level"].each do |level|
paper_level = ConferencePaperLevel.where(:title=>level).first
if paper_level.nil?
paper_level = ConferencePaperLevel.new(:title_translations => {"en" => level, "zh_tw" => level})
paper_level.save
end
conference.conference_paper_levels<<paper_level
end
conference.conference_author_types = []
rss2_conference["author_type"].each do |type|
author_type = ConferenceAuthorType.where(:title=>type).first
if author_type.nil?
author_type = ConferenceAuthorType.new(:title_translations => {"en" => type, "zh_tw" => type})
author_type.save
end
conference.conference_author_types<<author_type
end
conference.writing_conference_files.destroy_all
paper_file = conference.writing_conference_files.new
paper_file.remote_file_url = rss2_conference["file"]["file"]
paper_file.title_translations = {"en" => rss2_conference["file"]["name"], "zh_tw" => rss2_conference["file"]["name"]}
paper_file.save rescue nil
conference.member_profile = member
conference.save
end
I18n.locale = original_language
render :json => {"succes" => true}.to_json
end
private private
def page_present?(page) def page_present?(page)