myexperiment-hackers
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[myexperiment-hackers] [3024] trunk: Merged galaxy-integration branch 29


From: noreply
Subject: [myexperiment-hackers] [3024] trunk: Merged galaxy-integration branch 2945:3023 into trunk
Date: Tue, 12 Jun 2012 08:58:46 +0000 (UTC)

Revision
3024
Author
fbacall
Date
2012-06-12 08:58:45 +0000 (Tue, 12 Jun 2012)

Log Message

Merged galaxy-integration branch 2945:3023 into trunk

Modified Paths

Added Paths

Diff

Modified: trunk/app/controllers/application_controller.rb (3023 => 3024)


--- trunk/app/controllers/application_controller.rb	2012-06-11 13:07:42 UTC (rev 3023)
+++ trunk/app/controllers/application_controller.rb	2012-06-12 08:58:45 UTC (rev 3024)
@@ -21,7 +21,8 @@
   before_filter :login_from_cookie
   before_filter :oauth_required
   before_filter :check_for_sleeper
-  
+  before_filter :check_external_site_request
+
   include ActionView::Helpers::NumberHelper
   
   def check_for_sleeper
@@ -1207,4 +1208,39 @@
     end
 
   end
+
+  # Applies a header to the page
+  def check_external_site_request
+    unless params.empty?
+      external_url_keys = params.keys & Conf.external_site_integrations.keys.collect {|s| s + "_url"}
+
+      if external_url_keys.size == 1
+        external_url_key = external_url_keys.first
+        external_url = params[external_url_key]
+
+        if %w(http https).include?(URI.parse(external_url).scheme)
+          session[:came_from] = external_url_key[0..-5] # Strip the _url part
+          session[:return_url] = CGI.unescape(external_url)
+        else
+          raise("Invalid return URL given for #{external_url_key}: \n\t#{external_url}")
+        end
+      elsif external_url_keys.size > 1
+        raise("#{external_url_keys.size} external URLs specified. Can only cope with one!")
+      end
+    end
+  end
+
+  # Remove external site information from session
+  #  and then go back the page we were at, or /home
+  def clear_external_site_session_info
+    params.delete("#{session.delete(:came_from)}_url")
+    session.delete(:return_url)
+
+    referrer = request.headers["Referer"]
+    target = referrer.blank? ? '/home' : URI.parse(referrer).path
+
+    respond_to do |format|
+      format.html { redirect_to target, (referrer.blank? ? nil : params) }
+    end
+  end
 end

Modified: trunk/app/controllers/workflows_controller.rb (3023 => 3024)


--- trunk/app/controllers/workflows_controller.rb	2012-06-11 13:07:42 UTC (rev 3023)
+++ trunk/app/controllers/workflows_controller.rb	2012-06-12 08:58:45 UTC (rev 3024)
@@ -117,7 +117,7 @@
       @download = Download.create(:contribution => @workflow.contribution, :user => (logged_in? ? current_user : nil), :user_agent => request.env['HTTP_USER_AGENT'], :accessed_from_site => accessed_from_website?())
     end
     
-    send_data(@viewing_version.content_blob.data, :filename => @workflow.filename(@viewing_version_number), :type => @viewing_version.content_type.mime_type)
+    send_data(@viewing_version.content_blob.data, :filename => @workflow.filename(@viewing_version_number), :type => @viewing_version.content_type.mime_type, :disposition => (params[:disposition] || 'attachment'))
   end
   
   # GET /workflows/:id/download/:name

Modified: trunk/app/helpers/application_helper.rb (3023 => 3024)


--- trunk/app/helpers/application_helper.rb	2012-06-11 13:07:42 UTC (rev 3023)
+++ trunk/app/helpers/application_helper.rb	2012-06-12 08:58:45 UTC (rev 3024)
@@ -1616,8 +1616,6 @@
       end
     end
 
-
-
     @layout = layout || {"layout" => Conf.page_template, "stylesheets" => [Conf.stylesheet]}
   end
 

Modified: trunk/app/models/workflow.rb (3023 => 3024)


--- trunk/app/models/workflow.rb	2012-06-11 13:07:42 UTC (rev 3023)
+++ trunk/app/models/workflow.rb	2012-06-12 08:58:45 UTC (rev 3024)
@@ -227,11 +227,12 @@
   # End acts_as_runnable overridden methods
 
   def filename(version=nil)
+
     if version.blank?
-      return "#{unique_name}.#{file_ext}"
+      return "#{unique_name}.#{file_ext || self.processor_class.default_file_extension}"
     else
       return nil unless (workflow_version = self.find_version(version))
-      return "#{workflow_version.unique_name}.#{workflow_version.file_ext}"
+      return "#{workflow_version.unique_name}.#{workflow_version.file_ext || workflow_version.processor_class.default_file_extension}"
     end
   end
   

Modified: trunk/app/views/layouts/_myexperiment.rhtml (3023 => 3024)


--- trunk/app/views/layouts/_myexperiment.rhtml	2012-06-11 13:07:42 UTC (rev 3023)
+++ trunk/app/views/layouts/_myexperiment.rhtml	2012-06-12 08:58:45 UTC (rev 3024)
@@ -21,9 +21,10 @@
 </head>
 <body>
 
+<%= render :partial => "layouts/integrations/#{session[:came_from]}" unless session[:came_from].blank? %>
+
 <div id="doc2" class="yui-t4">
 
-  <%# TODO: Rails 2: '@content_for_x' has changed to 'content_for?(:x)' in later versions of rails %>
   <% if @content_for_header %>
     <%= yield :header %>
   <% else %>

Modified: trunk/app/views/workflows/galaxy/_run_options.rhtml (3023 => 3024)


--- trunk/app/views/workflows/galaxy/_run_options.rhtml	2012-06-11 13:07:42 UTC (rev 3023)
+++ trunk/app/views/workflows/galaxy/_run_options.rhtml	2012-06-12 08:58:45 UTC (rev 3024)
@@ -1,4 +1,34 @@
-<p class="none_text">
-  Not implemented.
-</p>
+<% if session[:came_from] == 'galaxy' %>
+  <style type="text/css">
+    div.galaxy_import_form {
+      margin: 0.5em;
+      text-align: center;
+      border: 1px solid #D8B365;
+      font-family: Verdana, sans-serif;
+      padding-bottom: 0.5em;
+    }
 
+    div.galaxy_import_form div.header {
+      background-color: #EBD9B2;
+      border-bottom: 1px solid #D8B365;
+      font-weight: bold;
+      padding: 5px 10px;
+      color: #303030;
+      margin-bottom: 0.5em;
+    }
+  </style>
+
+  <div class="galaxy_import_form">
+    <div class="header">Import this workflow into Galaxy</div>
+    <form action="" session[:return_url].chomp("/") -%>/workflow/import_workflow" method="POST" name="import_workflow">
+      <input type="hidden" name="workflow_source" value="<%= Conf.sitename -%>"/>
+      <textarea name="workflow_text" style="display: none">
+        <%# Decode JSON and convert again to cut out formatting whitespace %>
+        <%= ActiveSupport::JSON.decode(@viewing_version.content_blob.data).to_json -%>
+      </textarea>
+      <input type="submit" value="Import" name="import_button"/>
+    </form>
+  </div>
+<% else %>
+  <p class="none_text">Not currently available.</p>
+<% end %>

Modified: trunk/app/views/workflows/show.rhtml (3023 => 3024)


--- trunk/app/views/workflows/show.rhtml	2012-06-11 13:07:42 UTC (rev 3023)
+++ trunk/app/views/workflows/show.rhtml	2012-06-12 08:58:45 UTC (rev 3024)
@@ -251,7 +251,7 @@
 
 			<h3>
 				<%= info_icon_with_tooltip("This section provides options for running this version of the Workflow") %>
-				Run
+        <%= @viewing_version.content_type.title == "Galaxy" ? "Import" : "Run" %>
 			</h3>
 				
 			<% if @authorised_to_download %>

Modified: trunk/config/routes.rb (3023 => 3024)


--- trunk/config/routes.rb	2012-06-11 13:07:42 UTC (rev 3023)
+++ trunk/config/routes.rb	2012-06-12 08:58:45 UTC (rev 3024)
@@ -288,6 +288,13 @@
   map.resources :licenses
   map.resources :license_attributes
 
