diff options
Diffstat (limited to 'projects/devdashboard/app/models/herd.rb')
-rw-r--r-- | projects/devdashboard/app/models/herd.rb | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/projects/devdashboard/app/models/herd.rb b/projects/devdashboard/app/models/herd.rb new file mode 100644 index 0000000..f08a2be --- /dev/null +++ b/projects/devdashboard/app/models/herd.rb @@ -0,0 +1,41 @@ +require 'rexml/document' + +class Herd < ActiveRecord::Base + include REXML + + has_and_belongs_to_many :developers + + validates_presence_of :name + + HERDS_XML = '/home/nichoj/checkouts/gentoo/xml/htdocs/proj/en/metastructure/herds/herds.xml' + + def Herd.load_from_xml + file = File.new(HERDS_XML) + doc = Document.new(file) + root = doc.root + + root.elements.each('herd') do |herdnode| + namenode = herdnode.elements['name'] + emailnode = herdnode.elements['email'] + descriptionnode = herdnode.elements['description'] + projectnode = herdnode.elements['maintainingproject'] + + herd = Herd.new + herd.name = namenode.text + herd.email = emailnode.text unless emailnode.nil? + herd.description = descriptionnode.text unless descriptionnode.nil? + + # look for maintainers if not part of a project + if projectnode.nil? + herdnode.elements.each('maintainer') do |maintainer| + email = maintainer.elements['email'].text + developer = Developer.find_by_nickname(email.gsub /@gentoo\.org$/, '') + unless developer.nil? + herd.developers.push(developer) + end + end + end + herd.save! + end + end +end |