Parent

Class/Module Index [+]

Quicksearch

Lva

Schema Information

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

Constants

ERLAUBTE_TYPEN

Public Class Methods

update_multiple_with_modul(hash,modul) click to toggle source
# 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

Public Instance Methods

add_semesters() click to toggle source
# 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
full_name() click to toggle source
# File app/models/lva.rb, line 68
def full_name
  return self.typ_n + ' ' + self.name
  end
load_tissdata() click to toggle source
# 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
read_et_forum() click to toggle source
# 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
tisshash(semester) click to toggle source

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
title() click to toggle source
# File app/models/lva.rb, line 65
def title
  self.name
end
typ_n() click to toggle source

(zumindest eines)

# File app/models/lva.rb, line 62
def typ_n
  typ=="andere" ? "" : typ
end
update_multiple(hash) click to toggle source
# 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

[Validate]

Generated with the Darkfish Rdoc Generator 2.