+  # Generate special alias routes for external sites point to
+  Conf.external_site_integrations.each_value do |data|
+    map.connect data["path"], data["redirect"].symbolize_keys #Convert string keys to symbols
+  end
+
+  map.connect 'clear_external_site_session_info', :controller => 'application', :action ="" 'clear_external_site_session_info'
+
   # Install the default route as the lowest priority.
   map.connect ':controller/:action/:id'
 end

Modified: trunk/db/schema.rb (3023 => 3024)


--- trunk/db/schema.rb	2012-06-11 13:07:42 UTC (rev 3023)
+++ trunk/db/schema.rb	2012-06-12 08:58:45 UTC (rev 3024)
@@ -1,816 +1,815 @@
-# This file is autogenerated. Instead of editing this file, please use the
-# migrations feature of ActiveRecord to incrementally modify your database, and
+# This file is auto-generated from the current state of the database. Instead of editing this file, 
+# please use the migrations feature of Active Record to incrementally modify your database, and
 # then regenerate this schema definition.
+#
+# Note that this schema.rb definition is the authoritative source for your database schema. If you need
+# to create the application database on another system, you should be using db:schema:load, not running
+# all the migrations from scratch. The latter is a flawed and unsustainable approach (the more migrations
+# you'll amass, the slower it'll run and the greater likelihood for issues).
+#
+# It's strongly recommended to check this file into your version control system.
 
-ActiveRecord::Schema.define(:version => 95) do
+ActiveRecord::Schema.define(:version => 94) do
 
   create_table "activity_limits", :force => true do |t|
-    t.column "contributor_type", :string,   :null => false
-    t.column "contributor_id",   :integer,  :null => false
-    t.column "limit_feature",    :string,   :null => false
-    t.column "limit_max",        :integer
-    t.column "limit_frequency",  :integer
-    t.column "current_count",    :integer,  :null => false
-    t.column "reset_after",      :datetime
-    t.column "promote_after",    :datetime
+    t.string   "contributor_type", :null => false
+    t.integer  "contributor_id",   :null => false
+    t.string   "limit_feature",    :null => false
+    t.integer  "limit_max"
+    t.integer  "limit_frequency"
+    t.integer  "current_count",    :null => false
+    t.datetime "reset_after"
+    t.datetime "promote_after"
   end
 
   create_table "announcements", :force => true do |t|
-    t.column "title",      :string
-    t.column "user_id",    :integer
-    t.column "created_at", :datetime
-    t.column "updated_at", :datetime
-    t.column "body",       :text
-    t.column "body_html",  :text
+    t.string   "title"
+    t.integer  "user_id"
+    t.datetime "created_at"
+    t.datetime "updated_at"
+    t.text     "body"
+    t.text     "body_html"
   end
 
   create_table "attributions", :force => true do |t|
-    t.column "attributor_id",     :integer
-    t.column "attributor_type",   :string
-    t.column "attributable_id",   :integer
-    t.column "attributable_type", :string
-    t.column "created_at",        :datetime
-    t.column "updated_at",        :datetime
+    t.integer  "attributor_id"
+    t.string   "attributor_type"
+    t.integer  "attributable_id"
+    t.string   "attributable_type"
+    t.datetime "created_at"
+    t.datetime "updated_at"
   end
 
   create_table "auto_tables", :force => true do |t|
-    t.column "name",   :string
-    t.column "schema", :text
+    t.string "name"
+    t.text   "schema"
   end
 
   create_table "blobs", :force => true do |t|
-    t.column "local_name",       :string
-    t.column "contributor_id",   :integer
-    t.column "body_html",        :text
-    t.column "created_at",       :datetime
-    t.column "body",             :text
-    t.column "title",            :string
-    t.column "content_blob_id",  :integer
-    t.column "updated_at",       :datetime
-    t.column "license_id",       :integer
-    t.column "content_type_id",  :integer
-    t.column "contributor_type", :string
+    t.integer  "contributor_id"
+    t.string   "contributor_type"
+    t.string   "local_name"
+    t.datetime "created_at"
+    t.datetime "updated_at"
+    t.string   "title"
+    t.text     "body"
+    t.text     "body_html"
+    t.integer  "content_blob_id"
+    t.integer  "content_type_id"
+    t.integer  "license_id"
   end
 
   create_table "blog_posts", :force => true do |t|
-    t.column "blog_id",    :integer
-    t.column "title",      :string
-    t.column "body",       :text
-    t.column "created_at", :datetime
-    t.column "updated_at", :datetime
-    t.column "body_html",  :text
+    t.integer  "blog_id"
+    t.string   "title"
+    t.text     "body"
+    t.datetime "created_at"
+    t.datetime "updated_at"
+    t.text     "body_html"
   end
 
   create_table "blogs", :force => true do |t|
-    t.column "contributor_id",   :integer
-    t.column "contributor_type", :string
-    t.column "title",            :string
-    t.column "created_at",       :datetime
-    t.column "updated_at",       :datetime
+    t.integer  "contributor_id"
+    t.string   "contributor_type"
+    t.string   "title"
+    t.datetime "created_at"
+    t.datetime "updated_at"
   end
 
   create_table "bookmarks", :force => true do |t|
-    t.column "title",             :string,   :limit => 50, :default => ""
-    t.column "created_at",        :datetime,                               :null => false
-    t.column "bookmarkable_type", :string,   :limit => 15, :default => "", :null => false
-    t.column "bookmarkable_id",   :integer,                :default => 0,  :null => false
-    t.column "user_id",           :integer,                :default => 0,  :null => false
+    t.string   "title",             :limit => 50, :default => ""
+    t.datetime "created_at",                                      :null => false
+    t.string   "bookmarkable_type", :limit => 15, :default => "", :null => false
+    t.integer  "bookmarkable_id",                 :default => 0,  :null => false
+    t.integer  "user_id",                         :default => 0,  :null => false
   end
 
   add_index "bookmarks", ["user_id"], :name => "index_bookmarks_on_user_id"
 
   create_table "citations", :force => true do |t|
-    t.column "user_id",          :integer
-    t.column "workflow_id",      :integer
-    t.column "workflow_version", :integer
-    t.column "authors",          :text
-    t.column "title",            :string
-    t.column "publication",      :string
-    t.column "published_at",     :datetime
-    t.column "accessed_at",      :datetime
-    t.column "url",              :string
-    t.column "isbn",             :string
-    t.column "issn",             :string
-    t.column "created_at",       :datetime
-    t.column "updated_at",       :datetime
+    t.integer  "user_id"
+    t.integer  "workflow_id"
+    t.integer  "workflow_version"
+    t.text     "authors"
+    t.string   "title"
+    t.string   "publication"
+    t.datetime "published_at"
+    t.datetime "accessed_at"
+    t.string   "url"
+    t.string   "isbn"
+    t.string   "issn"
+    t.datetime "created_at"
+    t.datetime "updated_at"
   end
 
   create_table "client_applications", :force => true do |t|
-    t.column "name",         :string
-    t.column "url",          :string
-    t.column "support_url",  :string
-    t.column "callback_url", :string
-    t.column "key",          :string,   :limit => 50
-    t.column "secret",       :string,   :limit => 50
-    t.column "user_id",      :integer
-    t.column "key_type",     :string
-    t.column "created_at",   :datetime
-    t.column "updated_at",   :datetime
-    t.column "creator_id",   :integer
+    t.string   "name"
+    t.string   "url"
+    t.string   "support_url"
+    t.string   "callback_url"
+    t.string   "key",          :limit => 50
+    t.string   "secret",       :limit => 50
+    t.integer  "user_id"
+    t.string   "key_type"
+    t.datetime "created_at"
+    t.datetime "updated_at"
+    t.integer  "creator_id"
   end
 
   add_index "client_applications", ["key"], :name => "index_client_applications_on_key", :unique => true
 
   create_table "comments", :force => true do |t|
