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

« back to all changes in this revision

Viewing changes to lib/common/studpath.py

  • Committer: wagrant
  • Date: 2008-08-19 12:49:58 UTC
  • Revision ID: svn-v3-trunk0:2b9c9e99-6f39-0410-b283-7f802c844ae2:trunk:1031
Example worksheets: Fix the element names in worksheet 1 to be actually
                    correct. Also fix the first exercise so it too
                    functions properly.

Show diffs side-by-side

added added

removed removed

Lines of Context:
25
25
# they dont own.
26
26
 
27
27
import os
28
 
 
 
28
import stat
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/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").
 
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").
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/home/mydir/myfile")
84
 
    ("joe", "/home/informatics/jails/joe", "home/joe/home/mydir/myfile")
 
83
    >>> url_to_jailpaths("joe/mydir/myfile")
 
84
    ("joe", "/home/informatics/jails/joe", "home/joe/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 published(path):
 
104
def svnpublished(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
 
116
135
def authorize(req):
117
 
    """Given a request, checks whether req.username is allowed to
 
136
    """Given a request, checks whether req.user is allowed to
118
137
    access req.path. Returns None on authorization success. Raises
119
138
    HTTP_FORBIDDEN on failure.
120
139
 
129
148
        req.throw_error(req.HTTP_FORBIDDEN)
130
149
 
131
150
    (owner, _) = util.split_path(urlpath)
132
 
    if req.username != owner:
 
151
    if req.user.login != owner:
133
152
        req.throw_error(req.HTTP_FORBIDDEN)
134
153
 
135
154
def authorize_public(req):
144
163
    """
145
164
    _, path = url_to_local(req.path)
146
165
    dirpath, _ = os.path.split(path)
147
 
    if not published(dirpath):
 
166
    if not (worldreadable(dirpath) and published(dirpath)):
148
167
        req.throw_error(req.HTTP_FORBIDDEN)