~azzar1/unity/add-show-desktop-key

« back to all changes in this revision

Viewing changes to lib/common/db.py

  • Committer: mattgiuca
  • Date: 2008-02-15 06:34:19 UTC
  • Revision ID: svn-v3-trunk0:2b9c9e99-6f39-0410-b283-7f802c844ae2:trunk:476
Added new module: common/caps.py. This is the Capabilities centre of IVLE.
    It provides a Role class which is a rich enumeration type for Roles.
    The Role class will replace what has previously been simple strings used
    for Roles within the program. It has comparison ability to see if a Role
    is greater than or equal to another.
    This module also provides a set of capability objects which roles can be
    checked against.
dispatch/login: Rather than setting 'rolenm' string in session, now sets
    'role', a Role object.
common/db: _escape allows Role objects, which get converted into strings.
    So the DB now accepts Role objects as values (though we don't make use of
    this currently).
www/apps/tos: svn:ignore

Show diffs side-by-side

added added

removed removed

Lines of Context:
36
36
import md5
37
37
import copy
38
38
 
 
39
from common import caps
 
40
 
39
41
def _escape(val):
40
42
    """Wrapper around pg.escape_string. Prepares the Python value for use in
41
43
    SQL. Returns a string, which may be safely placed verbatim into an SQL
45
47
    * int/long/float: Just converts to an unquoted string.
46
48
    * bool: Returns as "TRUE" or "FALSE", unquoted.
47
49
    * NoneType: Returns "NULL", unquoted.
 
50
    * common.caps.Role: Returns the role as a quoted, lowercase string.
48
51
    Raises a DBException if val has an unsupported type.
49
52
    """
50
53
    # "E'" is postgres's way of making "escape" strings.
62
65
    elif isinstance(val, int) or isinstance(val, long) \
63
66
        or isinstance(val, float):
64
67
        return str(val)
 
68
    elif isinstance(val, caps.Role):
 
69
        return _escape(str(val))
65
70
    else:
66
71
        raise DBException("Attempt to insert an unsupported type "
67
72
            "into the database")