-    t.column "comment",          :text
-    t.column "created_at",       :datetime,                               :null => false
-    t.column "commentable_id",   :integer,                :default => 0,  :null => false
-    t.column "commentable_type", :string,   :limit => 15, :default => "", :null => false
-    t.column "user_id",          :integer,                :default => 0,  :null => false
+    t.text     "comment"
+    t.datetime "created_at",                                     :null => false
+    t.integer  "commentable_id",                 :default => 0,  :null => false
+    t.string   "commentable_type", :limit => 15, :default => "", :null => false
+    t.integer  "user_id",                        :default => 0,  :null => false
   end
 
   add_index "comments", ["user_id"], :name => "index_comments_on_user_id"
 
   create_table "concept_relations", :force => true do |t|
-    t.column "subject_concept_id", :integer
-    t.column "relation_type",      :string
-    t.column "object_concept_id",  :integer
+    t.integer "subject_concept_id"
+    t.string  "relation_type"
+    t.integer "object_concept_id"
   end
 
   create_table "concepts", :force => true do |t|
-    t.column "vocabulary_id",    :integer
-    t.column "created_at",       :datetime
-    t.column "description_html", :text
-    t.column "updated_at",       :datetime
-    t.column "phrase",           :string
-    t.column "description",      :text
+    t.datetime "updated_at"
+    t.text     "description_html"
+    t.string   "phrase"
+    t.text     "description"
+    t.integer  "vocabulary_id"
+    t.datetime "created_at"
   end
 
   create_table "content_blobs", :force => true do |t|
-    t.column "data", :binary
+    t.binary "data", :limit => 2147483647
   end
 
   create_table "content_types", :force => true do |t|
-    t.column "created_at",       :datetime
-    t.column "category",         :string
-    t.column "description_html", :text
-    t.column "title",            :string
-    t.column "updated_at",       :datetime
-    t.column "mime_type",        :string
-    t.column "user_id",          :integer
-    t.column "description",      :text
+    t.integer  "user_id"
+    t.string   "title"
+    t.text     "description"
+    t.text     "description_html"
+    t.string   "mime_type"
+    t.datetime "created_at"
+    t.datetime "updated_at"
+    t.string   "category"
   end
 
   create_table "contributions", :force => true do |t|
-    t.column "label",                :string
-    t.column "rating",               :float
-    t.column "contributable_type",   :string
-    t.column "contributor_id",       :integer
-    t.column "created_at",           :datetime
-    t.column "policy_id",            :integer
-    t.column "updated_at",           :datetime
-    t.column "license_id",           :integer
-    t.column "rank",                 :float
-    t.column "content_type_id",      :integer
-    t.column "site_downloads_count", :integer,  :default => 0
-    t.column "viewings_count",       :integer,  :default => 0
-    t.column "contributor_type",     :string
-    t.column "downloads_count",      :integer,  :default => 0
-    t.column "site_viewings_count",  :integer,  :default => 0
-    t.column "contributable_id",     :integer
-    t.column "layout",               :string
+    t.integer  "contributor_id"
+    t.string   "contributor_type"
+    t.integer  "contributable_id"
+    t.string   "contributable_type"
+    t.integer  "policy_id"
+    t.datetime "created_at"
+    t.datetime "updated_at"
+    t.integer  "downloads_count",      :default => 0
+    t.integer  "viewings_count",       :default => 0
+    t.float    "rating"
+    t.float    "rank"
+    t.integer  "content_type_id"
+    t.integer  "license_id"
+    t.integer  "site_downloads_count", :default => 0
+    t.integer  "site_viewings_count",  :default => 0
+    t.string   "label"
+    t.string   "layout"
   end
 
   add_index "contributions", ["contributable_id", "contributable_type"], :name => "index_contributions_on_contributable_id_and_contributable_type"
   add_index "contributions", ["contributor_id", "contributor_type"], :name => "index_contributions_on_contributor_id_and_contributor_type"
 
   create_table "creditations", :force => true do |t|
-    t.column "creditor_id",     :integer
-    t.column "creditor_type",   :string
-    t.column "creditable_id",   :integer
-    t.column "creditable_type", :string
-    t.column "created_at",      :datetime
-    t.column "updated_at",      :datetime
+    t.integer  "creditor_id"
+    t.string   "creditor_type"
+    t.integer  "creditable_id"
+    t.string   "creditable_type"
+    t.datetime "created_at"
+    t.datetime "updated_at"
   end
 
   create_table "curation_events", :force => true do |t|
-    t.column "user_id",      :integer
-    t.column "category",     :string
-    t.column "object_type",  :string
-    t.column "object_id",    :integer
-    t.column "details",      :text
-    t.column "details_html", :text
-    t.column "created_at",   :datetime
-    t.column "updated_at",   :datetime
+    t.integer  "user_id"
+    t.string   "category"
+    t.string   "object_type"
+    t.integer  "object_id"
+    t.text     "details"
+    t.text     "details_html"
+    t.datetime "created_at"
+    t.datetime "updated_at"
   end
 
-  create_table "data_sets", :force => true do |t|
-    t.column "workflow_id", :integer
-    t.column "title",       :string
-    t.column "description", :text
-  end
-
   create_table "downloads", :force => true do |t|
-    t.column "kind",               :string
-    t.column "created_at",         :datetime
-    t.column "accessed_from_site", :boolean,  :default => false
-    t.column "user_id",            :integer
-    t.column "user_agent",         :string
-    t.column "contribution_id",    :integer
+    t.integer  "contribution_id"
+    t.integer  "user_id"
+    t.datetime "created_at"
+    t.string   "user_agent"
+    t.boolean  "accessed_from_site", :default => false
+    t.string   "kind"
   end
 
   add_index "downloads", ["contribution_id"], :name => "index_downloads_on_contribution_id"
 
   create_table "experiments", :force => true do |t|
-    t.column "title",            :string
-    t.column "description",      :text
-    t.column "description_html", :text
-    t.column "contributor_id",   :integer
-    t.column "contributor_type", :string
-    t.column "created_at",       :datetime
-    t.column "updated_at",       :datetime
+    t.string   "title"
+    t.text     "description"
+    t.text     "description_html"
+    t.integer  "contributor_id"
+    t.string   "contributor_type"
+    t.datetime "created_at"
+    t.datetime "updated_at"
   end
 
   create_table "federation_sources", :force => true do |t|
-    t.column "name", :string
+    t.string "name"
   end
 
   create_table "friendships", :force => true do |t|
-    t.column "user_id",     :integer
-    t.column "friend_id",   :integer
-    t.column "created_at",  :datetime
-    t.column "accepted_at", :datetime
-    t.column "message",     :string,   :limit => 500
+    t.integer  "user_id"
+    t.integer  "friend_id"
+    t.datetime "created_at"
+    t.datetime "accepted_at"
+    t.string   "message",     :limit => 500
   end
 
   add_index "friendships", ["friend_id"], :name => "index_friendships_on_friend_id"
   add_index "friendships", ["user_id"], :name => "index_friendships_on_user_id"
 
   create_table "group_announcements", :force => true do |t|
-    t.column "title",      :string
-    t.column "network_id", :integer
-    t.column "user_id",    :integer
-    t.column "public",     :boolean,  :default => false
-    t.column "created_at", :datetime
-    t.column "updated_at", :datetime
-    t.column "body",       :text
-    t.column "body_html",  :text
+    t.string   "title"
+    t.integer  "network_id"
+    t.integer  "user_id"
+    t.boolean  "public",     :default => false
+    t.datetime "created_at"
+    t.datetime "updated_at"
+    t.text     "body"
+    t.text     "body_html"
   end
 
   create_table "jobs", :force => true do |t|
