thirdparty/google_appengine/lib/django/tests/modeltests/transactions/models.py
changeset 2866 a04b1e4126c4
parent 2864 2e0b0af889be
child 2868 9f7f269383f7
--- a/thirdparty/google_appengine/lib/django/tests/modeltests/transactions/models.py	Sun Sep 06 23:31:53 2009 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,99 +0,0 @@
-"""
-15. Transactions
-
-Django handles transactions in three different ways. The default is to commit
-each transaction upon a write, but you can decorate a function to get
-commit-on-success behavior. Alternatively, you can manage the transaction
-manually.
-"""
-
-from django.db import models
-
-class Reporter(models.Model):
-    first_name = models.CharField(maxlength=30)
-    last_name = models.CharField(maxlength=30)
-    email = models.EmailField()
-
-    def __str__(self):
-        return "%s %s" % (self.first_name, self.last_name)
-
-__test__ = {'API_TESTS':"""
->>> from django.db import connection, transaction
-"""}
-
-from django.conf import settings
-
-building_docs = getattr(settings, 'BUILDING_DOCS', False)
-
-if building_docs or settings.DATABASE_ENGINE != 'mysql':
-    __test__['API_TESTS'] += """
-# the default behavior is to autocommit after each save() action
->>> def create_a_reporter_then_fail(first, last):
-...     a = Reporter(first_name=first, last_name=last)
-...     a.save()
-...     raise Exception("I meant to do that")
-...
->>> create_a_reporter_then_fail("Alice", "Smith")
-Traceback (most recent call last):
-    ...
-Exception: I meant to do that
-
-# The object created before the exception still exists
->>> Reporter.objects.all()
-[<Reporter: Alice Smith>]
-
-# the autocommit decorator works exactly the same as the default behavior
->>> autocomitted_create_then_fail = transaction.autocommit(create_a_reporter_then_fail)
->>> autocomitted_create_then_fail("Ben", "Jones")
-Traceback (most recent call last):
-    ...
-Exception: I meant to do that
-
-# Same behavior as before
->>> Reporter.objects.all()
-[<Reporter: Alice Smith>, <Reporter: Ben Jones>]
-
-# With the commit_on_success decorator, the transaction is only comitted if the
-# function doesn't throw an exception
->>> committed_on_success = transaction.commit_on_success(create_a_reporter_then_fail)
->>> committed_on_success("Carol", "Doe")
-Traceback (most recent call last):
-    ...
-Exception: I meant to do that
-
-# This time the object never got saved
->>> Reporter.objects.all()
-[<Reporter: Alice Smith>, <Reporter: Ben Jones>]
-
-# If there aren't any exceptions, the data will get saved
->>> def remove_a_reporter():
-...     r = Reporter.objects.get(first_name="Alice")
-...     r.delete()
-...
->>> remove_comitted_on_success = transaction.commit_on_success(remove_a_reporter)
->>> remove_comitted_on_success()
->>> Reporter.objects.all()
-[<Reporter: Ben Jones>]
-
-# You can manually manage transactions if you really want to, but you
-# have to remember to commit/rollback
->>> def manually_managed():
-...     r = Reporter(first_name="Carol", last_name="Doe")
-...     r.save()
-...     transaction.commit()
->>> manually_managed = transaction.commit_manually(manually_managed)
->>> manually_managed()
->>> Reporter.objects.all()
-[<Reporter: Ben Jones>, <Reporter: Carol Doe>]
-
-# If you forget, you'll get bad errors
->>> def manually_managed_mistake():
-...     r = Reporter(first_name="David", last_name="Davidson")
-...     r.save()
-...     # oops, I forgot to commit/rollback!
->>> manually_managed_mistake = transaction.commit_manually(manually_managed_mistake)
->>> manually_managed_mistake()
-Traceback (most recent call last):
-    ...
-TransactionManagementError: Transaction managed block ended with pending COMMIT/ROLLBACK
-"""
\ No newline at end of file