diff options
Diffstat (limited to 'cobbler/Cheetah/Utils/WebInputMixin.py')
-rw-r--r-- | cobbler/Cheetah/Utils/WebInputMixin.py | 103 |
1 files changed, 0 insertions, 103 deletions
diff --git a/cobbler/Cheetah/Utils/WebInputMixin.py b/cobbler/Cheetah/Utils/WebInputMixin.py deleted file mode 100644 index 930c13e..0000000 --- a/cobbler/Cheetah/Utils/WebInputMixin.py +++ /dev/null @@ -1,103 +0,0 @@ -#!/usr/bin/env python -# $Id: WebInputMixin.py,v 1.10 2006/01/06 21:56:54 tavis_rudd Exp $ -"""Provides helpers for Template.webInput(), a method for importing web -transaction variables in bulk. See the docstring of webInput for full details. - -Meta-Data -================================================================================ -Author: Mike Orr <iron@mso.oz.net> -License: This software is released for unlimited distribution under the - terms of the MIT license. See the LICENSE file. -Version: $Revision: 1.10 $ -Start Date: 2002/03/17 -Last Revision Date: $Date: 2006/01/06 21:56:54 $ -""" -__author__ = "Mike Orr <iron@mso.oz.net>" -__revision__ = "$Revision: 1.10 $"[11:-2] - -from Cheetah.Utils.Misc import useOrRaise - -class NonNumericInputError(ValueError): pass - -################################################## -## PRIVATE FUNCTIONS AND CLASSES - -class _Converter: - """A container object for info about type converters. - .name, string, name of this converter (for error messages). - .func, function, factory function. - .default, value to use or raise if the real value is missing. - .error, value to use or raise if .func() raises an exception. - """ - def __init__(self, name, func, default, error): - self.name = name - self.func = func - self.default = default - self.error = error - - -def _lookup(name, func, multi, converters): - """Look up a Webware field/cookie/value/session value. Return - '(realName, value)' where 'realName' is like 'name' but with any - conversion suffix strips off. Applies numeric conversion and - single vs multi values according to the comments in the source. - """ - # Step 1 -- split off the conversion suffix from 'name'; e.g. "height:int". - # If there's no colon, the suffix is "". 'longName' is the name with the - # suffix, 'shortName' is without. - # XXX This implementation assumes "height:" means "height". - colon = name.find(':') - if colon != -1: - longName = name - shortName, ext = name[:colon], name[colon+1:] - else: - longName = shortName = name - ext = '' - - # Step 2 -- look up the values by calling 'func'. - if longName != shortName: - values = func(longName, None) or func(shortName, None) - else: - values = func(shortName, None) - # 'values' is a list of strings, a string or None. - - # Step 3 -- Coerce 'values' to a list of zero, one or more strings. - if values is None: - values = [] - elif isinstance(values, str): - values = [values] - - # Step 4 -- Find a _Converter object or raise TypeError. - try: - converter = converters[ext] - except KeyError: - fmt = "'%s' is not a valid converter name in '%s'" - tup = (ext, longName) - raise TypeError(fmt % tup) - - # Step 5 -- if there's a converter func, run it on each element. - # If the converter raises an exception, use or raise 'converter.error'. - if converter.func is not None: - tmp = values[:] - values = [] - for elm in tmp: - try: - elm = converter.func(elm) - except (TypeError, ValueError): - tup = converter.name, elm - errmsg = "%s '%s' contains invalid characters" % tup - elm = useOrRaise(converter.error, errmsg) - values.append(elm) - # 'values' is now a list of strings, ints or floats. - - # Step 6 -- If we're supposed to return a multi value, return the list - # as is. If we're supposed to return a single value and the list is - # empty, return or raise 'converter.default'. Otherwise, return the - # first element in the list and ignore any additional values. - if multi: - return shortName, values - if len(values) == 0: - return shortName, useOrRaise(converter.default) - return shortName, values[0] - -# vim: sw=4 ts=4 expandtab |