myexperiment-hackers
[Top][All Lists]
Advanced

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

[myexperiment-hackers] [2204] trunk/lib/rest.rb: added permissions eleme


From: noreply
Subject: [myexperiment-hackers] [2204] trunk/lib/rest.rb: added permissions element to workflow upload
Date: Fri, 29 May 2009 20:09:59 -0400 (EDT)

Revision
2204
Author
dgc
Date
2009-05-29 20:09:59 -0400 (Fri, 29 May 2009)

Log Message

added permissions element to workflow upload

Modified Paths

Diff

Modified: trunk/lib/rest.rb (2203 => 2204)


--- trunk/lib/rest.rb	2009-05-29 15:14:08 UTC (rev 2203)
+++ trunk/lib/rest.rb	2009-05-30 00:09:59 UTC (rev 2204)
@@ -735,9 +735,50 @@
 end
 
 def create_default_policy(user)
-  Policy.new(:contributor => user, :name => 'auto', :update_mode => 6, :share_mode => 0)
+  Policy.new(:contributor => user, :name => 'auto', :share_mode => 7, :update_mode => 6)
 end
 
+def update_permissions(ob, permissions)
+
+  share_mode  = 7
+  update_mode = 6
+
+  # clear out any permission records for this contributable
+
+  ob.contribution.policy.permissions.each do |p|
+    p.destroy
+  end
+
+  # process permission elements
+
+  if permissions
+    permissions.find('permission').each do |permission|
+
+      # handle public privileges
+
+      if permission.find_first('category/text()').to_s == 'public'
+
+        privileges = {}
+
+        permission.find('privilege').each do |el|
+          privileges[el['type']] = true
+        end
+
+        if privileges["view"] && privileges["download"]
+          share_mode = 0
+        elsif privileges["view"]
+          share_mode = 2
+        else
+          share_mode = 7
+        end
+      end
+    end
+  end
+
+  ob.contribution.policy.update_attributes(:share_mode => share_mode,
+      :update_mode => update_mode)
+end
+
 def workflow_aux(action, req_uri, rules, user, query)
 
   # Obtain object
@@ -770,6 +811,8 @@
     content      = parse_element(data, :binary, '/workflow/content')
     preview      = parse_element(data, :binary, '/workflow/preview')
 
+    permissions  = data.find_first('/workflow/permissions')
+
     # build the contributable
 
     ob.title        = title        if title
@@ -831,6 +874,8 @@
       ob.contribution.policy = create_default_policy(user)
       ob.contribution.save
     end
+
+    update_permissions(ob, permissions)
   end
 
   rest_get_request(ob, "workflow", user,

reply via email to

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