-    t.column "title",            :string
-    t.column "description",      :text
-    t.column "description_html", :text
-    t.column "experiment_id",    :integer
-    t.column "user_id",          :integer
-    t.column "runnable_id",      :integer
-    t.column "runnable_version", :integer
-    t.column "runnable_type",    :string
-    t.column "runner_id",        :integer
-    t.column "runner_type",      :string
-    t.column "submitted_at",     :datetime
-    t.column "started_at",       :datetime
-    t.column "completed_at",     :datetime
-    t.column "last_status",      :string
-    t.column "last_status_at",   :datetime
-    t.column "job_uri",          :string
-    t.column "job_manifest",     :binary
-    t.column "inputs_uri",       :string
-    t.column "inputs_data",      :binary
-    t.column "outputs_uri",      :string
-    t.column "created_at",       :datetime
-    t.column "updated_at",       :datetime
-    t.column "parent_job_id",    :integer
+    t.string   "title"
+    t.text     "description"
+    t.text     "description_html"
+    t.integer  "experiment_id"
+    t.integer  "user_id"
+    t.integer  "runnable_id"
+    t.integer  "runnable_version"
+    t.string   "runnable_type"
+    t.integer  "runner_id"
+    t.string   "runner_type"
+    t.datetime "submitted_at"
+    t.datetime "started_at"
+    t.datetime "completed_at"
+    t.string   "last_status"
+    t.datetime "last_status_at"
+    t.string   "job_uri"
+    t.binary   "job_manifest",     :limit => 2147483647
+    t.string   "inputs_uri"
+    t.binary   "inputs_data",      :limit => 2147483647
+    t.string   "outputs_uri"
+    t.datetime "created_at"
+    t.datetime "updated_at"
+    t.integer  "parent_job_id"
   end
 
   create_table "key_permissions", :force => true do |t|
-    t.column "client_application_id", :integer
-    t.column "for",                   :string
+    t.integer "client_application_id"
+    t.string  "for"
   end
 
   create_table "labels", :force => true do |t|
-    t.column "vocabulary_id", :integer
-    t.column "language",      :string
-    t.column "text",          :string
-    t.column "label_type",    :string
-    t.column "concept_id",    :integer
+    t.integer "concept_id"
+    t.string  "language"
+    t.string  "text"
+    t.integer "vocabulary_id"
+    t.string  "label_type"
   end
 
   create_table "license_attributes", :force => true do |t|
-    t.column "license_id",        :integer
-    t.column "license_option_id", :integer
-    t.column "created_at",        :datetime
+    t.integer  "license_id"
+    t.integer  "license_option_id"
+    t.datetime "created_at"
   end
 
   create_table "license_options", :force => true do |t|
-    t.column "user_id",          :integer
-    t.column "title",            :string
-    t.column "description",      :text
-    t.column "description_html", :text
-    t.column "uri",              :string
-    t.column "predicate",        :string
-    t.column "created_at",       :datetime
-    t.column "updated_at",       :datetime
+    t.integer  "user_id"
+    t.string   "title"
+    t.text     "description"
+    t.text     "description_html"
+    t.string   "uri"
+    t.string   "predicate"
+    t.datetime "created_at"
+    t.datetime "updated_at"
   end
 
   create_table "licenses", :force => true do |t|
-    t.column "user_id",          :integer
-    t.column "unique_name",      :string
-    t.column "title",            :string
-    t.column "description",      :text
-    t.column "description_html", :text
-    t.column "url",              :string
-    t.column "created_at",       :datetime
-    t.column "updated_at",       :datetime
+    t.integer  "user_id"
+    t.string   "unique_name"
+    t.string   "title"
+    t.text     "description"
+    t.text     "description_html"
+    t.string   "url"
+    t.datetime "created_at"
+    t.datetime "updated_at"
   end
 
   create_table "memberships", :force => true do |t|
-    t.column "user_id",                :integer
-    t.column "network_id",             :integer
-    t.column "created_at",             :datetime
-    t.column "user_established_at",    :datetime
-    t.column "network_established_at", :datetime
-    t.column "message",                :string,   :limit => 500
-    t.column "administrator",          :boolean,                 :default => false
+    t.integer  "user_id"
+    t.integer  "network_id"
+    t.datetime "created_at"
+    t.datetime "user_established_at"
+    t.datetime "network_established_at"
+    t.string   "message",                :limit => 500
+    t.boolean  "administrator",                         :default => false
   end
 
   add_index "memberships", ["network_id"], :name => "index_memberships_on_network_id"
   add_index "memberships", ["user_id"], :name => "index_memberships_on_user_id"
 
   create_table "messages", :force => true do |t|
-    t.column "from",                 :integer
-    t.column "to",                   :integer
-    t.column "subject",              :string
-    t.column "body",                 :text
-    t.column "reply_id",             :integer
-    t.column "created_at",           :datetime
-    t.column "read_at",              :datetime
-    t.column "body_html",            :text
-    t.column "deleted_by_sender",    :boolean,  :default => false
-    t.column "deleted_by_recipient", :boolean,  :default => false
+    t.integer  "from"
+    t.integer  "to"
+    t.string   "subject"
+    t.text     "body"
+    t.integer  "reply_id"
+    t.datetime "created_at"
+    t.datetime "read_at"
+    t.text     "body_html"
+    t.boolean  "deleted_by_sender",    :default => false
+    t.boolean  "deleted_by_recipient", :default => false
   end
 
   create_table "networks", :force => true do |t|
-    t.column "user_id",           :integer
-    t.column "title",             :string
-    t.column "unique_name",       :string
-    t.column "created_at",        :datetime
-    t.column "updated_at",        :datetime
-    t.column "description",       :text
-    t.column "description_html",  :text
-    t.column "new_member_policy", :string,   :default => "open"
-    t.column "inviter_id",        :integer
+    t.integer  "user_id"
+    t.string   "title"
+    t.string   "unique_name"
+    t.datetime "created_at"
+    t.datetime "updated_at"
+    t.text     "description"
+    t.text     "description_html"
+    t.string   "new_member_policy", :default => "open"
+    t.integer  "inviter_id"
   end
 
   add_index "networks", ["user_id"], :name => "index_networks_on_user_id"
 
   create_table "oauth_nonces", :force => true do |t|
-    t.column "nonce",      :string
-    t.column "timestamp",  :integer
-    t.column "created_at", :datetime
-    t.column "updated_at", :datetime
+    t.string   "nonce"
+    t.integer  "timestamp"
+    t.datetime "created_at"
+    t.datetime "updated_at"
   end
 
   add_index "oauth_nonces", ["nonce", "timestamp"], :name => "index_oauth_nonces_on_nonce_and_timestamp", :unique => true
 
   create_table "oauth_tokens", :force => true do |t|
-    t.column "user_id",               :integer
-    t.column "type",                  :string,   :limit => 20
-    t.column "client_application_id", :integer
-    t.column "token",                 :string,   :limit => 50
-    t.column "secret",                :string,   :limit => 50
-    t.column "authorized_at",         :datetime
-    t.column "invalidated_at",        :datetime
-    t.column "created_at",            :datetime
-    t.column "updated_at",            :datetime
+    t.integer  "user_id"
+    t.string   "type",                  :limit => 20
+    t.integer  "client_application_id"
+    t.string   "token",                 :limit => 50
+    t.string   "secret",                :limit => 50
+    t.datetime "authorized_at"
+    t.datetime "invalidated_at"
+    t.datetime "created_at"
+    t.datetime "updated_at"
   end
 
   add_index "oauth_tokens", ["token"], :name => "index_oauth_tokens_on_token", :unique => true
 
   create_table "ontologies", :force => true do |t|
-    t.column "created_at",       :datetime
-    t.column "description_html", :text
-    t.column "uri",              :string
-    t.column "prefix",           :string
-    t.column "title",            :string
-    t.column "updated_at",       :datetime
-    t.column "user_id",          :integer
-    t.column "description",      :text
+    t.string   "prefix"
+    t.datetime "updated_at"
+    t.string   "uri"
+    t.string   "title"
+    t.text     "description_html"
+    t.text     "description"
+    t.integer  "user_id"
+    t.datetime "created_at"
   end
 
   create_table "pack_contributable_entries", :force => true do |t|
-    t.column "comment",               :text
-    t.column "contributable_type",    :string
-    t.column "contributable_version", :integer
-    t.column "created_at",            :datetime
-    t.column "updated_at",            :datetime
-    t.column "pack_id",               :integer,  :null => false
-    t.column "user_id",               :integer,  :null => false
-    t.column "contributable_id",      :integer,  :null => false
+    t.integer  "pack_id",               :null => false
+    t.integer  "contributable_id",      :null => false
+    t.integer  "contributable_version"
+    t.string   "contributable_type"
+    t.text     "comment"
+    t.integer  "user_id",               :null => false
+    t.datetime "created_at"
+    t.datetime "updated_at"
   end
 
   create_table "pack_remote_entries", :force => true do |t|
