Пример #1
0
def cache_key(*keys, **pairs):
    """Smart key maker, returns the object itself if a key, else a list 
    delimited by ':', automatically hashing any non-scalar objects."""

    if is_string_like(keys):
        keys = [keys]
        
    if is_list_or_tuple(keys):
        if len(keys) == 1 and is_list_or_tuple(keys[0]):
            keys = keys[0]
    else:
        keys = [md5_hash(keys)]

    if pairs:
        keys = list(keys)
        klist = pairs.keys()
        klist.sort()
        for k in klist:
            keys.append(k)
            keys.append(pairs[k])
    
    key = KEY_DELIM.join([_hash_or_string(x) for x in keys])
    prefix = CACHE_PREFIX + KEY_DELIM
    if not key.startswith(prefix):
        key = prefix+key
    return key.replace(" ", ".")
Пример #2
0
 def __init__(self, key, name, *args, **kwargs):
     """Create a new ConfigurationGroup.
     
     Arguments:
     - key
     - group name - for display to user
     
     Named Arguments:
     - ordering: integer, optional, defaults to 1.
     - requires: See `Value` requires.  The default `requires` all member values will have if not overridden.
     - requiresvalue: See `Values` requires_value.  The default `requires_value` if not overridden on the `Value` objects.
     """
     self.key = key
     self.name = name
     self.ordering = kwargs.pop('ordering', 1)
     self.requires = kwargs.pop('requires', None)
     if self.requires:
         reqval = kwargs.pop('requiresvalue', key)
         if not is_list_or_tuple(reqval):
             reqval = (reqval, reqval)
             
         self.requires_value = reqval[0]
         self.requires.add_choice(reqval)
         
     super(ConfigurationGroup, self).__init__(*args, **kwargs)
Пример #3
0
 def add_choice(self, choice):
     """Add a choice if it doesn't already exist."""
     if not is_list_or_tuple(choice):
         choice = (choice, choice)
     skip = False
     for k, v in self.choices:
         if k == choice[0]:
             skip = True
             break
     if not skip:
         self.choices += (choice, )
Пример #4
0
 def to_python(self, value):
     if not value or value == NOTSET:
         return []
     if is_list_or_tuple(value):
         return value
     else:
         try:
             return simplejson.loads(value)
         except:
             if is_string_like(value):
                 return [value]
             else:
                 log.warning('Could not decode returning empty list: %s', value)
                 return []
Пример #5
0
 def __init__(self, group, key, **kwargs):
     """
     Create a new Value object for configuration.
     
     Args:
         - `ConfigurationGroup`
         - key - a string key
         
     Named arguments:
         - `description` - Will be passed to the field for form usage.  Should be a translation proxy.  Ex: _('example')
         - `help_text` - Will be passed to the field for form usage.
         - `choices` - If given, then the form field will use a select box
         - `ordering` - Defaults to alphabetical by key if not given.
         - `requires` - If given as a `Value`, then this field will only be rendered if that Value evaluates true (for Boolean requires) or the proper key is in the associated value.
         - `requiresvalue` - If set, then this field will only be rendered if that value is in the list returned by self.value. Defaults to self.key.
         - `hidden` - If true, then render a hidden field.
         - `default` - If given, then this Value will return that default whenever it has no assocated `Setting`.
     """
     self.group = group
     self.key = key
     self.description = kwargs.get('description', None)
     self.help_text = kwargs.get('help_text')
     self.choices = kwargs.get('choices',[])
     self.ordering = kwargs.pop('ordering', 0)
     self.hidden = kwargs.pop('hidden', False)
     
     self.requires = kwargs.pop('requires', None)
     if self.requires:
         reqval = kwargs.pop('requiresvalue', key)
         if not is_list_or_tuple(reqval):
             reqval = (reqval, reqval)
             
         self.requires_value = reqval[0]
         self.requires.add_choice(reqval)
         
     elif group.requires:
         self.requires = group.requires
         self.requires_value = group.requires_value
     
     if kwargs.has_key('default'):
         self.default = kwargs.pop('default')
         self.use_default = True                
     else:
         self.use_default = False
     
     self.creation_counter = Value.creation_counter
     Value.creation_counter += 1