storage Module

This file is part of the web2py Web Framework
Copyrighted by Massimo Di Pierro <mdipierro@cs.depaul.edu>

Provides:

  • List; like list but returns None instead of IndexOutOfBounds
  • Storage; like dictionary allowing also for obj.foo for obj[‘foo’]
class gluon.storage.List[source]

Bases: list

Like a regular python list but callable. When a(i) is called if i is out of bounds returns None instead of IndexError.

class gluon.storage.Storage[source]

Bases: dict

A Storage object is like a dictionary except obj.foo can be used in addition to obj[‘foo’], and setting obj.foo = None deletes item foo.

Example:

>>> o = Storage(a=1)
>>> print o.a
1

>>> o['a']
1

>>> o.a = 2
>>> print o['a']
2

>>> del o.a
>>> print o.a
None
getfirst(key, default=None)[source]

Returns the first value of a list or the value itself when given a request.vars style key.

If the value is a list, its first item will be returned; otherwise, the value will be returned as-is.

Example output for a query string of ?x=abc&y=abc&y=def:

>>> request = Storage()
>>> request.vars = Storage()
>>> request.vars.x = 'abc'
>>> request.vars.y = ['abc', 'def']
>>> request.vars.getfirst('x')
'abc'
>>> request.vars.getfirst('y')
'abc'
>>> request.vars.getfirst('z')
getlast(key, default=None)[source]

Returns the last value of a list or value itself when given a request.vars style key.

If the value is a list, the last item will be returned; otherwise, the value will be returned as-is.

Simulated output with a query string of ?x=abc&y=abc&y=def:

>>> request = Storage()
>>> request.vars = Storage()
>>> request.vars.x = 'abc'
>>> request.vars.y = ['abc', 'def']
>>> request.vars.getlast('x')
'abc'
>>> request.vars.getlast('y')
'def'
>>> request.vars.getlast('z')
getlist(key)[source]

Returns a Storage value as a list.

If the value is a list it will be returned as-is. If object is None, an empty list will be returned. Otherwise, [value] will be returned.

Example output for a query string of ?x=abc&y=abc&y=def:

>>> request = Storage()
>>> request.vars = Storage()
>>> request.vars.x = 'abc'
>>> request.vars.y = ['abc', 'def']
>>> request.vars.getlist('x')
['abc']
>>> request.vars.getlist('y')
['abc', 'def']
>>> request.vars.getlist('z')
[]
class gluon.storage.Settings[source]

Bases: gluon.storage.Storage

class gluon.storage.Messages(T)[source]

Bases: gluon.storage.Settings

class gluon.storage.StorageList[source]

Bases: gluon.storage.Storage

Behaves like Storage but missing elements defaults to [] instead of None

gluon.storage.load_storage(filename)[source]
gluon.storage.save_storage(storage, filename)[source]