-    t.column "comment",       :text
-    t.column "created_at",    :datetime
-    t.column "uri",           :string
-    t.column "title",         :string
-    t.column "updated_at",    :datetime
-    t.column "pack_id",       :integer,  :null => false
-    t.column "user_id",       :integer,  :null => false
-    t.column "alternate_uri", :string
+    t.integer  "pack_id",       :null => false
+    t.string   "title"
+    t.string   "uri"
+    t.string   "alternate_uri"
+    t.text     "comment"
+    t.integer  "user_id",       :null => false
+    t.datetime "created_at"
+    t.datetime "updated_at"
   end
 
   create_table "packs", :force => true do |t|
-    t.column "contributor_id",   :integer
-    t.column "created_at",       :datetime
-    t.column "description_html", :text
-    t.column "title",            :string
-    t.column "updated_at",       :datetime
-    t.column "description",      :text
-    t.column "contributor_type", :string
+    t.integer  "contributor_id"
+    t.string   "contributor_type"
+    t.string   "title"
+    t.text     "description"
+    t.text     "description_html"
+    t.datetime "created_at"
+    t.datetime "updated_at"
   end
 
   create_table "pending_invitations", :force => true do |t|
-    t.column "email",        :string
-    t.column "created_at",   :datetime
-    t.column "request_type", :string
-    t.column "requested_by", :integer
-    t.column "request_for",  :integer
-    t.column "message",      :string,   :limit => 500
-    t.column "token",        :string
+    t.string   "email"
+    t.datetime "created_at"
+    t.string   "request_type"
+    t.integer  "requested_by"
+    t.integer  "request_for"
+    t.string   "message",      :limit => 500
+    t.string   "token"
   end
 
   create_table "permissions", :force => true do |t|
-    t.column "contributor_id",   :integer
-    t.column "contributor_type", :string
-    t.column "policy_id",        :integer
-    t.column "download",         :boolean,  :default => false
-    t.column "edit",             :boolean,  :default => false
-    t.column "view",             :boolean,  :default => false
-    t.column "created_at",       :datetime
-    t.column "updated_at",       :datetime
+    t.integer  "contributor_id"
+    t.string   "contributor_type"
+    t.integer  "policy_id"
+    t.boolean  "download",         :default => false
+    t.boolean  "edit",             :default => false
+    t.boolean  "view",             :default => false
+    t.datetime "created_at"
+    t.datetime "updated_at"
   end
 
   add_index "permissions", ["policy_id"], :name => "index_permissions_on_policy_id"
 
   create_table "picture_selections", :force => true do |t|
-    t.column "user_id",    :integer
-    t.column "picture_id", :integer
-    t.column "created_at", :datetime
+    t.integer  "user_id"
+    t.integer  "picture_id"
+    t.datetime "created_at"
   end
 
   create_table "pictures", :force => true do |t|
-    t.column "data",    :binary
-    t.column "user_id", :integer
+    t.binary  "data",    :limit => 16777215
+    t.integer "user_id"
   end
 
+  create_table "plugin_schema_info", :id => false, :force => true do |t|
+    t.string  "plugin_name"
+    t.integer "version"
+  end
+
   create_table "policies", :force => true do |t|
-    t.column "name",             :string
-    t.column "contributor_id",   :integer
-    t.column "created_at",       :datetime
-    t.column "updated_at",       :datetime
-    t.column "update_mode",      :integer
-    t.column "share_mode",       :integer
-    t.column "contributor_type", :string
-    t.column "public_view",      :boolean,  :default => false
-    t.column "public_download",  :boolean,  :default => false
+    t.integer  "contributor_id"
+    t.string   "contributor_type"
+    t.string   "name"
+    t.datetime "created_at"
+    t.datetime "updated_at"
+    t.integer  "share_mode"
+    t.integer  "update_mode"
+    t.boolean  "public_download",  :default => false
+    t.boolean  "public_view",      :default => false
   end
 
   create_table "predicates", :force => true do |t|
-    t.column "created_at",       :datetime
-    t.column "description_html", :text
-    t.column "title",            :string
-    t.column "ontology_id",      :integer
-    t.column "updated_at",       :datetime
-    t.column "phrase",           :string
-    t.column "equivalent_to",    :text
-    t.column "description",      :text
+    t.datetime "updated_at"
+    t.string   "title"
+    t.text     "description_html"
+    t.string   "phrase"
+    t.integer  "ontology_id"
+    t.text     "description"
+    t.text     "equivalent_to"
+    t.datetime "created_at"
   end
 
   create_table "previews", :force => true do |t|
-    t.column "created_at",    :datetime
-    t.column "svg_blob_id",   :integer
-    t.column "image_blob_id", :integer
+    t.integer  "svg_blob_id"
+    t.integer  "image_blob_id"
+    t.datetime "created_at"
   end
 
   create_table "profiles", :force => true do |t|
-    t.column "user_id",             :integer
-    t.column "picture_id",          :integer
-    t.column "email",               :string
-    t.column "website",             :string
-    t.column "created_at",          :datetime
-    t.column "updated_at",          :datetime
-    t.column "body",                :text
-    t.column "body_html",           :text
-    t.column "field_or_industry",   :string
-    t.column "occupation_or_roles", :string
-    t.column "organisations",       :text
-    t.column "location_city",       :string
-    t.column "location_country",    :string
-    t.column "interests",           :text
-    t.column "contact_details",     :text
+    t.integer  "user_id"
+    t.integer  "picture_id"
+    t.string   "email"
+    t.string   "website"
+    t.datetime "created_at"
+    t.datetime "updated_at"
+    t.text     "body"
+    t.text     "body_html"
+    t.string   "field_or_industry"
+    t.string   "occupation_or_roles"
+    t.text     "organisations"
+    t.string   "location_city"
+    t.string   "location_country"
+    t.text     "interests"
+    t.text     "contact_details"
   end
 
   add_index "profiles", ["user_id"], :name => "index_profiles_on_user_id"
 
   create_table "ratings", :force => true do |t|
-    t.column "rating",        :integer,                :default => 0
-    t.column "created_at",    :datetime,                               :null => false
-    t.column "rateable_type", :string,   :limit => 15, :default => "", :null => false
-    t.column "rateable_id",   :integer,                :default => 0,  :null => false
-    t.column "user_id",       :integer,                :default => 0,  :null => false
+    t.integer  "rating",                      :default => 0
+    t.datetime "created_at",                                  :null => false
+    t.string   "rateable_type", :limit => 15, :default => "", :null => false
+    t.integer  "rateable_id",                 :default => 0,  :null => false
+    t.integer  "user_id",                     :default => 0,  :null => false
   end
 
   add_index "ratings", ["user_id"], :name => "index_ratings_on_user_id"
 
   create_table "relationships", :force => true do |t|
-    t.column "context_id",   :integer
-    t.column "created_at",   :datetime
-    t.column "context_type", :string
-    t.column "objekt_type",  :string
-    t.column "objekt_id",    :integer
-    t.column "subject_id",   :integer
-    t.column "predicate_id", :integer
-    t.column "subject_type", :string
-    t.column "user_id",      :integer
+    t.string   "objekt_type"
+    t.integer  "objekt_id"
+    t.string   "subject_type"
+    t.integer  "subject_id"
+    t.integer  "user_id"
+    t.datetime "created_at"
+    t.integer  "context_id"
+    t.integer  "predicate_id"
+    t.string   "context_type"
   end
 
   create_table "remote_workflows", :force => true do |t|
-    t.column "workflow_id",        :integer
-    t.column "workflow_version",   :integer
-    t.column "taverna_enactor_id", :integer
-    t.column "workflow_uri",       :string
+    t.integer "workflow_id"
+    t.integer "workflow_version"
+    t.integer "taverna_enactor_id"
+    t.string  "workflow_uri"
   end
 
   create_table "reviews", :force => true do |t|
