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

« back to all changes in this revision

Viewing changes to ivle/fileservice_lib/action.py

  • Committer: chadnickbok
  • Date: 2009-01-19 22:56:46 UTC
  • Revision ID: svn-v3-trunk0:2b9c9e99-6f39-0410-b283-7f802c844ae2:trunk:1170
This commit fixes issue #10 and part of issue #9

There are now two options for moving files with their
svn history intact; svn move and svn copy. These
use the svn commands to move the files, allowing students
to move and rename files without their histories being
lost.

This commit also shows the svn status of a dir, if it is
the 'head' of an svn repository.

Show diffs side-by-side

added added

removed removed

Lines of Context:
135
135
import pysvn
136
136
 
137
137
from ivle import (util, studpath, zip)
138
 
from ivle.fileservice_lib.exceptions import WillNotOverwrite
139
138
import ivle.conf
140
139
 
141
 
 
142
140
def get_login(_realm, existing_login, _may_save):
143
141
    """Callback function used by pysvn for authentication.
144
142
    realm, existing_login, _may_save: The 3 arguments passed by pysvn to
151
149
    # If we're being asked again, then it means the credentials failed for
152
150
    # some reason and we should just fail. (This is not desirable, but it's
153
151
    # better than being asked an infinite number of times).
154
 
    return (existing_login != "", str(ivle.conf.login),
155
 
                                  str(ivle.conf.svn_pass), True)
 
152
    return (existing_login != "", ivle.conf.login, ivle.conf.svn_pass, True)
156
153
 
157
154
# Make a Subversion client object
158
155
svnclient = pysvn.Client()
402
399
 
403
400
    Reads fields: 'path', 'data' (file upload, multiple), 'unpack'
404
401
    """
 
402
 
405
403
    # Important: Data is "None" if the file submitted is empty.
406
404
    path = fields.getfirst('path')
407
405
    data = fields['data']
420
418
    for datum in data:
421
419
        # Each of the uploaded files
422
420
        filepath = os.path.join(path, datum.filename)
423
 
        (_, _, filepath_local) = studpath.url_to_jailpaths(filepath)
424
 
        if os.path.isdir(filepath_local):
425
 
            raise ActionError("A directory already exists "
426
 
                    + "with that name")
427
 
        else:
428
 
            if os.path.exists(filepath_local):
429
 
                raise ActionError("A file already exists with that name")
430
421
        filedata = datum.file
431
422
 
432
423
        if unpack and datum.filename.lower().endswith(".zip"):
441
432
                zip.unzip(abspath, filedata)
442
433
            except (OSError, IOError):
443
434
                goterror = True
444
 
            except WillNotOverwrite, e:
445
 
                raise ActionError("File '" + e.filename + "' already exists.")
446
435
        else:
447
436
            # Not a zip file
448
437
            (_, _, filepath_local) = studpath.url_to_jailpaths(filepath)