From 7990d4388c60517775552b225aa93697bb18fd92 Mon Sep 17 00:00:00 2001 From: saurabhbhatia Date: Wed, 11 Sep 2013 09:54:07 +0800 Subject: [PATCH] Import Announcements, Journal Paper, Conference Data, book data Conflicts: app/models/user/user.rb Updated import data controller to check for blank user_id Updated import data controller to check the absense of title data Updated route to get announcement data Conflicts: config/routes.rb Updated import data controller Updated import data controller to import data correctly Added method for importing page data Updated import data with pages working Updated Import data with page data importing successfully Updated import controller Updated import data to get complete teacher and announcement data --- .../admin/import_data_controller.rb | 362 +++++++++++++++--- app/controllers/admin/pages_controller.rb | 2 +- app/models/user/user.rb | 2 + .../get_announcement_data.html.erb | 1 + .../get_journal_paper_data.html.erb | 1 + .../admin/import_data/get_page_data.html.erb | 1 + .../admin/users_new_interface/index.html.erb | 1 + config/routes.rb | 8 + 8 files changed, 320 insertions(+), 58 deletions(-) create mode 100644 app/views/admin/import_data/get_announcement_data.html.erb create mode 100644 app/views/admin/import_data/get_journal_paper_data.html.erb create mode 100644 app/views/admin/import_data/get_page_data.html.erb diff --git a/app/controllers/admin/import_data_controller.rb b/app/controllers/admin/import_data_controller.rb index bda2f9ed7..c4f25da1f 100644 --- a/app/controllers/admin/import_data_controller.rb +++ b/app/controllers/admin/import_data_controller.rb @@ -4,91 +4,339 @@ require 'net/http' require 'open-uri' class Admin::ImportDataController < OrbitBackendController + helper Admin::PagePartsHelper + include Admin::FrontendWidgetInterface def get_teacher_data - uri = URI("https://15fc4b.ngrok.com/teachers.xml") + uri = URI("https://localhost:8000/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 + @i = 5000 @teachers.each do |hash| - @roles = Role.all + # @roles = Role.skip(1).first + @roles = Role.all @teacher = User.new I18n.locale = :zh_tw - if hash['teacher_zh_tw'].blank? - @teacher.first_name = hash['teacher_en'] - elsif hash['teacher_zh_tw'].blank? && hash['teacher_en'].blank? - @teacher.first_name = "Please Fill the Name" + if hash['teacher_zh_tw'].blank? && hash['teacher_en'].blank? + @teacher.first_name = "Please Fill the Name" + elsif hash['teacher_zh_tw'].blank? && !hash['teacher_en'].blank? + @teacher.first_name = hash['teacher_en'] else - @teacher.first_name = hash['teacher_zh_tw'] + @teacher.first_name = hash['teacher_zh_tw'] end I18n.locale = :en - if hash['teacher_en'].blank? + if hash['teacher_zh_tw'].blank? && hash['teacher_en'].blank? + @teacher.first_name = "Please Fill the Name" + elsif hash['teacher_en'].blank? && !hash['teacher_zh_tw'].blank? @teacher.first_name = hash['teacher_zh_tw'] - elsif hash['teacher_zh_tw'].blank? && hash['teacher_en'].blank? - @teacher.first_name = "Please Fill the Name" - else - @teacher.first_name = hash['teacher_en'] + elsif !hash['teacher_en'].blank? && hash['teacher_zh_tw'].blank? + @teacher.first_name = hash['teacher_en'] end #@teacher.first_name = hash['teacher_en'] @teacher.ntu_seq = hash['ntu_seq'] - @teacher.role_ids = ["#{@roles.first.id}"] + @teacher.role_ids = ["#{@roles.skip(1).first.id}"] @teacher.password = "testpass" @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? && hash['teacher_en'].blank? + @teacher.user_id = "defaultuser" + elsif hash['teacher_en'].blank? + @teacher.user_id = hash['teacher_zh_tw'] + elsif hash['teacher_zh_tw'] + @teacher.user_id = hash['teacher_en'] + 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 - # 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_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 + I18n.locale = :zh_tw + @book.authors = b[:author] + @book.paper_title = b[:title] + @book.book_title = b[:book_title] + @book.note = b[:remarks] + @book.publisher = b[:publisher] + I18n.locale = :en + @book.authors = b[:author] + @book.paper_title = b[:title] + @book.book_title = b[:book_title] + @book.note = b[:remarks] + @book.publisher = b[:publisher] + @book.year = b[:year] + @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 + I18n.locale = :zh_tw + @conference_paper.authors = b[:author] + if b[:title].blank? + @conference_paper.paper_title = "No Title Present" + else + @conference_paper.paper_title = b[:title] + end + @conference_paper.note = b[:remarks] + I18n.locale = :en + @conference_paper.authors = b[:author] + if b[:title].blank? + @conference_paper.paper_title = "No Title Present" + else + @conference_paper.paper_title = b[:title] + end + @conference_paper.note = b[:remarks] + @conference_paper.year = b[:year] + @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 + I18n.locale = :zh_tw + @journal_paper.authors = b[:author] + if b[:title].blank? + @journal_paper.paper_title = "No Title Present" + else + @journal_paper.paper_title = b[:title].first + end + @journal_paper.note = b[:remarks] + I18n.locale = :en + @journal_paper.authors = b[:author] + if b[:title].blank? + @journal_paper.paper_title = "No Title Present" + else + @journal_paper.paper_title = b[:title].first + end + @journal_paper.note = b[:remarks] + @journal_paper.year = b[:year] + @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://localhost:8000/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_zh_tw'].blank? && hash['announcement_title_en'].blank? + @bulletin.title = "Please Fill the Name" + @bulletin.text = hash['announcement_content_en'] + + elsif hash['announcement_title_en'].blank? + @bulletin.title = hash['announcement_zh_tw'] + @bulletin.text = hash['announcement_content_en'] + + elsif hash['announcement_title_zh_tw'].blank? + @bulletin.title = hash['announcement_title_en'] + @bulletin.text = hash['announcement_content_en'] + end + @bulletin.category_id = "51d2a16438178423c2000001" + @bulletin.is_pending = true + + @bulletin.save! + end + end + + def get_page_data + f = File.open("/home/rwub/orbit-db/ntu_mb/pages/management_pages.xml") + page_xml = Nokogiri::XML(f) + #open("http://versatile.management.ntu.edu.tw/publication1/conference/#{ntuseq}.xml")) + @pages = page_xml.xpath("//management-page").map do |cp_node| + { + menu_title: (cp_node>"menu-title").text, + content: (cp_node>"content").text + } + end + + if @pages.present? + @i=0 + @pages.each do |b| + + get_variables_for_new + @page = Page.new + + @page.parent = "4f45f3b9e9d02c5db900005d" + @page.design = "50ac424983e75219d2000021" + @page.theme_id = "50ac424a83e75219d2000025" + @page.menu_enabled_for= ["en", "zh_tw", ""] + @page.enabled_for= ["en", "zh_tw", ""] + @page.is_published = false + if b[:menu_title].blank? + @page.title = 'No Title Present' + @i += 1 + @page.name = "#{@i}Page" + else + @i += 1 + @page.title = b[:menu_title] + @page.name = "#{@i}Page" + end + if b[:content].blank? + @page.content = "No Content Present" + else + @page.content = b[:content] + end + @page.save! + end + else + puts "No Page Data" + end + end + + + def get_variables_for_new + @designs = Design.all.entries + @themes = Design.first.themes + @module_apps = ModuleApp.for_frontend_select + @app_frontend_urls = nil + @categories = nil + @tags = nil + @page_frontend_data_counts = nil + @frontend_styles = nil + @selected={ + :design => @designs.first, + :theme=> @themes.first, + :module_app=>nil,#@module_apps.first + :app_frontend_url=> nil, #@module_apps.first + :category=>nil, + :tag=>nil, + :page_frontend_data_count=>nil, + :frontend_style => nil + } + end + + end diff --git a/app/controllers/admin/pages_controller.rb b/app/controllers/admin/pages_controller.rb index 7a966ffe9..b0fe41f21 100644 --- a/app/controllers/admin/pages_controller.rb +++ b/app/controllers/admin/pages_controller.rb @@ -95,7 +95,7 @@ class Admin::PagesController < Admin::ItemsController if @item.module_app && @item.module_app.key == 'page_content' @item.page_contexts.build(:create_user_id => current_user.id, :update_user_id => current_user.id ) end - + if @item.save flash.now[:notice] = t('create.success.page') respond_to do |format| diff --git a/app/models/user/user.rb b/app/models/user/user.rb index b726c0f3b..0dee5dad2 100644 --- a/app/models/user/user.rb +++ b/app/models/user/user.rb @@ -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' diff --git a/app/views/admin/import_data/get_announcement_data.html.erb b/app/views/admin/import_data/get_announcement_data.html.erb new file mode 100644 index 000000000..9751735f2 --- /dev/null +++ b/app/views/admin/import_data/get_announcement_data.html.erb @@ -0,0 +1 @@ +

Successfully Imported Announcement Data!

\ No newline at end of file diff --git a/app/views/admin/import_data/get_journal_paper_data.html.erb b/app/views/admin/import_data/get_journal_paper_data.html.erb new file mode 100644 index 000000000..cd34dce59 --- /dev/null +++ b/app/views/admin/import_data/get_journal_paper_data.html.erb @@ -0,0 +1 @@ +

Successfully Journal Paper Data!

\ No newline at end of file diff --git a/app/views/admin/import_data/get_page_data.html.erb b/app/views/admin/import_data/get_page_data.html.erb new file mode 100644 index 000000000..e3adf77ab --- /dev/null +++ b/app/views/admin/import_data/get_page_data.html.erb @@ -0,0 +1 @@ +

Successfully Imported Page Data!

diff --git a/app/views/admin/users_new_interface/index.html.erb b/app/views/admin/users_new_interface/index.html.erb index b72e62d41..8b0ecee95 100644 --- a/app/views/admin/users_new_interface/index.html.erb +++ b/app/views/admin/users_new_interface/index.html.erb @@ -21,6 +21,7 @@ +