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

« back to all changes in this revision

Viewing changes to ivle/fileservice_lib/listing.py

  • Committer: Matt Giuca
  • Date: 2010-02-18 05:30:21 UTC
  • Revision ID: matt.giuca@gmail.com-20100218053021-vy820xcj6d8raz78
listing.py: Fixed regression crash when viewing unversioned directories or files, due to silly code raising pysvn.ClientError (not an instance of it). Now raise a special exception UnversionedDir, which is checked properly.

Show diffs side-by-side

added added

removed removed

Lines of Context:
126
126
mime_dirlisting = "text/plain"
127
127
#mime_dirlisting = "application/json"
128
128
 
 
129
# Indicates that a directory is unversioned
 
130
class UnversionedDir(Exception):
 
131
    pass
 
132
 
129
133
def handle_return(req, return_contents):
130
134
    """
131
135
    Perform the "return" part of the response.
264
268
            for status in status_list:
265
269
                filename, attrs = PysvnStatus_to_fileinfo(path, status)
266
270
                listing[filename.decode('utf-8')] = attrs
267
 
    except pysvn.ClientError, e:
 
271
    except (pysvn.ClientError, UnversionedDir), e:
268
272
        # Could indicate a serious SVN error, or just that the directory is
269
273
        # not under version control (which is perfectly normal).
270
274
        # Error code 155007 is "<dir> is not a working copy"
271
 
        if e[1][0][1] != 155007:
 
275
        if isinstance(e, pysvn.ClientError) and e[1][0][1] != 155007:
272
276
            # This is a serious error -- let it propagate upwards
273
277
            raise
274
278
        # The directory is not under version control.
353
357
        # looking at any interesting files, so throw
354
358
        # an exception and default to normal OS-based listing. 
355
359
        if status.text_status == pysvn.wc_status_kind.unversioned:
356
 
            raise pysvn.ClientError
 
360
            raise UnversionedDir()
357
361
        # We actually want to return "." because we want its
358
362
        # subversion status.
359
363
        filename = "."
391
395
        # looking at any interesting files, so throw
392
396
        # an exception and default to normal OS-based listing. 
393
397
        #if status.text_status == pysvn.wc_status_kind.unversioned:
394
 
        #    raise pysvn.ClientError
 
398
        #    raise UnversionedDir()
395
399
        # We actually want to return "." because we want its
396
400
        # subversion status.
397
401
        filename = "."