Define the Models for implementing Quizzes (collections of Questions) and their
Responses (collections of Answers to those Questions). These Models would
form the basis of storage for such items as:
Terms of Service (Quiz)
Question ("I agree...")
Response -> Answer (answer to "I agree..." confirmation)
solution ("Yes" Answer to the "I agree..." Question)
Mentor and Student surveys (Quiz)
Questions (including "Pay this student?")
Response -> Answers
solution ("Yes" Answer to the "Pay this student?" Question)
Organization applications
Student Proposal review, comment, and scoring system
GHOP task tracking (a specific task list item would be a Quiz)
Patch by: Todd Larsen
Review by: Pawel Solyga, Sverre Rabbelier, Chen Lunpeng
Review URL: http://codereviews.googleopensourceprograms.com/1403
from django.db import transaction
class TransactionMiddleware(object):
"""
Transaction middleware. If this is enabled, each view function will be run
with commit_on_response activated - that way a save() doesn't do a direct
commit, the commit is done when a successful response is created. If an
exception happens, the database is rolled back.
"""
def process_request(self, request):
"""Enters transaction management"""
transaction.enter_transaction_management()
transaction.managed(True)
def process_exception(self, request, exception):
"""Rolls back the database and leaves transaction management"""
if transaction.is_dirty():
transaction.rollback()
transaction.leave_transaction_management()
def process_response(self, request, response):
"""Commits and leaves transaction management."""
if transaction.is_managed():
if transaction.is_dirty():
transaction.commit()
transaction.leave_transaction_management()
return response