-    t.column "title",           :string,                 :default => ""
-    t.column "review",          :text
-    t.column "created_at",      :datetime,                               :null => false
-    t.column "updated_at",      :datetime,                               :null => false
-    t.column "reviewable_id",   :integer,                :default => 0,  :null => false
-    t.column "reviewable_type", :string,   :limit => 15, :default => "", :null => false
-    t.column "user_id",         :integer,                :default => 0,  :null => false
+    t.string   "title",                         :default => ""
+    t.text     "review"
+    t.datetime "created_at",                                    :null => false
+    t.datetime "updated_at",                                    :null => false
+    t.integer  "reviewable_id",                 :default => 0,  :null => false
+    t.string   "reviewable_type", :limit => 15, :default => "", :null => false
+    t.integer  "user_id",                       :default => 0,  :null => false
   end
 
   add_index "reviews", ["user_id"], :name => "index_reviews_on_user_id"
 
   create_table "service_categories", :force => true do |t|
-    t.column "label",        :string
-    t.column "uri",          :string
-    t.column "retrieved_at", :datetime
-    t.column "created_at",   :datetime
-    t.column "updated_at",   :datetime
-    t.column "service_id",   :integer
+    t.string   "uri"
+    t.datetime "updated_at"
+    t.integer  "service_id"
+    t.string   "label"
+    t.datetime "retrieved_at"
+    t.datetime "created_at"
   end
 
   create_table "service_deployments", :force => true do |t|
-    t.column "service_provider_id",  :integer
-    t.column "iso3166_country_code", :string
-    t.column "city",                 :string
-    t.column "submitter_label",      :string
-    t.column "uri",                  :string
-    t.column "retrieved_at",         :datetime
-    t.column "created_at",           :datetime
-    t.column "submitter_uri",        :string
-    t.column "country",              :string
-    t.column "updated_at",           :datetime
-    t.column "service_id",           :integer
-    t.column "flag_url",             :string
-    t.column "created",              :datetime
-    t.column "endpoint",             :string
+    t.string   "iso3166_country_code"
+    t.string   "city"
+    t.string   "submitter_label"
+    t.string   "uri"
+    t.datetime "updated_at"
+    t.string   "submitter_uri"
+    t.string   "country"
+    t.integer  "service_id"
+    t.datetime "created"
+    t.integer  "service_provider_id"
+    t.string   "flag_url"
+    t.string   "endpoint"
+    t.datetime "retrieved_at"
+    t.datetime "created_at"
   end
 
   create_table "service_providers", :force => true do |t|
-    t.column "name",         :string
-    t.column "uri",          :string
-    t.column "retrieved_at", :datetime
-    t.column "created_at",   :datetime
-    t.column "updated_at",   :datetime
-    t.column "description",  :text
-    t.column "created",      :datetime
+    t.string   "name"
+    t.string   "uri"
+    t.datetime "updated_at"
+    t.text     "description"
+    t.datetime "created"
+    t.datetime "retrieved_at"
+    t.datetime "created_at"
   end
 
   create_table "service_tags", :force => true do |t|
-    t.column "label",        :string
-    t.column "uri",          :string
-    t.column "retrieved_at", :datetime
-    t.column "created_at",   :datetime
-    t.column "updated_at",   :datetime
-    t.column "service_id",   :integer
+    t.string   "uri"
+    t.datetime "updated_at"
+    t.integer  "service_id"
+    t.string   "label"
+    t.datetime "retrieved_at"
+    t.datetime "created_at"
   end
 
   create_table "service_types", :force => true do |t|
-    t.column "label",        :string
-    t.column "retrieved_at", :datetime
-    t.column "created_at",   :datetime
-    t.column "updated_at",   :datetime
-    t.column "service_id",   :integer
+    t.datetime "updated_at"
+    t.integer  "service_id"
+    t.string   "label"
+    t.datetime "retrieved_at"
+    t.datetime "created_at"
   end
 
   create_table "services", :force => true do |t|
-    t.column "iso3166_country_code",     :string
-    t.column "city",                     :string
-    t.column "name",                     :string
-    t.column "contributor_id",           :integer
-    t.column "submitter_label",          :string
-    t.column "uri",                      :string
-    t.column "retrieved_at",             :datetime
-    t.column "created_at",               :datetime
-    t.column "monitor_symbol_url",       :string
-    t.column "country",                  :string
-    t.column "submitter_uri",            :string
-    t.column "updated_at",               :datetime
-    t.column "monitor_message",          :text
-    t.column "monitor_label",            :string
-    t.column "monitor_last_checked",     :datetime
-    t.column "monitor_small_symbol_url", :string
-    t.column "description",              :text
-    t.column "flag_url",                 :string
-    t.column "wsdl",                     :string
-    t.column "provider_label",           :string
-    t.column "contributor_type",         :string
-    t.column "documentation_uri",        :string
-    t.column "endpoint",                 :string
-    t.column "provider_uri",             :string
-    t.column "created",                  :datetime
+    t.string   "documentation_uri"
+    t.string   "iso3166_country_code"
+    t.string   "city"
+    t.string   "name"
+    t.string   "provider_uri"
+    t.string   "submitter_label"
+    t.string   "uri"
+    t.datetime "updated_at"
+    t.string   "monitor_symbol_url"
+    t.datetime "monitor_last_checked"
+    t.string   "monitor_label"
+    t.string   "country"
+    t.string   "submitter_uri"
+    t.string   "monitor_small_symbol_url"
+    t.text     "monitor_message"
+    t.text     "description"
+    t.string   "wsdl"
+    t.datetime "created"
+    t.string   "contributor_type"
+    t.integer  "contributor_id"
+    t.string   "flag_url"
+    t.string   "endpoint"
+    t.string   "provider_label"
+    t.datetime "retrieved_at"
+    t.datetime "created_at"
   end
 
   create_table "sessions", :force => true do |t|
-    t.column "session_id", :string
-    t.column "data",       :text
-    t.column "updated_at", :datetime
+    t.string   "session_id"
+    t.text     "data"
+    t.datetime "updated_at"
   end
 
   add_index "sessions", ["session_id"], :name => "index_sessions_on_session_id"
   add_index "sessions", ["updated_at"], :name => "index_sessions_on_updated_at"
 
   create_table "taggings", :force => true do |t|
-    t.column "tag_id",        :integer
-    t.column "taggable_id",   :integer
-    t.column "taggable_type", :string
-    t.column "user_id",       :integer
-    t.column "created_at",    :datetime
+    t.integer  "tag_id"
+    t.integer  "taggable_id"
+    t.string   "taggable_type"
+    t.integer  "user_id"
+    t.datetime "created_at"
   end
 
   add_index "taggings", ["tag_id", "taggable_type"], :name => "index_taggings_on_tag_id_and_taggable_type"
-  add_index "taggings", ["user_id", "tag_id", "taggable_type"], :name => "index_taggings_on_user_id_and_tag_id_and_taggable_type"
   add_index "taggings", ["taggable_id", "taggable_type"], :name => "index_taggings_on_taggable_id_and_taggable_type"
+  add_index "taggings", ["user_id", "tag_id", "taggable_type"], :name => "index_taggings_on_user_id_and_tag_id_and_taggable_type"
   add_index "taggings", ["user_id", "taggable_id", "taggable_type"], :name => "index_taggings_on_user_id_and_taggable_id_and_taggable_type"
 
   create_table "tags", :force => true do |t|
-    t.column "name",             :string
-    t.column "taggings_count",   :integer,  :default => 0, :null => false
-    t.column "vocabulary_id",    :integer
-    t.column "description",      :text
-    t.column "description_html", :text
-    t.column "created_at",       :datetime
-    t.column "updated_at",       :datetime
+    t.string   "name"
+    t.integer  "taggings_count",   :default => 0, :null => false
+    t.integer  "vocabulary_id"
+    t.text     "description"
+    t.text     "description_html"
+    t.datetime "created_at"
+    t.datetime "updated_at"
   end
 
   add_index "tags", ["name"], :name => "index_tags_on_name"
   add_index "tags", ["taggings_count"], :name => "index_tags_on_taggings_count"
 
   create_table "taverna_enactors", :force => true do |t|
