Diff
Modified: trunk/app/controllers/workflows_controller.rb (2134 => 2135)
--- trunk/app/controllers/workflows_controller.rb 2009-03-24 19:03:28 UTC (rev 2134)
+++ trunk/app/controllers/workflows_controller.rb 2009-03-25 22:26:02 UTC (rev 2135)
@@ -829,7 +829,8 @@
# Set the internal unique name for this particular workflow (or workflow_version).
workflow_to_set.set_unique_name
- workflow_to_set.image, workflow_to_set.svg = processor_instance.get_preview_images if processor_class.can_generate_preview?
+ workflow_to_set.image = processor_instance.get_preview_image if processor_class.can_generate_preview_image?
+ workflow_to_set.svg = processor_instance.get_preview_svg if processor_class.can_generate_preview_svg?
rescue Exception => ex
worked = false
err_msg = "ERROR: some processing failed in workflow processor '#{processor_class.to_s}'.\nEXCEPTION: #{ex}"
Modified: trunk/app/models/network.rb (2134 => 2135)
--- trunk/app/models/network.rb 2009-03-24 19:03:28 UTC (rev 2134)
+++ trunk/app/models/network.rb 2009-03-25 22:26:02 UTC (rev 2135)
@@ -51,6 +51,10 @@
alias_method :contributor, :owner
+ def label
+ return title
+ end
+
def owner?(userid)
user_id.to_i == userid.to_i
end
Modified: trunk/app/models/user.rb (2134 => 2135)
--- trunk/app/models/user.rb 2009-03-24 19:03:28 UTC (rev 2134)
+++ trunk/app/models/user.rb 2009-03-25 22:26:02 UTC (rev 2135)
@@ -24,6 +24,10 @@
has_many :experiments, :as => :contributor,
:conditions => ["contributor_type = ?", "User"]
+ def label
+ return name
+ end
+
def self.most_recent(limit=5)
self.find(:all,
:order => "users.created_at DESC",
Modified: trunk/app/models/workflow.rb (2134 => 2135)
--- trunk/app/models/workflow.rb 2009-03-24 19:03:28 UTC (rev 2134)
+++ trunk/app/models/workflow.rb 2009-03-25 22:26:02 UTC (rev 2135)
@@ -29,6 +29,9 @@
wv.destroy
end }
+ before_validation :check_unique_name
+ before_validation :extract_metadata
+
acts_as_contributable
acts_as_bookmarkable
@@ -114,6 +117,10 @@
return list
end
+ def check_unique_name
+ set_unique_name if unique_name.nil?
+ end
+
# Sets an internal unique name for this workflow.
def set_unique_name
salt = rand 1000000
@@ -125,6 +132,29 @@
end
end
+ # This method is called before save and attempts to pull out metadata if it
+ # hasn't been set
+ def extract_metadata
+
+ if !content_blob.nil? && processor_class
+
+ do_image = true if image.nil? && processor_class.can_generate_preview_image?
+ do_svg = true if svg.nil? && processor_class.can_generate_preview_svg?
+ do_title = true if title.nil?
+ do_desc = true if body.nil?
+
+ if do_image || do_svg || do_title || do_desc
+
+ processor = processor_class.new(content_blob.data)
+
+ self.image = processor.get_preview_image if do_image
+ self.svg = processor.get_preview_svg if do_svg
+ self.title = processor.get_title if do_title
+ self.body = processor.get_description if do_desc
+ end
+ end
+ end
+
def processor_class
@processor_class ||= WorkflowTypesHandler.processor_class_for_content_type(self.content_type)
end
Modified: trunk/config/tables.xml
(Binary files differ)
Modified: trunk/lib/rest.rb (2134 => 2135)
--- trunk/lib/rest.rb 2009-03-24 19:03:28 UTC (rev 2134)
+++ trunk/lib/rest.rb 2009-03-25 22:26:02 UTC (rev 2135)
@@ -415,6 +415,7 @@
when 'Creditation'; return nil
when 'Attribution'; return nil
+ when 'Tagging'; return nil
when 'Workflow::Version'; return "#{rest_resource_uri(ob.workflow)}?version=#{ob.version}"
end
@@ -448,6 +449,7 @@
when 'Download'; return "#{base}/download.xml?id=#{ob.id}"
when 'PackContributableEntry'; return "#{base}/internal-pack-item.xml?id=#{ob.id}"
when 'PackRemoteEntry'; return "#{base}/external-pack-item.xml?id=#{ob.id}"
+ when 'Tagging'; return "#{base}/tagging.xml?id=#{ob.id}"
when 'Creditation'; return nil
when 'Attribution'; return nil
@@ -470,6 +472,7 @@
when 'Citation'; return 'citation'
when 'Announcement'; return 'announcement'
when 'Tag'; return 'tag'
+ when 'Tagging'; return 'tagging'
when 'Pack'; return 'pack'
when 'Experiment'; return 'experiment'
when 'Download'; return 'download'
@@ -493,6 +496,7 @@
when 'Citation'; return ob.title
when 'Announcement'; return ob.title
when 'Tag'; return ob.name
+ when 'Tagging'; return ob.tag.name
when 'Pack'; return ob.title
when 'Experiment'; return ob.title
when 'Download'; return ''
@@ -592,14 +596,21 @@
resource
end
-def get_rest_uri(req_uri, rules, user, query)
+def rest_access_redirect(req_uri, rules, user, query)
return rest_response(400) if query['resource'].nil?
- obs = (obs.select do |c| c.respond_to?('contribution') == false or Authorization.is_authorized?("index", nil, c, user) end)
- doc = REXML::Document.new("<?xml version=\"1.0\" encoding=\"UTF-8\"?><rest-uri/>")
+ bits = parse_resource_uri(query['resource'])
- "bing"
+ return rest_response(404) if bits.nil?
+
+ ob = eval(bits[0]).find_by_id(bits[1])
+
+ return rest_response(404) if ob.nil?
+
+ return rest_response(401) if !Authorization.is_authorized?('view', nil, ob, user)
+
+ rest_response(307, :location => rest_access_uri(ob))
end
def create_default_policy(user)
@@ -645,16 +656,8 @@
workflow.image = image
image.close
-
- elsif content and workflow.processor_class and workflow.processor_class.can_generate_preview?
-
- processor = workflow.processor_class.new(content)
- workflow.image, workflow.svg = processor.get_preview_images
-
end
- workflow.set_unique_name
-
if not workflow.save
return rest_response(400, :object => workflow)
end
@@ -853,7 +856,7 @@
render(:xml => doc.to_s)
end
-def whoami(req_uri, rules, user, query)
+def whoami_redirect(req_uri, rules, user, query)
if user.class == User
rest_response(307, :location => rest_access_uri(user))
else
Modified: trunk/lib/workflow_processors/interface.rb (2134 => 2135)
--- trunk/lib/workflow_processors/interface.rb 2009-03-24 19:03:28 UTC (rev 2134)
+++ trunk/lib/workflow_processors/interface.rb 2009-03-25 22:26:02 UTC (rev 2135)
@@ -46,10 +46,14 @@
false
end
- def self.can_generate_preview?
+ def self.can_generate_preview_image?
false
end
+ def self.can_generate_preview_svg?
+ false
+ end
+
# End Class Methods
@@ -74,10 +78,14 @@
nil
end
- def get_preview_images
+ def get_preview_image
nil
end
+ def get_preview_svg
+ nil
+ end
+
def get_workflow_model_object
nil
end
Modified: trunk/lib/workflow_processors/taverna2_beta.rb (2134 => 2135)
--- trunk/lib/workflow_processors/taverna2_beta.rb 2009-03-24 19:03:28 UTC (rev 2134)
+++ trunk/lib/workflow_processors/taverna2_beta.rb 2009-03-25 22:26:02 UTC (rev 2135)
@@ -45,10 +45,14 @@
false
end
- def self.can_generate_preview?
+ def self.can_generate_preview_image?
false
end
+ def self.can_generate_preview_svg?
+ false
+ end
+
# End Class Methods
@@ -69,4 +73,4 @@
# End Instance Methods
end
-end
\ No newline at end of file
+end
Modified: trunk/lib/workflow_processors/taverna_scufl.rb (2134 => 2135)
--- trunk/lib/workflow_processors/taverna_scufl.rb 2009-03-24 19:03:28 UTC (rev 2134)
+++ trunk/lib/workflow_processors/taverna_scufl.rb 2009-03-25 22:26:02 UTC (rev 2135)
@@ -63,10 +63,14 @@
true
end
- def self.can_generate_preview?
+ def self.can_generate_preview_image?
true
end
+ def self.can_generate_preview_svg?
+ true
+ end
+
# End Class Methods
@@ -94,30 +98,42 @@
return @scufl_model.description.description
end
- def get_preview_images
- return nil if @scufl_model.nil?
+ def get_preview_image
+ return nil if @scufl_model.nil? || RUBY_PLATFORM =~ /mswin32/
+
+ title = @scufl_model.description.title.blank? ? "untitled" : @scufl_model.description.title
+ filename = title.gsub(/[^\w\.\-]/,'_').downcase
- if RUBY_PLATFORM =~ /mswin32/
- return nil
- else
- title = @scufl_model.description.title.blank? ? "untitled" : @scufl_model.description.title
- filename = title.gsub(/[^\w\.\-]/,'_').downcase
-
- i = Tempfile.new("image")
- Scufl::Dot.new.write_dot(i, @scufl_model)
- i.close(false)
- img = StringIO.new(`dot -Tpng #{i.path}`)
- svg = StringIO.new(`dot -Tsvg #{i.path}`)
- img.extend FileUpload
- img.original_filename = "#{filename}.png"
- img.content_type = "image/png"
- svg.extend FileUpload
- svg.original_filename = "#{filename}.svg"
- svg.content_type = "image/svg+xml"
- return [img, svg]
- end
+ i = Tempfile.new("image")
+ Scufl::Dot.new.write_dot(i, @scufl_model)
+ i.close(false)
+
+ img = StringIO.new(`dot -Tpng #{i.path}`)
+ img.extend FileUpload
+ img.original_filename = "#{filename}.png"
+ img.content_type = "image/png"
+
+ img
end
-
+
+ def get_preview_svg
+ return nil if @scufl_model.nil? || RUBY_PLATFORM =~ /mswin32/
+
+ title = @scufl_model.description.title.blank? ? "untitled" : @scufl_model.description.title
+ filename = title.gsub(/[^\w\.\-]/,'_').downcase
+
+ i = Tempfile.new("image")
+ Scufl::Dot.new.write_dot(i, @scufl_model)
+ i.close(false)
+
+ svg = StringIO.new(`dot -Tsvg #{i.path}`)
+ svg.extend FileUpload
+ svg.original_filename = "#{filename}.svg"
+ svg.content_type = "image/svg+xml"
+
+ svg
+ end
+
def get_workflow_model_object
@scufl_model
end
Modified: trunk/lib/workflow_processors/trident_opc.rb (2134 => 2135)
--- trunk/lib/workflow_processors/trident_opc.rb 2009-03-24 19:03:28 UTC (rev 2134)
+++ trunk/lib/workflow_processors/trident_opc.rb 2009-03-25 22:26:02 UTC (rev 2135)
@@ -45,10 +45,14 @@
false
end
- def self.can_generate_preview?
+ def self.can_generate_preview_image?
false
end
+ def self.can_generate_preview_svg?
+ false
+ end
+
# End Class Methods
@@ -69,4 +73,4 @@
# End Instance Methods
end
-end
\ No newline at end of file
+end
Modified: trunk/lib/workflow_processors/trident_xoml.rb (2134 => 2135)
--- trunk/lib/workflow_processors/trident_xoml.rb 2009-03-24 19:03:28 UTC (rev 2134)
+++ trunk/lib/workflow_processors/trident_xoml.rb 2009-03-25 22:26:02 UTC (rev 2135)
@@ -45,10 +45,14 @@
false
end
- def self.can_generate_preview?
+ def self.can_generate_preview_image?
false
end
+ def self.can_generate_preview_svg?
+ false
+ end
+
# End Class Methods
@@ -69,4 +73,4 @@
# End Instance Methods
end
-end
\ No newline at end of file
+end
Modified: trunk/vendor/plugins/acts_as_taggable_redux/lib/tagging.rb (2134 => 2135)
--- trunk/vendor/plugins/acts_as_taggable_redux/lib/tagging.rb 2009-03-24 19:03:28 UTC (rev 2134)
+++ trunk/vendor/plugins/acts_as_taggable_redux/lib/tagging.rb 2009-03-25 22:26:02 UTC (rev 2135)
@@ -10,4 +10,8 @@
:order => "created_at DESC",
:limit => limit)
end
-end
\ No newline at end of file
+
+ def label
+ return tag.name if tag
+ end
+end