thirdparty/google_appengine/google/appengine/api/labs/taskqueue/taskqueue.py
changeset 2864 2e0b0af889be
parent 2413 d0b7dac5325c
child 3031 7678f72140e6
--- a/thirdparty/google_appengine/google/appengine/api/labs/taskqueue/taskqueue.py	Sat Sep 05 14:04:24 2009 +0200
+++ b/thirdparty/google_appengine/google/appengine/api/labs/taskqueue/taskqueue.py	Sun Sep 06 23:31:53 2009 +0200
@@ -480,19 +480,9 @@
     """
     return self.__enqueued
 
-  def add(self, queue_name=_DEFAULT_QUEUE):
-    """Adds this Task to a queue.
-
-    Args:
-      queue_name: Name of the queue to add this Task to. (optional)
-
-    Returns:
-      This Task itself.
-
-    Raises:
-      BadTaskStateError if this task has already been enqueued.
-    """
-    return Queue(queue_name).add(self)
+  def add(self, queue_name=_DEFAULT_QUEUE, transactional=True):
+    """Adds this Task to a queue. See Queue.add."""
+    return Queue(queue_name).add(self, transactional=transactional)
 
 
 class Queue(object):
@@ -514,11 +504,13 @@
     self.__name = name
     self.__url = '%s/%s' % (_DEFAULT_QUEUE_PATH, self.__name)
 
-  def add(self, task):
+  def add(self, task, transactional=True):
     """Adds a Task to this Queue.
 
     Args:
       task: The Task to add.
+      transactional: If false adds the task to a queue irrespectively to the
+        enclosing transaction success or failure. (optional)
 
     Returns:
       The Task that was supplied to this method.
@@ -555,6 +547,10 @@
       header.set_key(key)
       header.set_value(value)
 
+    if transactional:
+      from google.appengine.api import datastore
+      datastore._MaybeSetupTransaction(request, [])
+
     call_tuple = ('taskqueue', 'Add', request, response)
     apiproxy_stub_map.apiproxy.GetPreCallHooks().Call(*call_tuple)
     try: