[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