Diff
Modified: branches/events/app/controllers/workflows_controller.rb (3100 => 3101)
--- branches/events/app/controllers/workflows_controller.rb 2012-08-23 13:33:21 UTC (rev 3100)
+++ branches/events/app/controllers/workflows_controller.rb 2012-08-23 13:34:24 UTC (rev 3101)
@@ -335,6 +335,9 @@
respond_to do |format|
if @workflow.save
+
+ Event.create(:subject => current_user, :action ="" 'create', :objekt => @workflow)
+
if params[:workflow][:tag_list]
@workflow.refresh_tags(convert_tags_to_gem_format(params[:workflow][:tag_list]), current_user)
@workflow.reload
@@ -350,7 +353,7 @@
# Credits and Attributions:
update_credits(@workflow, params)
- update_attributions(@workflow, params)
+ update_attributions(@workflow, params, current_user)
update_layout(@workflow, params[:layout])
@@ -464,6 +467,8 @@
rescue
end
+ Event.create(:subject => current_user, :action ="" 'create version', :objekt => @workflow)
+
respond_to do |format|
flash[:notice] = 'New workflow version successfully created.'
format.html {
@@ -520,6 +525,8 @@
if @workflow.update_attributes(params[:workflow])
+ Event.create(:subject => current_user, :action ="" 'edit', :objekt => @workflow)
+
if params[:workflow][:tag_list]
@workflow.refresh_tags(convert_tags_to_gem_format(params[:workflow][:tag_list]), current_user)
@workflow.reload
@@ -528,7 +535,7 @@
policy_err_msg = update_policy(@workflow, params)
update_credits(@workflow, params)
- update_attributions(@workflow, params)
+ update_attributions(@workflow, params, current_user)
update_layout(@workflow, params[:layout])
@@ -573,6 +580,7 @@
respond_to do |format|
if success
+ Event.create(:subject => current_user, :action ="" 'edit version', :extra => version.version, :objekt => @workflow)
flash[:notice] = "Workflow version #{version.version}: \"#{original_title}\" has been updated."
format.html { redirect_to(workflow_url(@workflow) + "?version=#{params[:version]}") }
else
Modified: branches/events/lib/rest.rb (3100 => 3101)
--- branches/events/lib/rest.rb 2012-08-23 13:33:21 UTC (rev 3100)
+++ branches/events/lib/rest.rb 2012-08-23 13:34:24 UTC (rev 3101)
@@ -1121,6 +1121,15 @@
success = ob.save
+ if success
+ case "#{action} #{new_version || edit_version}"
+ when "create false": Event.create(:subject => opts[:user], :action ="" 'create', :objekt => ob)
+ when "create true": Event.create(:subject => opts[:user], :action ="" 'create version', :objekt => ob)
+ when "edit false": Event.create(:subject => opts[:user], :action ="" 'edit', :objekt => ob)
+ when "edit true": Event.create(:subject => opts[:user], :action ="" 'edit version', :objekt => ob, :extra => ob.version)
+ end
+ end
+
return rest_response(400, :object => ob) unless success
# Elements to update if we're not dealing with a workflow version
@@ -1244,6 +1253,7 @@
ob.content_blob = ContentBlob.new(:data ="" content) if content
new_version = action == 'create' && opts[:query][:id]
+ edit_version = action == 'edit' && opts[:query]['version'] != nil
if new_version
ob[:revision_comments] = revision_comment
@@ -2286,10 +2296,10 @@
# Call dispatcher
def rest_call_request(opts)
- begin
+# begin
send(opts[:rules]['Function'], opts)
- rescue
- return rest_response(500)
- end
+# rescue
+# return rest_response(500)
+# end
end
Modified: branches/events/test/functional/api_controller_test.rb (3100 => 3101)
--- branches/events/test/functional/api_controller_test.rb 2012-08-23 13:33:21 UTC (rev 3100)
+++ branches/events/test/functional/api_controller_test.rb 2012-08-23 13:34:24 UTC (rev 3101)
@@ -19,6 +19,7 @@
def test_workflows
existing_workflows = Workflow.find(:all)
+ existing_events = Event.all
login_as(:john)
@@ -44,9 +45,17 @@
assert_response(:success)
extra_workflows = Workflow.find(:all) - existing_workflows
+ extra_events = Event.find(:all). - existing_events
assert_equal(1, extra_workflows.length)
+ assert_equal(1, extra_events.length)
+ new_event = (extra_events - existing_events).first
+
+ assert_equal("John Smith", new_event.subject_label);
+ assert_equal("create", new_event.action);
+ assert_equal(title, new_event.objekt_label);
+
@workflow_id = extra_workflows.first.id
# get the workflow
@@ -77,6 +86,8 @@
setup
login_as(:john)
+ existing_events = Event.all
+
rest_request(:put, 'workflow', "<?xml version='1.0'?>
<workflow>
<title>#{title2}</title>
@@ -84,6 +95,15 @@
assert_response(:success)
+ extra_events = Event.find(:all). - existing_events
+ assert_equal(1, extra_events.length)
+
+ new_event = (extra_events - existing_events).first
+
+ assert_equal("John Smith", new_event.subject_label);
+ assert_equal("edit", new_event.action);
+ assert_equal(title2, new_event.objekt_label);
+
# get the updated workflow
response = rest_request(:get, 'workflow', nil, "id" => @workflow_id,
@@ -100,6 +120,8 @@
# post a new version of the workflow
+ existing_events = Event.all
+
rest_request(:post, 'workflow', "<?xml version='1.0'?>
<workflow>
<type>Taverna 2</type>
@@ -108,6 +130,15 @@
assert_response(:success)
+ extra_events = Event.find(:all). - existing_events
+ assert_equal(1, extra_events.length)
+
+ new_event = (extra_events - existing_events).first
+
+ assert_equal("John Smith", new_event.subject_label);
+ assert_equal("create version", new_event.action);
+ assert_equal("Fetch today's xkcd comic", new_event.objekt_label);
+
workflow = Workflow.find(@workflow_id)
assert_equal(2, workflow.versions.length)
@@ -134,6 +165,8 @@
# edit a particular version of a workflow
+ existing_events = Event.all
+
rest_request(:put, 'workflow', "<?xml version='1.0'?>
<workflow>
<title>Oranges</title>
@@ -141,6 +174,16 @@
assert_response(:success)
+ extra_events = Event.find(:all). - existing_events
+ assert_equal(1, extra_events.length)
+
+ new_event = (extra_events - existing_events).first
+
+ assert_equal("John Smith", new_event.subject_label);
+ assert_equal("edit version", new_event.action);
+ assert_equal("1", new_event.extra);
+ assert_equal("Oranges", new_event.objekt_label);
+
# Verify that only version 1 was changed
response = rest_request(:get, 'workflow', nil, "id" => @workflow_id, "version" => "1",