Add a new per-request value store to Core
authorSverre Rabbelier <srabbelier@gmail.com>
Fri, 28 Aug 2009 11:45:55 -0700
changeset 2833 5aa891de5aa5
parent 2832 2a0a7e081caf
child 2834 03a1602c63f1
Add a new per-request value store to Core
app/soc/modules/core.py
--- a/app/soc/modules/core.py	Thu Aug 27 20:34:43 2009 -0700
+++ b/app/soc/modules/core.py	Fri Aug 28 11:45:55 2009 -0700
@@ -21,6 +21,8 @@
   ]
 
 
+import logging
+
 from django.conf.urls import defaults
 
 import settings
@@ -108,6 +110,7 @@
 
     self.sitemap = []
     self.sidebar = []
+    self.per_request_cache = {}
 
   ##
   ## internal
@@ -135,6 +138,36 @@
   ## Core code
   ##
 
+  def startNewRequest(self, request):
+    """Prepares core to handle a new request.
+    """
+
+    self.per_request_value = {}
+    self.setRequestValue('request', request)
+
+  def endRequest(self, request):
+    """Performs cleanup after current request.
+    """
+
+    old_request = self.getRequestValue('request')
+    self.per_request_value = {}
+
+    if id(old_request) != id(request):
+      logging.error("ending request: \n'%s'\n != \n'%s'\n" % (
+          old_request, request))
+
+  def getRequestValue(self, key, default=None):
+    """Gets a per-request value.
+    """
+
+    return self.per_request_value.get(key, default)
+
+  def setRequestValue(self, key, value):
+    """Sets a per-request value.
+    """
+
+    self.per_request_value[key] = value
+
   def getPatterns(self):
     """Returns the Django patterns for this site.
     """