From d9bf2c7ddc04316b484165c1192078f459857a0a Mon Sep 17 00:00:00 2001 From: manson Date: Tue, 15 Jul 2014 17:43:22 +0800 Subject: [PATCH] Add import_journals, conferences --- app/controllers/admin/import_controller.rb | 171 +++++++++++++++++++++ 1 file changed, 171 insertions(+) diff --git a/app/controllers/admin/import_controller.rb b/app/controllers/admin/import_controller.rb index 1018189..872c85b 100644 --- a/app/controllers/admin/import_controller.rb +++ b/app/controllers/admin/import_controller.rb @@ -902,6 +902,177 @@ class Admin::ImportController < OrbitAdminController I18n.locale = original_language render :json => {"succes" => true}.to_json 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<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< 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<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<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< 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 def page_present?(page)