[69935] branches/gsoc10-mpwa

jrozner at macports.org jrozner at macports.org
Thu Jul 22 16:23:51 PDT 2010


Revision: 69935
          http://trac.macports.org/changeset/69935
Author:   jrozner at macports.org
Date:     2010-07-22 16:23:49 -0700 (Thu, 22 Jul 2010)
Log Message:
-----------
added trac ticket synching

Modified Paths:
--------------
    branches/gsoc10-mpwa/bin/add_ports
    branches/gsoc10-mpwa/mpwa/app/models/port.rb
    branches/gsoc10-mpwa/mpwa/app/views/ports/show.html.erb
    branches/gsoc10-mpwa/mpwa/db/schema.rb

Added Paths:
-----------
    branches/gsoc10-mpwa/mpwa/app/models/ticket.rb
    branches/gsoc10-mpwa/mpwa/db/migrate/20100722215328_create_tickets.rb
    branches/gsoc10-mpwa/mpwa/db/migrate/20100722221128_add_summary_to_tickets.rb
    branches/gsoc10-mpwa/mpwa/test/fixtures/tickets.yml
    branches/gsoc10-mpwa/mpwa/test/unit/ticket_test.rb

Modified: branches/gsoc10-mpwa/bin/add_ports
===================================================================
--- branches/gsoc10-mpwa/bin/add_ports	2010-07-22 22:56:07 UTC (rev 69934)
+++ branches/gsoc10-mpwa/bin/add_ports	2010-07-22 23:23:49 UTC (rev 69935)
@@ -1,14 +1,20 @@
 #!/usr/bin/env ruby
 require 'active_record'
+require 'trac4r'
 
 TIME_FILE = "/var/tmp/mpwa-sync"
 NEW_PORTS = "/Users/joe/Dev/gsoc10-mpwa/bin/new-ports"
 PORT_INDEX = "/opt/local/var/macports/sources/rsync.macports.org/release/ports"
 RAILS_ROOT = "/Users/joe/Dev/gsoc10-mpwa/mpwa"
+OPEN_STATUSES = ['new', 'reopened', 'assigned']
+TRAC_URL = "http://192.168.1.135/svn-helloworld/xmlrpc"
+TRAC_USER = "admin"
+TRAC_PASS = "turnkey"
 
 require File.expand_path(RAILS_ROOT + '/app/models/category.rb',  __FILE__)
 require File.expand_path(RAILS_ROOT + '/app/models/port.rb',  __FILE__)
 require File.expand_path(RAILS_ROOT + '/app/models/port_dependency.rb',  __FILE__)
+require File.expand_path(RAILS_ROOT + '/app/models/ticket.rb',  __FILE__)
 
 if File.exists?(TIME_FILE)
   $mtime = File.stat(TIME_FILE).mtime.to_i
@@ -21,6 +27,7 @@
 
 db_info = YAML.load_file(File.expand_path(RAILS_ROOT + '/config/database.yml',  __FILE__))
 ActiveRecord::Base.establish_connection(db_info['development'])
+trac = Trac.new(TRAC_URL, TRAC_USER, TRAC_PASS)
 
 fp = IO.popen("#{NEW_PORTS} -m #{$mtime} #{PORT_INDEX}")
 new_ports = fp.read.split("\n")
@@ -73,3 +80,25 @@
     end
   end
 end
+
+var = trac.tickets.changes(Time.at($mtime).to_datetime)
+tickets = var.map {|id| trac.tickets.get(id)}
+tickets.each do |ticket|
+  if ticket.instance_variables.include?(:@port)
+    port = Port.find_by_name(ticket.port)
+    if OPEN_STATUSES.include?(ticket.status)
+      unless (saved_ticket = port.tickets.find_by_ticket(ticket.id)).nil?
+        unless saved_ticket.summary == ticket.summary
+          saved_ticket = ticket.summary
+          saved_ticket.save
+        end
+      else
+        port.tickets.build({:ticket => ticket.id, :summary => ticket.summary}).save
+      end
+    else
+      unless (saved_ticket = port.tickets.find_by_ticket(ticket.id)).nil?
+        saved_ticket.destroy
+      end
+    end
+  end
+end

Modified: branches/gsoc10-mpwa/mpwa/app/models/port.rb
===================================================================
--- branches/gsoc10-mpwa/mpwa/app/models/port.rb	2010-07-22 22:56:07 UTC (rev 69934)
+++ branches/gsoc10-mpwa/mpwa/app/models/port.rb	2010-07-22 23:23:49 UTC (rev 69935)
@@ -2,6 +2,7 @@
   has_many :port_dependencies
   has_many :dependencies, :through => :port_dependencies
   has_many :comments
+  has_many :tickets
   has_one :category
   belongs_to :category
 