-    t.column "title",            :string
-    t.column "description",      :text
-    t.column "contributor_id",   :integer
-    t.column "contributor_type", :string
-    t.column "url",              :string
-    t.column "username",         :string
-    t.column "crypted_password", :string
-    t.column "created_at",       :datetime
-    t.column "updated_at",       :datetime
+    t.string   "title"
+    t.text     "description"
+    t.integer  "contributor_id"
+    t.string   "contributor_type"
+    t.string   "url"
+    t.string   "username"
+    t.string   "crypted_password"
+    t.datetime "created_at"
+    t.datetime "updated_at"
   end
 
   create_table "topic_feedbacks", :force => true do |t|
-    t.column "submit_dt", :datetime
-    t.column "user_id",   :integer
-    t.column "score",     :integer
-    t.column "topic_id",  :integer
+    t.integer  "score"
+    t.integer  "topic_id"
+    t.datetime "submit_dt"
+    t.integer  "user_id"
   end
 
   create_table "topic_runs", :force => true do |t|
-    t.column "runtime",     :datetime
-    t.column "description", :string
+    t.datetime "runtime"
+    t.string   "description"
   end
 
   create_table "topic_tag_map", :force => true do |t|
-    t.column "display_flag", :boolean
-    t.column "tag_id",       :integer
-    t.column "topic_id",     :integer
-    t.column "probability",  :float
+    t.integer "topic_id"
+    t.boolean "display_flag"
+    t.integer "tag_id"
+    t.float   "probability"
   end
 
   create_table "topic_workflow_map", :force => true do |t|
-    t.column "display_flag", :boolean
-    t.column "workflow_id",  :integer
-    t.column "topic_id",     :integer
-    t.column "probability",  :float
+    t.integer "topic_id"
+    t.boolean "display_flag"
+    t.integer "workflow_id"
+    t.float   "probability"
   end
 
   create_table "topics", :force => true do |t|
-    t.column "name",        :string
-    t.column "orig_run_id", :integer
-    t.column "run_id",      :integer
+    t.string  "name"
+    t.integer "orig_run_id"
+    t.integer "run_id"
   end
 
   create_table "user_reports", :force => true do |t|
-    t.column "report",       :text
-    t.column "created_at",   :datetime
-    t.column "subject_id",   :integer
-    t.column "subject_type", :string
-    t.column "user_id",      :integer
-    t.column "content",      :text
+    t.string   "subject_type"
+    t.text     "content"
+    t.integer  "subject_id"
+    t.integer  "user_id"
+    t.text     "report"
+    t.datetime "created_at"
   end
 
   create_table "users", :force => true do |t|
-    t.column "openid_url",                :string
-    t.column "name",                      :string
-    t.column "created_at",                :datetime
-    t.column "updated_at",                :datetime
-    t.column "last_seen_at",              :datetime
-    t.column "username",                  :string
-    t.column "crypted_password",          :string,   :limit => 40
-    t.column "salt",                      :string,   :limit => 40
-    t.column "remember_token",            :string
-    t.column "remember_token_expires_at", :datetime
-    t.column "downloads_count",           :integer,                :default => 0
-    t.column "viewings_count",            :integer,                :default => 0
-    t.column "email",                     :string
-    t.column "unconfirmed_email",         :string
-    t.column "email_confirmed_at",        :datetime
-    t.column "activated_at",              :datetime
-    t.column "receive_notifications",     :boolean,                :default => true
-    t.column "reset_password_code",       :string
-    t.column "reset_password_code_until", :datetime
+    t.string   "openid_url"
+    t.string   "name"
+    t.datetime "created_at"
+    t.datetime "updated_at"
+    t.datetime "last_seen_at"
+    t.string   "username"
+    t.string   "crypted_password",          :limit => 40
+    t.string   "salt",                      :limit => 40
+    t.string   "remember_token"
+    t.datetime "remember_token_expires_at"
+    t.integer  "downloads_count",                         :default => 0
+    t.integer  "viewings_count",                          :default => 0
+    t.string   "email"
+    t.string   "unconfirmed_email"
+    t.datetime "email_confirmed_at"
+    t.datetime "activated_at"
+    t.boolean  "receive_notifications",                   :default => true
+    t.string   "reset_password_code"
+    t.datetime "reset_password_code_until"
+    t.string   "account_status"
   end
 
   create_table "viewings", :force => true do |t|
-    t.column "contribution_id",    :integer
-    t.column "user_id",            :integer
-    t.column "created_at",         :datetime
-    t.column "user_agent",         :string
-    t.column "accessed_from_site", :boolean,  :default => false
+    t.integer  "contribution_id"
+    t.integer  "user_id"
+    t.datetime "created_at"
+    t.string   "user_agent"
+    t.boolean  "accessed_from_site", :default => false
   end
 
   add_index "viewings", ["contribution_id"], :name => "index_viewings_on_contribution_id"
 
   create_table "vocabularies", :force => true do |t|
-    t.column "created_at",       :datetime
-    t.column "description_html", :text
-    t.column "uri",              :string
-    t.column "prefix",           :string
-    t.column "title",            :string
-    t.column "updated_at",       :datetime
-    t.column "user_id",          :integer
-    t.column "description",      :text
+    t.integer  "user_id"
+    t.string   "title"
+    t.text     "description"
+    t.text     "description_html"
+    t.datetime "created_at"
+    t.datetime "updated_at"
+    t.string   "prefix"
+    t.string   "uri"
   end
 
-  create_table "workflow_ports", :force => true do |t|
-    t.column "workflow_id", :integer
-    t.column "port_type",   :string
-    t.column "name",        :string
-  end
-
   create_table "workflow_processors", :force => true do |t|
-    t.column "name",           :string
-    t.column "wsdl_operation", :string
-    t.column "workflow_id",    :integer
-    t.column "wsdl",           :string
+    t.string  "name"
+    t.string  "wsdl_operation"
+    t.string  "wsdl"
+    t.integer "workflow_id"
   end
 
   create_table "workflow_versions", :force => true do |t|
-    t.column "contributor_id",    :integer
-    t.column "revision_comments", :text
-    t.column "created_at",        :datetime
-    t.column "body_html",         :text
-    t.column "body",              :text
-    t.column "title",             :string
-    t.column "content_blob_id",   :integer
-    t.column "license",           :string
-    t.column "updated_at",        :datetime
-    t.column "last_edited_by",    :string
-    t.column "svg",               :string
-    t.column "unique_name",       :string
-    t.column "content_type_id",   :integer
-    t.column "version",           :integer
-    t.column "workflow_id",       :integer
-    t.column "contributor_type",  :string
-    t.column "preview_id",        :integer
-    t.column "image",             :string
-    t.column "file_ext",          :string
+    t.integer  "workflow_id"
+    t.integer  "version"
+    t.integer  "contributor_id"
+    t.string   "contributor_type"
+    t.string   "title"
+    t.string   "unique_name"
+    t.text     "body"
+    t.text     "body_html"
+    t.datetime "created_at"
+    t.datetime "updated_at"
+    t.string   "image"
+    t.string   "svg"
+    t.text     "revision_comments"
+    t.integer  "content_blob_id"
+    t.string   "file_ext"
+    t.string   "last_edited_by"
+    t.integer  "content_type_id"
+    t.string   "license"
+    t.integer  "preview_id"
   end
 
-  add_index "workflow_versions", ["workflow_id"], :name => "index_workflow_versions_on_workflow_id"
-
   create_table "workflows", :force => true do |t|
-    t.column "contributor_id",   :integer
-    t.column "created_at",       :datetime
-    t.column "body_html",        :text
-    t.column "body",             :text
-    t.column "title",            :string
-    t.column "content_blob_id",  :integer
-    t.column "updated_at",       :datetime
-    t.column "last_edited_by",   :string
-    t.column "svg",              :string
-    t.column "license_id",       :integer
-    t.column "unique_name",      :string
-    t.column "content_type_id",  :integer
-    t.column "current_version",  :integer
-    t.column "contributor_type", :string
-    t.column "preview_id",       :integer
-    t.column "image",            :string
-    t.column "file_ext",         :string
+    t.integer  "contributor_id"
+    t.string   "contributor_type"
+    t.string   "image"
+    t.string   "svg"
+    t.string   "title"
+    t.string   "unique_name"
+    t.text     "body"
+    t.text     "body_html"
+    t.datetime "created_at"
+    t.datetime "updated_at"
+    t.integer  "current_version"
+    t.integer  "content_blob_id"
+    t.string   "file_ext"
+    t.string   "last_edited_by"
+    t.integer  "content_type_id"
+    t.integer  "license_id"
+    t.integer  "preview_id"
   end
 
 end

