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

« back to all changes in this revision

Viewing changes to lib/common/studpath.py

  • Committer: dcoles
  • Date: 2008-02-13 04:10:55 UTC
  • Revision ID: svn-v3-trunk0:2b9c9e99-6f39-0410-b283-7f802c844ae2:trunk:443
Added Forum application along with unmodifed version of phpBB3 "Olympus" 3.0.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
25
25
# they dont own.
26
26
 
27
27
import os
28
 
import stat
 
28
 
29
29
import pysvn
30
30
 
31
31
import conf
42
42
            found within the student directories.
43
43
 
44
44
    urlpath: Part of the URL, but only the part *after* the application. For
45
 
    instance, given the URL "/ivle/browse/joe/mydir/myfile", urlpath will
46
 
    be just "joe/mydir/myfile". The expected result is something like
47
 
    ("joe", "/home/informatics/jails/joe/home/joe/mydir/myfile").
 
45
    instance, given the URL "/ivle/browse/joe/home/mydir/myfile", urlpath will
 
46
    be just "joe/home/mydir/myfile". The expected result is something like
 
47
    ("joe", "/home/informatics/jails/joe/home/joe/home/mydir/myfile").
48
48
    Note that the actual location is not guaranteed by this interface (this
49
49
    function serves as a single point of control as to how URLs map onto
50
50
    student directories).
80
80
 
81
81
    urlpath: See urlpath in url_to_local.
82
82
 
83
 
    >>> url_to_jailpaths("joe/mydir/myfile")
84
 
    ("joe", "/home/informatics/jails/joe", "home/joe/mydir/myfile")
 
83
    >>> url_to_jailpaths("joe/home/mydir/myfile")
 
84
    ("joe", "/home/informatics/jails/joe", "home/joe/home/mydir/myfile")
85
85
 
86
86
    >>> url_to_jailpaths("")
87
87
    (None, None, None)
101
101
 
102
102
    return (user, jail, path)
103
103
 
104
 
def svnpublished(path):
 
104
def published(path):
105
105
    """Given a path on the LOCAL file system, determines whether the path has
106
106
    its "ivle:published" property active (in subversion). Returns True
107
107
    or False."""
113
113
        return False
114
114
    return len(props) > 0
115
115
 
116
 
def published(path):
117
 
    """Given a path on the LOCAL file system, determines whether the path has a 
118
 
    '.published' file.  Returns True or False."""
119
 
    publish_file_path = os.path.join(path,'.published')
120
 
    return os.access(publish_file_path,os.F_OK)
121
 
 
122
 
def worldreadable(path):
123
 
    """Given a path on the LOCAL file system, determines whether the path is 
124
 
    world readble. Returns True or False."""
125
 
    try:
126
 
        mode = os.stat(path).st_mode
127
 
        if mode & stat.S_IROTH:
128
 
            return True
129
 
        else:
130
 
            return False
131
 
    except OSError, e:
132
 
        return False
133
 
 
134
 
 
135
116
def authorize(req):
136
 
    """Given a request, checks whether req.user is allowed to
 
117
    """Given a request, checks whether req.username is allowed to
137
118
    access req.path. Returns None on authorization success. Raises
138
119
    HTTP_FORBIDDEN on failure.
139
120
 
148
129
        req.throw_error(req.HTTP_FORBIDDEN)
149
130
 
150
131
    (owner, _) = util.split_path(urlpath)
151
 
    if req.user.login != owner:
 
132
    if req.username != owner:
152
133
        req.throw_error(req.HTTP_FORBIDDEN)
153
134
 
154
135
def authorize_public(req):
163
144
    """
164
145
    _, path = url_to_local(req.path)
165
146
    dirpath, _ = os.path.split(path)
166
 
    if not (worldreadable(dirpath) and published(dirpath)):
 
147
    if not published(dirpath):
167
148
        req.throw_error(req.HTTP_FORBIDDEN)