Added: branches/gsoc10-mpwa/mpwa/app/models/ticket.rb
===================================================================
--- branches/gsoc10-mpwa/mpwa/app/models/ticket.rb	                        (rev 0)
+++ branches/gsoc10-mpwa/mpwa/app/models/ticket.rb	2010-07-22 23:23:49 UTC (rev 69935)
@@ -0,0 +1,6 @@
+class Ticket < ActiveRecord::Base
+  belongs_to :port
+
+  validates_presence_of :port_id
+  validates_presence_of :ticket
+end

Modified: branches/gsoc10-mpwa/mpwa/app/views/ports/show.html.erb
===================================================================
--- branches/gsoc10-mpwa/mpwa/app/views/ports/show.html.erb	2010-07-22 22:56:07 UTC (rev 69934)
+++ branches/gsoc10-mpwa/mpwa/app/views/ports/show.html.erb	2010-07-22 23:23:49 UTC (rev 69935)
@@ -58,6 +58,15 @@
     </p>
   <% end %>
 
+  <div>
+    <h3>Open Tickets</h3>
+    <ul>
+      <% @port.tickets.each do |ticket| %>
+        <li><%= link_to ticket.summary %></li>
+      <% end %>
+    </ul>
+  </div>
+
   <% @port.comments.each do |comment| %>
     <div><%= h comment.body %></div>
   <% end %>

Added: branches/gsoc10-mpwa/mpwa/db/migrate/20100722215328_create_tickets.rb
===================================================================
--- branches/gsoc10-mpwa/mpwa/db/migrate/20100722215328_create_tickets.rb	                        (rev 0)
+++ branches/gsoc10-mpwa/mpwa/db/migrate/20100722215328_create_tickets.rb	2010-07-22 23:23:49 UTC (rev 69935)
@@ -0,0 +1,14 @@
+class CreateTickets < ActiveRecord::Migration
+  def self.up
+    create_table :tickets do |t|
+      t.integer :port_id
+      t.integer :ticket
+
+      t.timestamps
+    end
+  end
+
+  def self.down
+    drop_table :tickets
+  end
+end

Added: branches/gsoc10-mpwa/mpwa/db/migrate/20100722221128_add_summary_to_tickets.rb
===================================================================
--- branches/gsoc10-mpwa/mpwa/db/migrate/20100722221128_add_summary_to_tickets.rb	                        (rev 0)
+++ branches/gsoc10-mpwa/mpwa/db/migrate/20100722221128_add_summary_to_tickets.rb	2010-07-22 23:23:49 UTC (rev 69935)
@@ -0,0 +1,9 @@
+class AddSummaryToTickets < ActiveRecord::Migration
+  def self.up
+    add_column :tickets, :summary, :string
+  end
+
+  def self.down
+    remove_column :tickets, :summary
+  end
+end
\ No newline at end of file

Modified: branches/gsoc10-mpwa/mpwa/db/schema.rb
===================================================================
--- branches/gsoc10-mpwa/mpwa/db/schema.rb	2010-07-22 22:56:07 UTC (rev 69934)
+++ branches/gsoc10-mpwa/mpwa/db/schema.rb	2010-07-22 23:23:49 UTC (rev 69935)
@@ -9,7 +9,7 @@
 #
 # It's strongly recommended to check this file into your version control system.
 
-ActiveRecord::Schema.define(:version => 20100702075455) do
+ActiveRecord::Schema.define(:version => 20100722221128) do
 
   create_table "categories", :force => true do |t|
     t.string   "name"
@@ -46,4 +46,12 @@
     t.string   "categories"
   end
 
+  create_table "tickets", :force => true do |t|
+    t.integer  "port_id"
+    t.integer  "ticket"
+    t.datetime "created_at"
+    t.datetime "updated_at"
+    t.string   "summary"
+  end
+
 end

Added: branches/gsoc10-mpwa/mpwa/test/fixtures/tickets.yml
===================================================================
--- branches/gsoc10-mpwa/mpwa/test/fixtures/tickets.yml	                        (rev 0)
+++ branches/gsoc10-mpwa/mpwa/test/fixtures/tickets.yml	2010-07-22 23:23:49 UTC (rev 69935)
@@ -0,0 +1,9 @@
+# Read about fixtures at http://ar.rubyonrails.org/classes/Fixtures.html
+
+one:
+  port_id: 1
+  ticket: 1
+
+two:
+  port_id: 1
+  ticket: 1

Added: branches/gsoc10-mpwa/mpwa/test/unit/ticket_test.rb
===================================================================
--- branches/gsoc10-mpwa/mpwa/test/unit/ticket_test.rb	                        (rev 0)
+++ branches/gsoc10-mpwa/mpwa/test/unit/ticket_test.rb	2010-07-22 23:23:49 UTC (rev 69935)
@@ -0,0 +1,8 @@
+require 'test_helper'
+
+class PortTicketTest < ActiveSupport::TestCase
+  # Replace this with your real tests.
+  test "the truth" do
+    assert true
+  end
+end
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macports-changes/attachments/20100722/1d78b346/attachment.html>


More information about the macports-changes mailing list