Modified: trunk/lib/conf.rb (3023 => 3024)


--- trunk/lib/conf.rb	2012-06-11 13:07:42 UTC (rev 3023)
+++ trunk/lib/conf.rb	2012-06-12 08:58:45 UTC (rev 3024)
@@ -181,10 +181,6 @@
     self.fetch_entry('duplicable_mime_types')
   end
 
-  def self.duplicable_mime_types
-    self.fetch_entry('duplicable_mime_types')
-  end
-
   def self.deleted_data_directory
     self.fetch_entry('deleted_data_directory')
   end
@@ -194,6 +190,10 @@
     layouts.delete_if {|k,v| v["environment"] && (v["environment"] != ENV["RAILS_ENV"])}
   end
 
+  def self.external_site_integrations
+    self.fetch_entry('site_integrations',{})
+  end
+
   # This method is required to create an administrator in the test fixtures
 
   def self.admins=(value)

Modified: trunk/lib/workflow_processors/galaxy.rb (3023 => 3024)


--- trunk/lib/workflow_processors/galaxy.rb	2012-06-11 13:07:42 UTC (rev 3023)
+++ trunk/lib/workflow_processors/galaxy.rb	2012-06-12 08:58:45 UTC (rev 3024)
@@ -9,7 +9,7 @@
   
   class Galaxy < WorkflowProcessors::Interface
 
-    Mime::Type.register "application/vnd.galaxy.workflow+xml", :galaxy_workflow
+    Mime::Type.register "application/vnd.galaxy.workflow+json", :galaxy_workflow
 
     # Begin Class Methods
     
@@ -24,29 +24,36 @@
     end
     
     def self.display_data_format
-      "XML"
+      "JSON"
     end
     
     def self.mime_type
-      "application/vnd.galaxy.workflow+xml"
+      "application/vnd.galaxy.workflow+json"
     end
 
     # All the file extensions supported by this workflow processor.
     # Must be all in lowercase.
     def self.file_extensions_supported
-      []
+      ["ga"]
     end
+
+    def self.default_file_extension
+      "ga"
+    end
     
     def self.can_determine_type_from_file?
-      false
+      true
     end
     
     def self.recognised?(file)
-      false
+      rec = file.readline.strip == '{' &&
+            file.readline.strip == '"a_galaxy_workflow": "true",'
+      file.rewind
+      rec
     end
     
     def self.can_infer_metadata?
-      false
+      true
     end
     
     def self.can_generate_preview_image?
@@ -58,7 +65,7 @@
     end
     
     def self.show_download_section?
-      false
+      true
     end
 
     def initialize(workflow_definition)
@@ -95,6 +102,10 @@
       words.rewind
       words.read
     end
+
+    def get_title
+      @model.title
+    end
   end
 
   module GalaxyLib
@@ -113,72 +124,66 @@
       # The connections of the workflow.
       attr_accessor :connections
 
+      attr_accessor :title
+
       def self.parse(stream)
+        doc = ActiveSupport::JSON.decode(stream)
 
-        begin
+        workflow = GalaxyLib::Workflow.new
 
-          doc = LibXML::XML::Parser.string("<?xml version='1.0' encoding='UTF-8'?><content>#{stream}</content>").parse
+        workflow.inputs      = []
+        workflow.outputs     = []
+        workflow.steps       = []
+        workflow.connections = []
 
-          workflow = GalaxyLib::Workflow.new
+        workflow.title = doc["name"]
 
-          workflow.inputs      = []
-          workflow.outputs     = []
-          workflow.steps       = []
-          workflow.connections = []
+        # Parse the context of the workflow.
+        doc["steps"].each_key.sort.each do |step_id| # Need to sort because the steps are backwards in the JSON
+          step_element = doc["steps"][step_id]
 
-          # Parse the context of the workflow.
+          step = GalaxyLib::Step.new
 
-          doc.find("/content/steps/step/inputs/input").each do |input_element|
+          step.id          = step_id
+          step.name        = step_element["name"]
+          step.tool        = step_element["tool_id"] || "None"
+          #step.description = nil   # No description present in JSON
 
+          workflow.steps << step
+
+          step_element["inputs"].each do |input_element|
             input = GalaxyLib::Input.new
 
-            input.step_id     = input_element.find("../../id/text()")[0].to_s
-            input.name        = input_element.find("name/text()")[0].to_s
-            input.description = CGI.unescapeHTML(input_element.find("description/text()")[0].to_s)
+            input.step_id     = step_id
+            input.name        = input_element["name"]
+            input.description = input_element["description"]
 
             workflow.inputs << input
           end
 
-          doc.find("/content/steps/step/outputs/output").each do |output_element|
-
+          step_element["outputs"].each do |output_element|
             output = GalaxyLib::Output.new
 
-            output.step_id = output_element.find("../../id/text()")[0].to_s
-            output.name    = output_element.find("name/text()")[0].to_s
-            output.type    = output_element.find("type/text()")[0].to_s
+            output.step_id = step_id
+            output.name    = output_element["name"]
+            output.type    = output_element["type"]
 
             workflow.outputs << output
           end
 
-          doc.find("/content/steps/step").each do |step_element|
+          step_element["input_connections"].each do |conn_name, conn_element|
+            connection = GalaxyLib::Connection.new
 
-            step = GalaxyLib::Step.new
+            connection.source_id     = conn_element["id"].to_s
+            connection.source_output = conn_element["output_name"].to_s
+            connection.sink_id       = step_id
+            connection.sink_input    = conn_name
 
-            step.id          = step_element.find("id/text()")[0].to_s
-            step.name        = step_element.find("name/text()")[0].to_s
-            step.tool        = step_element.find("tool/text()")[0].to_s
-            step.description = CGI.unescapeHTML(step_element.find("description/text()")[0].to_s)
-
-            workflow.steps << step
+            workflow.connections << connection
           end
+        end
 
-          doc.find("/content/connections/connection").each do |conn_element|
-
-            conn = GalaxyLib::Connection.new
-
-            conn.source_id     = conn_element.find("source_id/text()")[0].to_s
-            conn.source_output = conn_element.find("source_output/text()")[0].to_s
-            conn.sink_id       = conn_element.find("sink_id/text()")[0].to_s
-            conn.sink_input    = conn_element.find("sink_input/text()")[0].to_s
-
-            workflow.connections << conn
-          end
-
-          workflow
-        rescue
-          Rails.logger.info $!
-          nil
-        end
+        workflow
       end
 
       def get_components

Modified: trunk/lib/workflow_processors/interface.rb (3023 => 3024)


--- trunk/lib/workflow_processors/interface.rb	2012-06-11 13:07:42 UTC (rev 3023)
+++ trunk/lib/workflow_processors/interface.rb	2012-06-12 08:58:45 UTC (rev 3024)
@@ -32,6 +32,10 @@
     def self.file_extensions_supported
       []
     end
+
+    def self.default_file_extension
+      nil
+    end
     
     def self.can_determine_type_from_file?
       false

Modified: trunk/lib/workflow_processors/taverna2.rb (3023 => 3024)


--- trunk/lib/workflow_processors/taverna2.rb	2012-06-11 13:07:42 UTC (rev 3023)
+++ trunk/lib/workflow_processors/taverna2.rb	2012-06-12 08:58:45 UTC (rev 3024)
@@ -41,6 +41,10 @@
     def self.file_extensions_supported
       [ "t2flow" ]
     end
+
+    def self.default_file_extension
+      "t2flow"
+    end
     
     def self.can_determine_type_from_file?
       true
@@ -81,7 +85,7 @@
 
     # End Object Initializer
     
-    
+
     # Begin Instance Methods
     
     # These provide more specific functionality for a given workflow definition, such as parsing for metadata and image generation.

Copied: trunk/public/images/galaxyIcon_noText.png (from rev 3023, branches/galaxy-integration/public/images/galaxyIcon_noText.png)


(Binary files differ)

reply via email to

[Prev in Thread] Current Thread [Next in Thread]