ActiveRecord::Base
Table name: lvas
id :integer not null, primary key name :string(255) desc :text ects :decimal lvanr :string(255) stunden :decimal created_at :datetime not null updated_at :datetime not null modul_id :integer semester_id :integer
# File app/models/lva.rb, line 240 def self.update_multiple_with_modul(hash,modul) newlvas=[] hash.each do |i,l| lva=Lva.where(:lvanr=>l["lvanr"]).first if lva.nil? lva=Lva.new(l) if lva.nil? lva.modul<< modul lva.modul.uniq! lva.name=l["name"] lva.lvanr=l["lvanr"] lva.ects=l["ects"] descr = l["desc"] lva.desc= (descr.empty?) ? "<div></div>" : descr lva.semester=Semester.where(:id=>l["semester_ids"].map(&:to_i)) lva.stunden=l["stunden"] pr =l["pruefungsinformation"] lva.pruefungsinformation= (pr.empty?) ? "<div></div>" : pr lva.lernaufwand=l["lernaufwand"] lva.typ=l["typ"] lva.save newlvas<< lva # end newlvas end
# File app/models/lva.rb, line 71 def add_semesters # Diese Methode fügt die Instanz automatisch zu allen Studien als "Ohne Semesterempfehlung" (Semester 0) zu, bei denen die Instanz im Studium noch nicht vorkommt. for m in self.modul for mg in m.modulgruppen # Über alle Module und alle Modulgruppen iterieren hits = mg.studium.semester.all.map{|x| x.lvas}.map{|x| x.find_by_id(self.id)}.compact # Alle einträge in allen semestern mit gleicher LVa-ID suchen und alle nils entfernen if hits.empty? # wurde gar kein eintrag gefunden ? self.semester << mg.studium.semester.where(:nummer => 0) # auf nummer null eintragen end end end end
# File app/models/lva.rb, line 68 def full_name return self.typ_n + ' ' + self.name end
# File app/models/lva.rb, line 116 def load_tissdata urlp="https://tiss.tuwien.ac.at/api/course/"+ lvanr.to_s.gsub(".","")+"-" begin url= urlp+Time.now.year.to_s+"W" hash=Hash.from_xml(open(url).read)["tuvienna"] rescue OpenURI::HTTPError => e begin url= urlp+Time.now.year.to_s+"S" hash=Hash.from_xml(open(url).read)["tuvienna"] rescue OpenURI::HTTPError => e begin url= urlp+(Time.now.year-1).to_s+"W" hash=Hash.from_xml(open(url).read)["tuvienna"] rescue OpenURI::HTTPError => e end end end # begin # person=[] # if hash["course"]["lecturers"]["oid"].is_a? String # person = @hash["course"]["lecturers"]["oid"] # else # hash["course"]["lecturers"]["oid"].each do |pid| # person << Hash.from_xml(open("https://tiss.tuwien.ac.at/adressbuch/adressbuch/person_via_oid/" + pid.to_s + ".xml").read)["tuvienna"]["person"] # end # end self.name=hash["course"]["title"]["de"] self.pruefungsinformation = hash["course"]["examinationModalities"][I18n.locale.to_s].to_s unless hash["course"]["examinationModalities"][I18n.locale.to_s].to_s.empty? self.desc= hash["course"]["objective"][I18n.locale.to_s]+"<p></p>"+hash["course"]["teachingContent"][I18n.locale.to_s] self.typ=hash["course"]["courseType"] self.stunden=hash["course"]["weeklyHours"] #hash["course"]["url"] if hash["course"]["lecturers"]["oid"].is_a? Array hash["course"]["lecturers"]["oid"].each do |oid| lecturer= self.lecturers.where(:oid=>oid).first if lecturer.nil? lecturer=Lecturer.where(:oid=>oid).first if lecturer.nil? logger.debug "Neuen Lecturer laden" lecturer=Lecturer.new lecturer.oid=oid lecturer.load_tissdata if lecturer.save self.lecturers << lecturer else logger.fatal "Invaliden Lecturer erzeugt" end else logger.debug "Lecturer hinzufügen" self.lecturers << lecturer end end end else oid= hash["course"]["lecturers"]["oid"] lecturer= self.lecturers.where(:oid=>oid).first if lecturer.nil? lecturer=Lecturer.where(:oid=>oid).first if lecturer.nil? logger.info "Neuen Lecturer laden" lecturer=Lecturer.new lecturer.oid=oid lecturer.load_tissdata if lecturer.save self.lecturers << lecturer else logger.fatal "Invaliden Lecturer erzeugt" end else logger.info "Lecturer hinzufügen" lecturer.load_tissdata lecturer.save self.lecturers << lecturer end end end end
# File app/models/lva.rb, line 266 def read_et_forum lva=self url=lva.forumlink ans = JSON.parse(`python #{Rails.root}/bin/downloadlogin.py #{url}`) ans.each do |a| if Crawlobject.where(:objhash=>Digest::SHA512.hexdigest(a.to_json), :objtype=>1).count ==0 aa = Crawlobject.new(:raw=>a.to_json) aa.objtype=1 aa.parse_object aa.calc_hash aa.something=lva if Crawlobject.where(:objhash2=>aa.objhash2, :objtype=>1).count==0 aa.save else aa=Crawlobject.where(:objhash2=>aa.objhash2).first aa.raw=a.to_json aa.parse_object aa.calc_hash aa.save end end end end
Lade Daten aus TISS und füge diese in die Datenbank ein.
# File app/models/lva.rb, line 87 def tisshash(semester) url= "https://tiss.tuwien.ac.at/api/course/"+ lvanr.to_s.gsub(".","")+semester hash=Hash.from_xml(open(url).read)["tuvienna"] end
# File app/models/lva.rb, line 92 def tisslink urlp="https://tiss.tuwien.ac.at/course/courseDetails.xhtml?courseNr="+ lvanr.to_s.gsub(".","")+"&" urlp1 = "https://tiss.tuwien.ac.at/api/course/"+ lvanr.to_s.gsub(".","")+"-" begin url= urlp+"semester="+Time.now.year.to_s+"W" hash=Hash.from_xml(open(urlp1+Time.now.year.to_s+"W").read)["tuvienna"] rescue OpenURI::HTTPError => e begin url= urlp+"semester="+Time.now.year.to_s+"S" hash=Hash.from_xml(open(urlp1+Time.now.year.to_s+"S").read)["tuvienna"] rescue OpenURI::HTTPError => e begin url= urlp+"semester="+(Time.now.year-1).to_s+"W" hash=Hash.from_xml(open(urlp1+(Time.now.year-1).to_s+"W").read)["tuvienna"] rescue OpenURI::HTTPError => e end end rescue => e end url end
(zumindest eines)
# File app/models/lva.rb, line 62 def typ_n typ=="andere" ? "" : typ end
# File app/models/lva.rb, line 205 def update_multiple(hash) newlvas=[] params["lvas"].each do |i,l| lva=Lva.where(:lvanr=>l["lvanr"]).first if lva.nil? lva=Lva.new(l) if lva.nil? lva.name=l["name"] lva.lvanr=l["lvanr"] lva.ects=l["ects"] descr = l["desc"] lva.desc= (descr.empty?) ? "<div></div>" : descr lva.semester=Semester.where(:id=>l["semester_ids"].map(&:to_i)) lva.stunden=l["stunden"] pr =l["pruefungsinformation"] lva.pruefungsinformation= (pr.empty?) ? "<div></div>" : pr lva.lernaufwand=l["lernaufwand"] lva.typ=l["typ"] lva.save newlvas<<lva # end newlvas end
Generated with the Darkfish Rdoc Generator 2.