Split out HTTP request manipulation functions from template_helpers.py, which
authorTodd Larsen <tlarsen@google.com>
Tue, 23 Sep 2008 23:20:23 +0000
changeset 189 1cf3e7531382
parent 188 27ed1a09c98d
child 190 b1351bf81064
Split out HTTP request manipulation functions from template_helpers.py, which is in danger of becoming a "misc" or "util" module unnecessarily.
app/soc/views/helpers/request_helpers.py
app/soc/views/helpers/template_helpers.py
app/soc/views/site/user/profile.py
app/soc/views/user/profile.py
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/app/soc/views/helpers/request_helpers.py	Tue Sep 23 23:20:23 2008 +0000
@@ -0,0 +1,87 @@
+#!/usr/bin/python2.5
+#
+# Copyright 2008 the Melange authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+"""Helpers for manipulating HTTP requests.
+"""
+
+__authors__ = [
+  '"Todd Larsen" <tlarsen@google.com>',
+  ]
+
+
+def getSingleIndexedParamValue(request, param_name, values=()):
+  """Returns a value indexed by a query parameter in the HTTP request.
+  
+  Args:
+    request: the Django HTTP request object
+    param_name: name of the query parameter in the HTTP request
+    values: list (or tuple) of ordered values; one of which is
+      retrieved by the index value of the param_name argument in
+      the HTTP request
+      
+  Returns:
+    None if the query parameter was not present, was not an integer, or
+      was an integer that is not a valid [0..len(values)-1] index into
+      the values list.
+    Otherwise, returns values[int(param_name value)]
+  """
+  value_idx = request.GET.get(param_name)
+  
+  if isinstance(value_idx, (tuple, list)):
+    # keep only the first argument if multiple are present
+    value_idx = value_idx[0]
+
+  try:
+    # GET parameter 'param_name' should be an integer value index
+    value_idx = int(value_idx)
+  except:
+    # ignore bogus or missing parameter values, so return None (no message)
+    return None
+    
+  if value_idx < 0:
+    # value index out of range, so return None (no value)
+    return None
+
+  if value_idx >= len(values):
+    # value index out of range, so return None (no value)
+    return None
+
+  # return value associated with valid value index
+  return values[value_idx]
+
+
+def getSingleIndexedParamValueIfMissing(value, request, param_name,
+                                        values=()):
+  """Returns missing value indexed by a query parameter in the HTTP request.
+  
+  Args:
+    value: an existing value, or a "False" value such as None
+    request, param_name, values: see getSingleIndexParamValue()
+    
+  Returns:
+    value, if value is "non-False"
+    Otherwise, returns getSingleIndexedParamValue() result.
+  """
+  if value:
+    # value already present, so return it
+    return value
+
+  return getSingleIndexedParamValue(request, param_name, values=values)
+
+
+# TODO(tlarsen):  write getMultipleIndexParamValues() that returns a
+#   list of values if present, omitting those values that are
+#   out of range
--- a/app/soc/views/helpers/template_helpers.py	Tue Sep 23 19:20:57 2008 +0000
+++ b/app/soc/views/helpers/template_helpers.py	Tue Sep 23 23:20:23 2008 +0000
@@ -67,68 +67,3 @@
   html.replace('&#39;',"'").replace('&lt;', '<')
   html.replace('&gt;', '>').replace('&quot;', '"').replace('&amp;', '&')
   return html
-
-
-def getSingleIndexedParamValue(request, param_name, values=()):
-  """Returns a value indexed by a query parameter in the HTTP request.
-  
-  Args:
-    request: the Django HTTP request object
-    param_name: name of the query parameter in the HTTP request
-    values: list (or tuple) of ordered values; one of which is
-      retrieved by the index value of the param_name argument in
-      the HTTP request
-      
-  Returns:
-    None if the query parameter was not present, was not an integer, or
-      was an integer that is not a valid [0..len(values)-1] index into
-      the values list.
-    Otherwise, returns values[int(param_name value)]
-  """
-  value_idx = request.GET.get(param_name)
-  
-  if isinstance(value_idx, (tuple, list)):
-    # keep only the first argument if multiple are present
-    value_idx = value_idx[0]
-
-  try:
-    # GET parameter 'param_name' should be an integer value index
-    value_idx = int(value_idx)
-  except:
-    # ignore bogus or missing parameter values, so return None (no message)
-    return None
-    
-  if value_idx < 0:
-    # value index out of range, so return None (no value)
-    return None
-
-  if value_idx >= len(values):
-    # value index out of range, so return None (no value)
-    return None
-
-  # return value associated with valid value index
-  return values[value_idx]
-
-
-def getSingleIndexedParamValueIfMissing(value, request, param_name,
-                                        values=()):
-  """Returns missing value indexed by a query parameter in the HTTP request.
-  
-  Args:
-    value: an existing value, or a "False" value such as None
-    request, param_name, values: see getSingleIndexParamValue()
-    
-  Returns:
-    value, if value is "non-False"
-    Otherwise, returns getSingleIndexedParamValue() result.
-  """
-  if value:
-    # value already present, so return it
-    return value
-
-  return getSingleIndexedParamValue(request, param_name, values=values)
-
-
-# TODO(tlarsen):  write getMultipleIndexParamValues() that returns a
-#   list of values if present, omitting those values that are
-#   out of range
--- a/app/soc/views/site/user/profile.py	Tue Sep 23 19:20:57 2008 +0000
+++ b/app/soc/views/site/user/profile.py	Tue Sep 23 23:20:23 2008 +0000
@@ -32,8 +32,8 @@
 from soc.logic.site import id_user
 from soc.views import simple
 from soc.views.helpers import forms_helpers
+from soc.views.helpers import request_helpers
 from soc.views.helpers import response_helpers
-from soc.views.helpers import template_helpers
 from soc.views.user import profile
 
 import soc.models.user
@@ -291,7 +291,7 @@
         # referrer was us, so select which submit message to display
         # (may display no message if ?s=0 parameter is not present)
         context['submit_message'] = (
-            template_helpers.getSingleIndexedParamValue(
+            request_helpers.getSingleIndexedParamValue(
                 request, profile.SUBMIT_MSG_PARAM_NAME,
                 values=profile.SUBMIT_MESSAGES))
 
--- a/app/soc/views/user/profile.py	Tue Sep 23 19:20:57 2008 +0000
+++ b/app/soc/views/user/profile.py	Tue Sep 23 23:20:23 2008 +0000
@@ -32,8 +32,8 @@
 from soc.logic.site import id_user
 from soc.views import simple
 from soc.views.helpers import forms_helpers
+from soc.views.helpers import request_helpers
 from soc.views.helpers import response_helpers
-from soc.views.helpers import template_helpers
 
 import soc.models.user
 
@@ -146,7 +146,7 @@
       # referrer was us, so select which submit message to display
       # (may display no message if ?s=0 parameter is not present)
       context['submit_message'] = (
-          template_helpers.getSingleIndexedParamValue(
+          url_helpers.getSingleIndexedParamValue(
               request, SUBMIT_MSG_PARAM_NAME, values=SUBMIT_MESSAGES))
 
       # populate form with the existing User entity