diff --git a/app/controllers/admin/import_controller.rb b/app/controllers/admin/import_controller.rb index 288e2d0..1018189 100644 --- a/app/controllers/admin/import_controller.rb +++ b/app/controllers/admin/import_controller.rb @@ -683,45 +683,225 @@ class Admin::ImportController < OrbitAdminController end def import_books - uri = URI.parse("http://192.168.1.5/DEMO24_Manson/R2/export/?module=plugin&id=1&plugin=book") + 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=book") 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) books = data["books"] - member = MemberProfile.where(:rss2_id => "1").first + member = MemberProfile.where(:rss2_id => id).first books.each do |book| author_types = book["author_type"] book_types = book["book_types"] - - new_book = Book.new(:book_title_translations => {"en" => book["book_title"]["en"], "zh_tw" => book["book_title"]["zh-tw"]}, :extracted_chapters_translations => {"en" => book["extracted_chapters"]["en"], "zh_tw" => book["extracted_chapters"]["zh-tw"]}, :publisher_translations => {"en" => book["publishers"]["en"], "zh_tw" => book["publishers"]["zh-tw"]}, :editor_translations => {"en" => book["editor"]["en"], "zh_tw" => book["editor"]["zh-tw"]}, :year => book["year"], :language => book["language"].sub("-","_"), :pages => book["number_of_pages"], :isbn => book["issn"], :publication_date => book["publication_date"], :url => book["reference_url"], :note => book["note"], :rss2_id => book["rss2_id"]) - new_book.member_profile = member - book_file = new_book.book_files.new - book_file.remote_member_book_file_url = book["file"]["file"] - book_file.title_translations = {"en" => book["file"]["name"], "zh_tw" => book["file"]["name"]} - book_file.save - author_types.each do |author| - bat = BookAuthorType.where(:title => author).first - if bat.nil? - bat = BookAuthorType.new(:title_translations => {"en" => author, "zh_tw" => author}) - bat.save + old_book = Book.where(:rss2_id => book["rss2_id"]).first + if old_book.nil? + new_book = Book.new(:book_title_translations => {"en" => book["book_title"]["en"], "zh_tw" => book["book_title"]["zh-tw"]}, :extracted_chapters_translations => {"en" => book["extracted_chapters"]["en"], "zh_tw" => book["extracted_chapters"]["zh-tw"]}, :publisher_translations => {"en" => book["publishers"]["en"], "zh_tw" => book["publishers"]["zh-tw"]}, :editor_translations => {"en" => book["editor"]["en"], "zh_tw" => book["editor"]["zh-tw"]}, :year => book["year"], :language => book["language"].sub("-","_"), :pages => book["number_of_pages"], :isbn => book["issn"], :publication_date => book["publication_date"], :url => book["reference_url"], :note => book["note"], :rss2_id => book["rss2_id"]) + new_book.member_profile = member + book_file = new_book.book_files.new + book_file.remote_member_book_file_url = book["file"]["file"] + book_file.title_translations = {"en" => book["file"]["name"], "zh_tw" => book["file"]["name"]} + book_file.save + author_types.each do |author| + bat = BookAuthorType.where(:title => author).first + if bat.nil? + bat = BookAuthorType.new(:title_translations => {"en" => author, "zh_tw" => author}) + bat.save + end + new_book.book_author_types << bat end - new_book.book_author_types << bat - end - book_types.each do |type| - bt = BookType.where(:title => type["zh-tw"]).first - if bt.nil? - bt = BookType.new(:title_translations => {"en" => type["en"], "zh_tw" => type["zh-tw"]}) - bt.save + book_types.each do |type| + bt = BookType.where(:title => type["zh-tw"]).first + if bt.nil? + bt = BookType.new(:title_translations => {"en" => type["en"], "zh_tw" => type["zh-tw"]}) + bt.save + end + new_book.book_type = bt end - new_book.book_type = bt + new_book.save end - new_book.save end + I18n.locale = original_language render :json => {"succes" => true}.to_json end + def import_projects + 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=project") + 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) + projects = data["projects"] + member = MemberProfile.where(:rss2_id => id).first + projects.each do |project| + old_project = Project.where(:rss2_id => project["rss2_id"]).first + if old_project.nil? + new_project = Project.new(:project_title_translations => {"en" => project["project_title"]["en"], "zh_tw" => project["project_title"]["zh-tw"]},:job_title_translations => {"en" => project["job_title"]["en"],"zh_tw" => project["job_title"]["zh-tw"]}, :participator_translations => {"en" => project["participant"]["en"],"zh_tw" => project["participant"]["zh-tw"]}, :unit_translations => {"en" => project["unit"]["en"],"zh_tw" => project["unit"]["zh-tw"]},:year => project["year"], :language => project["language"].sub("-","_"), :period_start_date => Date.strptime(project["start_date"], '%Y-%m'), :period_end_date => Date.strptime(project["end_date"], '%Y-%m'), :url => project["reference_url"], :note_translations => {"en" => project["note"]["en"],"zh_tw" => project["note"]["zh-tw"]}, :rss2_id => project["rss2_id"]) + pc = ProjectType.where(:title => project["project_categories"]["zh-tw"]).first + if pc.nil? + pc = ProjectType.new(:title_translations => {"en" => project["project_categories"]["en"], "zh_tw" => project["project_categories"]["zh-tw"]}) + pc.save + end + project_file = new_project.project_files.new + project_file.remote_file_url = project["file"]["file"] + project_file.title_translations = {"en" => project["file"]["name"], "zh_tw" => project["file"]["name"]} + project_file.save + new_project.project_type = pc + new_project.member_profile = member + new_project.save + end + end + I18n.locale = original_language + render :json => {"succes" => true}.to_json + end + + def import_patents + 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=patent") + 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) + patents = data["patents"] + member = MemberProfile.where(:rss2_id => id).first + patents.each do |patent| + old_patent = Patent.where(:rss2_id => patent["rss2_id"]).first + if old_patent.nil? + new_patent = Patent.new(:patent_title_translations => {"en" => patent["patent_title"]["en"], "zh_tw" => patent["patent_title"]["zh-tw"]}, :authors_translations => {"en" => patent["patent_author"]["en"], "zh_tw" => patent["patent_author"]["zh-tw"]},:patent_country_translations => {"en" => patent["patent_country"]["en"], "zh_tw" => patent["patent_country"]["zh-tw"]}, :year => patent["year"], :language => patent["language"], :patent_no => patent["patent_number"], :publish_date => Date.strptime(patent["date_of_publication"], '%Y-%m'), :rss2_id => patent["rss2_id"]) + patent_categories = patent["patent_categories"] + patent_categories.each do |pc| + pt = PatentType.where(:title => pc["zh-tw"]).first + if pt.nil? + pt = PatentType.new(:title_translations => {"en" => pc["en"], "zh_tw" => pc["zh-tw"]}) + pt.save + end + new_patent.patent_types << pt + end + + new_patent.member_profile = member + new_patent.save + end + end + I18n.locale = original_language + render :json => {"succes" => true}.to_json + end + + def import_research + 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=research") + 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) + researches = data["researches"] + member = MemberProfile.where(:rss2_id => id).first + researches.each do |research| + old_research = Research.where(:rss2_id => research["rss2_id"]).first + if old_research.nil? + new_research = Research.new(:research_title_translations => {"en" => research["title"]["en"],"zh_tw" => research["title"]["zh-tw"]},:language => research["language"], :publish_date => research["date_of_publication"], :rss2_id => research["rss2_id"]) + research_file = new_research.research_files.new + research_file.remote_file_url = research["file"]["file"] + research_file.title_translations = {"en" => research["file"]["name"], "zh_tw" => research["file"]["name"]} + research_file.save + new_research.member_profile = member + new_research.save + end + end + I18n.locale = original_language + render :json => {"succes" => true}.to_json + end + + def import_diplomas + 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=diploma") + 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) + diplomas = data["diplomas"] + member = MemberProfile.where(:rss2_id => id).first + diplomas.each do |diploma| + old_diploma = Diploma.where(:rss2_id => diploma["rss2_id"]).first + if old_diploma.nil? + new_diploma = Diploma.new(:school_name_translations => {"en" => diploma["school_name"]["en"], "zh_tw" => diploma["school_name"]["zh-tw"]}, + :country_translations => {"en" => diploma["country"]["en"], "zh_tw" => diploma["country"]["zh-tw"]}, :department_translations => {"en" => diploma["department"]["en"], "zh_tw" => diploma["department"]["zh-tw"]}, :degree_translations => {"en" => diploma["degree"]["en"], "zh_tw" => diploma["degree"]["zh-tw"]}, :language => diploma["language"], :start_date => Date.strptime(diploma["start_date"], '%Y-%m'), :end_date => Date.strptime(diploma["end_date"], '%Y-%m'), :rss2_id => diploma["rss2_id"]) + new_diploma.member_profile = member + new_diploma.save + end + end + I18n.locale = original_language + render :json => {"succes" => true}.to_json + end + + def import_experiences + 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=experience") + 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) + experiences = data["experiences"] + member = MemberProfile.where(:rss2_id => id).first + experiences.each do |experience| + old_experience = Experience.where(:rss2_id => experience["rss2_id"]).first + if old_experience.nil? + new_experience = Experience.new(:organizationt_title_translations => {"en" => experience["organization_title"]["en"], "zh_tw" => experience["organization_title"]["zh-tw"]}, :department_translations => {"en" => experience["department"]["en"], "zh_tw" => experience["department"]["zh-tw"]}, :job_title_translations => {"en" => experience["job_title"]["en"], "zh_tw" => experience["job_title"]["zh-tw"]}, :language => experience["language"], :start_date => Date.strptime(experience["start_date"], '%Y-%m'), :end_date => Date.strptime(experience["end_date"], '%Y-%m'), :rss2_id => experience["rss2_id"]) + new_experience.member_profile = member + new_experience.save + end + end + I18n.locale = original_language + render :json => {"succes" => true}.to_json + end + + def import_honors + 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=honor") + 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) + honors = data["honors"] + member = MemberProfile.where(:rss2_id => id).first + honors.each do |honor| + old_honor = Honor.where(:rss2_id => honor["rss2_id"]).first + if old_honor.nil? + new_honor = Honor.new(:year => honor["year"], :award_name_translations => {"en" => honor["award_name"]["en"], "zh_tw" => honor["award_name"]["zh-tw"]}, :awarding_unit_translations => {"en" => honor["award_unit"]["en"], "zh_tw" => honor["award_unit"]["zh-tw"]}, :language => honor["language"], :rss2_id => honor["rss2_id"]) + pc = HonorType.where(:title => honor["honor_categories"]["zh-tw"]).first + if pc.nil? + pc = HonorType.new(:title_translations => {"en" => honor["honor_categories"]["en"], "zh_tw" => honor["honor_categories"]["zh-tw"]}) + pc.save + end + new_honor.honor_type = pc + new_honor.member_profile = member + new_honor.save + end + end + I18n.locale = original_language + render :json => {"succes" => true}.to_json + end private def page_present?(page) diff --git a/config/routes.rb b/config/routes.rb index 65da508..38ef605 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -223,7 +223,7 @@ Orbit::Application.routes.draw do post "import/rss2_album_image" => "import#rss2_album_image" post "import/rss2_links" => "import#rss2_links" post "import/rss2_members" => "import#rss2_members" - get "import/import_books" => "import#import_books" + get "import/import_honors" => "import#import_honors" end get 'mobile', to: 'pages#home'