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

« back to all changes in this revision

Viewing changes to www/apps/fileservice/__init__.py

  • Committer: mattgiuca
  • Date: 2008-01-10 01:56:38 UTC
  • Revision ID: svn-v3-trunk0:2b9c9e99-6f39-0410-b283-7f802c844ae2:trunk:154
fileservice: Action handler now calls a global actions table of function
    pointers instead of having a list of if statements. Action functions now
    read field storage objects directly.

Show diffs side-by-side

added added

removed removed

Lines of Context:
125
125
    # side-effects on the server.
126
126
    action = None
127
127
    fields = None
128
 
    if req.method == 'POST':
 
128
    # FIXME: Remove "True", making sure only POST
 
129
    if True or req.method == 'POST':
129
130
        fields = req.get_fieldstorage()
130
131
        action = fields.getfirst('action')
131
132
 
150
151
    action: String, the action requested. Not sanitised.
151
152
    fields: FieldStorage object containing all arguments passed.
152
153
    """
153
 
    if action == "remove":
154
 
        path = fields.getlist('path')
155
 
        action_remove(req, path)
156
 
    else:
 
154
    global actions_table        # Table of function objects
 
155
    try:
 
156
        action = actions_table[action]
 
157
    except KeyError:
157
158
        # Default, just send an error but then continue
158
159
        raise ActionError("Unknown action")
 
160
    action(req, fields)
159
161
 
160
162
def handle_return(req):
161
163
    """Perform the "return" part of the response.
300
302
        raise ActionError("Invalid path")
301
303
    return r
302
304
 
303
 
def action_remove(req, paths):
 
305
def action_remove(req, fields):
304
306
    # TODO: Do an SVN rm if the file is versioned.
305
307
    # TODO: Disallow removal of student's home directory
306
308
    """Removes a list of files or directories."""
 
309
    paths = fields.getlist('path')
307
310
    goterror = False
308
311
    for path in paths:
309
312
        path = actionpath_to_local(req, path)
322
325
        else:
323
326
            raise ActionError(
324
327
                "Could not delete one or more of the files specified")
 
328
 
 
329
# Table of all action functions #
 
330
 
 
331
actions_table = {
 
332
    "remove" : action_remove,
 
333
}