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

« back to all changes in this revision

Viewing changes to ivle/util.py

  • Committer: William Grant
  • Date: 2009-04-28 06:55:03 UTC
  • Revision ID: grantw@unimelb.edu.au-20090428065503-w4me24f26s3fzb7a
Drop ivle.util.make_path (replaced by Request.make_path) and fix docstrings.

Show diffs side-by-side

added added

removed removed

Lines of Context:
22
22
# Contains common utility functions.
23
23
 
24
24
import os
25
 
import datetime
26
 
 
27
 
import ivle.conf
28
25
 
29
26
class IVLEError(Exception):
30
 
    """
31
 
    This is the "standard" exception class for IVLE errors.
32
 
    It is the ONLY exception which should propagate to the top - it will then
33
 
    be displayed to the user as an HTTP error with the given code.
34
 
 
35
 
    All other exceptions are considered IVLE bugs and should not occur
36
 
    (they will display a traceback).
37
 
 
38
 
    This error should not be raised directly. Call req.throw_error.
 
27
    """Legacy general IVLE exception.
 
28
 
 
29
    This is the old "standard" exception class for IVLE errors. It is only
 
30
    used in fileservice, and should not be used in any new code.
39
31
    """
40
32
    def __init__(self, httpcode, message=None):
41
33
        self.httpcode = httpcode
43
35
        self.args = (httpcode, message)
44
36
 
45
37
class IVLEJailError(Exception):
46
 
    """
 
38
    """Exception proxying an in-jail error.
 
39
 
47
40
    This exception indicates an error that occurred inside an IVLE CGI script
48
41
    inside the jail. It should never be raised directly - only by the 
49
42
    interpreter.
66
59
    def __repr__(self):
67
60
        return "<Fake %s %s>"%(self.type, self.name)
68
61
 
69
 
def make_path(path):
70
 
    """Given a path relative to the IVLE root, makes the path relative to the
71
 
    site root using ivle.conf.root_dir. This path can be used in URLs sent to
72
 
    the client."""
73
 
    return os.path.join(ivle.conf.root_dir, path)
74
 
 
75
62
def split_path(path):
76
63
    """Given a path, returns a tuple consisting of the top-level directory in
77
64
    the path, and the rest of the path. Note that both items in the tuple will
108
95
        return tuple(splitpath)
109
96
 
110
97
def incomplete_utf8_sequence(byteseq):
111
 
    """
112
 
    str -> int
 
98
    """Calculate the completeness of a UTF-8 encoded string.
 
99
 
113
100
    Given a UTF-8-encoded byte sequence (str), returns the number of bytes at
114
101
    the end of the string which comprise an incomplete UTF-8 character
115
102
    sequence.
187
174
        return count
188
175
 
189
176
def object_to_dict(attrnames, obj):
190
 
    """
191
 
    Convert an object into a dictionary. This takes a shallow copy of the
192
 
    object.
193
 
    attrnames: Set (or iterable) of names of attributes to be copied into the
194
 
        dictionary. (We don't auto-lookup, because this function needs to be
195
 
        used on magical objects).
 
177
    """Convert an object into a dictionary.
 
178
 
 
179
    This takes a shallow copy of the object.
 
180
 
 
181
    @param attrnames: Set (or iterable) of names of attributes to be copied
 
182
                      into the dictionary. (We don't auto-lookup, because this
 
183
                      function needs to be used on magical objects).
196
184
    """
197
185
    return dict((k, getattr(obj, k))
198
186
        for k in attrnames if not k.startswith('_'))