Thu, 30 Nov 2017 17:00:18 +0100
Updated send2trash to version 1.4.2.
5994
cf0b37d2a28d
Updated send2trash to version 1.4.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5624
diff
changeset
|
1 | # Copyright 2017 Virgil Dupras |
3644
a2c88b9b1d16
Added code to Project to move deleted files/directories to the recycle bin falling back to removing them (os.remove), if send2trash cannot be imported due to missing dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2 | |
5994
cf0b37d2a28d
Updated send2trash to version 1.4.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5624
diff
changeset
|
3 | # This software is licensed under the "BSD" License as described in the "LICENSE" file, |
cf0b37d2a28d
Updated send2trash to version 1.4.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5624
diff
changeset
|
4 | # which should be included with this package. The terms are also available at |
3644
a2c88b9b1d16
Added code to Project to move deleted files/directories to the recycle bin falling back to removing them (os.remove), if send2trash cannot be imported due to missing dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
5 | # http://www.hardcoded.net/licenses/bsd_license |
a2c88b9b1d16
Added code to Project to move deleted files/directories to the recycle bin falling back to removing them (os.remove), if send2trash cannot be imported due to missing dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
6 | |
a2c88b9b1d16
Added code to Project to move deleted files/directories to the recycle bin falling back to removing them (os.remove), if send2trash cannot be imported due to missing dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
7 | # This is a reimplementation of plat_other.py with reference to the |
a2c88b9b1d16
Added code to Project to move deleted files/directories to the recycle bin falling back to removing them (os.remove), if send2trash cannot be imported due to missing dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
8 | # freedesktop.org trash specification: |
a2c88b9b1d16
Added code to Project to move deleted files/directories to the recycle bin falling back to removing them (os.remove), if send2trash cannot be imported due to missing dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
9 | # [1] http://www.freedesktop.org/wiki/Specifications/trash-spec |
a2c88b9b1d16
Added code to Project to move deleted files/directories to the recycle bin falling back to removing them (os.remove), if send2trash cannot be imported due to missing dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
10 | # [2] http://www.ramendik.ru/docs/trashspec.html |
a2c88b9b1d16
Added code to Project to move deleted files/directories to the recycle bin falling back to removing them (os.remove), if send2trash cannot be imported due to missing dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
11 | # See also: |
a2c88b9b1d16
Added code to Project to move deleted files/directories to the recycle bin falling back to removing them (os.remove), if send2trash cannot be imported due to missing dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
12 | # [3] http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html |
a2c88b9b1d16
Added code to Project to move deleted files/directories to the recycle bin falling back to removing them (os.remove), if send2trash cannot be imported due to missing dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
13 | # |
a2c88b9b1d16
Added code to Project to move deleted files/directories to the recycle bin falling back to removing them (os.remove), if send2trash cannot be imported due to missing dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
14 | # For external volumes this implementation will raise an exception if it can't |
a2c88b9b1d16
Added code to Project to move deleted files/directories to the recycle bin falling back to removing them (os.remove), if send2trash cannot be imported due to missing dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
15 | # find or create the user's trash directory. |
a2c88b9b1d16
Added code to Project to move deleted files/directories to the recycle bin falling back to removing them (os.remove), if send2trash cannot be imported due to missing dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
16 | |
a2c88b9b1d16
Added code to Project to move deleted files/directories to the recycle bin falling back to removing them (os.remove), if send2trash cannot be imported due to missing dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
17 | from __future__ import unicode_literals |
a2c88b9b1d16
Added code to Project to move deleted files/directories to the recycle bin falling back to removing them (os.remove), if send2trash cannot be imported due to missing dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
18 | |
a2c88b9b1d16
Added code to Project to move deleted files/directories to the recycle bin falling back to removing them (os.remove), if send2trash cannot be imported due to missing dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
19 | import sys |
a2c88b9b1d16
Added code to Project to move deleted files/directories to the recycle bin falling back to removing them (os.remove), if send2trash cannot be imported due to missing dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
20 | import os |
a2c88b9b1d16
Added code to Project to move deleted files/directories to the recycle bin falling back to removing them (os.remove), if send2trash cannot be imported due to missing dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
21 | import os.path as op |
a2c88b9b1d16
Added code to Project to move deleted files/directories to the recycle bin falling back to removing them (os.remove), if send2trash cannot be imported due to missing dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
22 | from datetime import datetime |
a2c88b9b1d16
Added code to Project to move deleted files/directories to the recycle bin falling back to removing them (os.remove), if send2trash cannot be imported due to missing dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
23 | import stat |
a2c88b9b1d16
Added code to Project to move deleted files/directories to the recycle bin falling back to removing them (os.remove), if send2trash cannot be imported due to missing dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
24 | try: |
a2c88b9b1d16
Added code to Project to move deleted files/directories to the recycle bin falling back to removing them (os.remove), if send2trash cannot be imported due to missing dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
25 | from urllib.parse import quote |
a2c88b9b1d16
Added code to Project to move deleted files/directories to the recycle bin falling back to removing them (os.remove), if send2trash cannot be imported due to missing dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
26 | except ImportError: |
a2c88b9b1d16
Added code to Project to move deleted files/directories to the recycle bin falling back to removing them (os.remove), if send2trash cannot be imported due to missing dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
27 | # Python 2 |
a2c88b9b1d16
Added code to Project to move deleted files/directories to the recycle bin falling back to removing them (os.remove), if send2trash cannot be imported due to missing dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
28 | from urllib import quote |
a2c88b9b1d16
Added code to Project to move deleted files/directories to the recycle bin falling back to removing them (os.remove), if send2trash cannot be imported due to missing dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
29 | |
5994
cf0b37d2a28d
Updated send2trash to version 1.4.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5624
diff
changeset
|
30 | from .compat import text_type, environb |
cf0b37d2a28d
Updated send2trash to version 1.4.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5624
diff
changeset
|
31 | |
cf0b37d2a28d
Updated send2trash to version 1.4.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5624
diff
changeset
|
32 | try: |
cf0b37d2a28d
Updated send2trash to version 1.4.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5624
diff
changeset
|
33 | fsencode = os.fsencode # Python 3 |
cf0b37d2a28d
Updated send2trash to version 1.4.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5624
diff
changeset
|
34 | fsdecode = os.fsdecode |
cf0b37d2a28d
Updated send2trash to version 1.4.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5624
diff
changeset
|
35 | except AttributeError: |
cf0b37d2a28d
Updated send2trash to version 1.4.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5624
diff
changeset
|
36 | def fsencode(u): # Python 2 |
cf0b37d2a28d
Updated send2trash to version 1.4.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5624
diff
changeset
|
37 | return u.encode(sys.getfilesystemencoding()) |
cf0b37d2a28d
Updated send2trash to version 1.4.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5624
diff
changeset
|
38 | def fsdecode(b): |
cf0b37d2a28d
Updated send2trash to version 1.4.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5624
diff
changeset
|
39 | return b.decode(sys.getfilesystemencoding()) |
cf0b37d2a28d
Updated send2trash to version 1.4.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5624
diff
changeset
|
40 | # The Python 3 versions are a bit smarter, handling surrogate escapes, |
cf0b37d2a28d
Updated send2trash to version 1.4.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5624
diff
changeset
|
41 | # but these should work in most cases. |
cf0b37d2a28d
Updated send2trash to version 1.4.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5624
diff
changeset
|
42 | |
cf0b37d2a28d
Updated send2trash to version 1.4.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5624
diff
changeset
|
43 | FILES_DIR = b'files' |
cf0b37d2a28d
Updated send2trash to version 1.4.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5624
diff
changeset
|
44 | INFO_DIR = b'info' |
cf0b37d2a28d
Updated send2trash to version 1.4.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5624
diff
changeset
|
45 | INFO_SUFFIX = b'.trashinfo' |
3644
a2c88b9b1d16
Added code to Project to move deleted files/directories to the recycle bin falling back to removing them (os.remove), if send2trash cannot be imported due to missing dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
46 | |
a2c88b9b1d16
Added code to Project to move deleted files/directories to the recycle bin falling back to removing them (os.remove), if send2trash cannot be imported due to missing dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
47 | # Default of ~/.local/share [3] |
5994
cf0b37d2a28d
Updated send2trash to version 1.4.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5624
diff
changeset
|
48 | XDG_DATA_HOME = op.expanduser(environb.get(b'XDG_DATA_HOME', b'~/.local/share')) |
cf0b37d2a28d
Updated send2trash to version 1.4.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5624
diff
changeset
|
49 | HOMETRASH_B = op.join(XDG_DATA_HOME, b'Trash') |
cf0b37d2a28d
Updated send2trash to version 1.4.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5624
diff
changeset
|
50 | HOMETRASH = fsdecode(HOMETRASH_B) |
3644
a2c88b9b1d16
Added code to Project to move deleted files/directories to the recycle bin falling back to removing them (os.remove), if send2trash cannot be imported due to missing dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
51 | |
a2c88b9b1d16
Added code to Project to move deleted files/directories to the recycle bin falling back to removing them (os.remove), if send2trash cannot be imported due to missing dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
52 | uid = os.getuid() |
5994
cf0b37d2a28d
Updated send2trash to version 1.4.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5624
diff
changeset
|
53 | TOPDIR_TRASH = b'.Trash' |
cf0b37d2a28d
Updated send2trash to version 1.4.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5624
diff
changeset
|
54 | TOPDIR_FALLBACK = b'.Trash-' + text_type(uid).encode('ascii') |
3644
a2c88b9b1d16
Added code to Project to move deleted files/directories to the recycle bin falling back to removing them (os.remove), if send2trash cannot be imported due to missing dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
55 | |
a2c88b9b1d16
Added code to Project to move deleted files/directories to the recycle bin falling back to removing them (os.remove), if send2trash cannot be imported due to missing dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
56 | def is_parent(parent, path): |
a2c88b9b1d16
Added code to Project to move deleted files/directories to the recycle bin falling back to removing them (os.remove), if send2trash cannot be imported due to missing dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
57 | path = op.realpath(path) # In case it's a symlink |
5994
cf0b37d2a28d
Updated send2trash to version 1.4.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5624
diff
changeset
|
58 | if isinstance(path, text_type): |
cf0b37d2a28d
Updated send2trash to version 1.4.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5624
diff
changeset
|
59 | path = fsencode(path) |
3644
a2c88b9b1d16
Added code to Project to move deleted files/directories to the recycle bin falling back to removing them (os.remove), if send2trash cannot be imported due to missing dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
60 | parent = op.realpath(parent) |
5994
cf0b37d2a28d
Updated send2trash to version 1.4.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5624
diff
changeset
|
61 | if isinstance(parent, text_type): |
cf0b37d2a28d
Updated send2trash to version 1.4.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5624
diff
changeset
|
62 | parent = fsencode(parent) |
3644
a2c88b9b1d16
Added code to Project to move deleted files/directories to the recycle bin falling back to removing them (os.remove), if send2trash cannot be imported due to missing dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
63 | return path.startswith(parent) |
a2c88b9b1d16
Added code to Project to move deleted files/directories to the recycle bin falling back to removing them (os.remove), if send2trash cannot be imported due to missing dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
64 | |
a2c88b9b1d16
Added code to Project to move deleted files/directories to the recycle bin falling back to removing them (os.remove), if send2trash cannot be imported due to missing dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
65 | def format_date(date): |
a2c88b9b1d16
Added code to Project to move deleted files/directories to the recycle bin falling back to removing them (os.remove), if send2trash cannot be imported due to missing dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
66 | return date.strftime("%Y-%m-%dT%H:%M:%S") |
a2c88b9b1d16
Added code to Project to move deleted files/directories to the recycle bin falling back to removing them (os.remove), if send2trash cannot be imported due to missing dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
67 | |
a2c88b9b1d16
Added code to Project to move deleted files/directories to the recycle bin falling back to removing them (os.remove), if send2trash cannot be imported due to missing dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
68 | def info_for(src, topdir): |
5994
cf0b37d2a28d
Updated send2trash to version 1.4.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5624
diff
changeset
|
69 | # ...it MUST not include a ".." directory, and for files not "under" that |
3644
a2c88b9b1d16
Added code to Project to move deleted files/directories to the recycle bin falling back to removing them (os.remove), if send2trash cannot be imported due to missing dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
70 | # directory, absolute pathnames must be used. [2] |
a2c88b9b1d16
Added code to Project to move deleted files/directories to the recycle bin falling back to removing them (os.remove), if send2trash cannot be imported due to missing dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
71 | if topdir is None or not is_parent(topdir, src): |
a2c88b9b1d16
Added code to Project to move deleted files/directories to the recycle bin falling back to removing them (os.remove), if send2trash cannot be imported due to missing dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
72 | src = op.abspath(src) |
a2c88b9b1d16
Added code to Project to move deleted files/directories to the recycle bin falling back to removing them (os.remove), if send2trash cannot be imported due to missing dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
73 | else: |
a2c88b9b1d16
Added code to Project to move deleted files/directories to the recycle bin falling back to removing them (os.remove), if send2trash cannot be imported due to missing dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
74 | src = op.relpath(src, topdir) |
a2c88b9b1d16
Added code to Project to move deleted files/directories to the recycle bin falling back to removing them (os.remove), if send2trash cannot be imported due to missing dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
75 | |
a2c88b9b1d16
Added code to Project to move deleted files/directories to the recycle bin falling back to removing them (os.remove), if send2trash cannot be imported due to missing dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
76 | info = "[Trash Info]\n" |
a2c88b9b1d16
Added code to Project to move deleted files/directories to the recycle bin falling back to removing them (os.remove), if send2trash cannot be imported due to missing dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
77 | info += "Path=" + quote(src) + "\n" |
a2c88b9b1d16
Added code to Project to move deleted files/directories to the recycle bin falling back to removing them (os.remove), if send2trash cannot be imported due to missing dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
78 | info += "DeletionDate=" + format_date(datetime.now()) + "\n" |
a2c88b9b1d16
Added code to Project to move deleted files/directories to the recycle bin falling back to removing them (os.remove), if send2trash cannot be imported due to missing dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
79 | return info |
a2c88b9b1d16
Added code to Project to move deleted files/directories to the recycle bin falling back to removing them (os.remove), if send2trash cannot be imported due to missing dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
80 | |
a2c88b9b1d16
Added code to Project to move deleted files/directories to the recycle bin falling back to removing them (os.remove), if send2trash cannot be imported due to missing dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
81 | def check_create(dir): |
a2c88b9b1d16
Added code to Project to move deleted files/directories to the recycle bin falling back to removing them (os.remove), if send2trash cannot be imported due to missing dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
82 | # use 0700 for paths [3] |
a2c88b9b1d16
Added code to Project to move deleted files/directories to the recycle bin falling back to removing them (os.remove), if send2trash cannot be imported due to missing dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
83 | if not op.exists(dir): |
a2c88b9b1d16
Added code to Project to move deleted files/directories to the recycle bin falling back to removing them (os.remove), if send2trash cannot be imported due to missing dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
84 | os.makedirs(dir, 0o700) |
a2c88b9b1d16
Added code to Project to move deleted files/directories to the recycle bin falling back to removing them (os.remove), if send2trash cannot be imported due to missing dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
85 | |
a2c88b9b1d16
Added code to Project to move deleted files/directories to the recycle bin falling back to removing them (os.remove), if send2trash cannot be imported due to missing dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
86 | def trash_move(src, dst, topdir=None): |
a2c88b9b1d16
Added code to Project to move deleted files/directories to the recycle bin falling back to removing them (os.remove), if send2trash cannot be imported due to missing dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
87 | filename = op.basename(src) |
a2c88b9b1d16
Added code to Project to move deleted files/directories to the recycle bin falling back to removing them (os.remove), if send2trash cannot be imported due to missing dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
88 | filespath = op.join(dst, FILES_DIR) |
a2c88b9b1d16
Added code to Project to move deleted files/directories to the recycle bin falling back to removing them (os.remove), if send2trash cannot be imported due to missing dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
89 | infopath = op.join(dst, INFO_DIR) |
a2c88b9b1d16
Added code to Project to move deleted files/directories to the recycle bin falling back to removing them (os.remove), if send2trash cannot be imported due to missing dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
90 | base_name, ext = op.splitext(filename) |
a2c88b9b1d16
Added code to Project to move deleted files/directories to the recycle bin falling back to removing them (os.remove), if send2trash cannot be imported due to missing dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
91 | |
a2c88b9b1d16
Added code to Project to move deleted files/directories to the recycle bin falling back to removing them (os.remove), if send2trash cannot be imported due to missing dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
92 | counter = 0 |
a2c88b9b1d16
Added code to Project to move deleted files/directories to the recycle bin falling back to removing them (os.remove), if send2trash cannot be imported due to missing dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
93 | destname = filename |
a2c88b9b1d16
Added code to Project to move deleted files/directories to the recycle bin falling back to removing them (os.remove), if send2trash cannot be imported due to missing dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
94 | while op.exists(op.join(filespath, destname)) or op.exists(op.join(infopath, destname + INFO_SUFFIX)): |
a2c88b9b1d16
Added code to Project to move deleted files/directories to the recycle bin falling back to removing them (os.remove), if send2trash cannot be imported due to missing dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
95 | counter += 1 |
5994
cf0b37d2a28d
Updated send2trash to version 1.4.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5624
diff
changeset
|
96 | destname = base_name + b' ' + text_type(counter).encode('ascii') + ext |
cf0b37d2a28d
Updated send2trash to version 1.4.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5624
diff
changeset
|
97 | |
3644
a2c88b9b1d16
Added code to Project to move deleted files/directories to the recycle bin falling back to removing them (os.remove), if send2trash cannot be imported due to missing dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
98 | check_create(filespath) |
a2c88b9b1d16
Added code to Project to move deleted files/directories to the recycle bin falling back to removing them (os.remove), if send2trash cannot be imported due to missing dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
99 | check_create(infopath) |
5994
cf0b37d2a28d
Updated send2trash to version 1.4.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5624
diff
changeset
|
100 | |
3644
a2c88b9b1d16
Added code to Project to move deleted files/directories to the recycle bin falling back to removing them (os.remove), if send2trash cannot be imported due to missing dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
101 | os.rename(src, op.join(filespath, destname)) |
a2c88b9b1d16
Added code to Project to move deleted files/directories to the recycle bin falling back to removing them (os.remove), if send2trash cannot be imported due to missing dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
102 | f = open(op.join(infopath, destname + INFO_SUFFIX), 'w') |
a2c88b9b1d16
Added code to Project to move deleted files/directories to the recycle bin falling back to removing them (os.remove), if send2trash cannot be imported due to missing dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
103 | f.write(info_for(src, topdir)) |
a2c88b9b1d16
Added code to Project to move deleted files/directories to the recycle bin falling back to removing them (os.remove), if send2trash cannot be imported due to missing dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
104 | f.close() |
a2c88b9b1d16
Added code to Project to move deleted files/directories to the recycle bin falling back to removing them (os.remove), if send2trash cannot be imported due to missing dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
105 | |
a2c88b9b1d16
Added code to Project to move deleted files/directories to the recycle bin falling back to removing them (os.remove), if send2trash cannot be imported due to missing dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
106 | def find_mount_point(path): |
a2c88b9b1d16
Added code to Project to move deleted files/directories to the recycle bin falling back to removing them (os.remove), if send2trash cannot be imported due to missing dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
107 | # Even if something's wrong, "/" is a mount point, so the loop will exit. |
a2c88b9b1d16
Added code to Project to move deleted files/directories to the recycle bin falling back to removing them (os.remove), if send2trash cannot be imported due to missing dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
108 | # Use realpath in case it's a symlink |
a2c88b9b1d16
Added code to Project to move deleted files/directories to the recycle bin falling back to removing them (os.remove), if send2trash cannot be imported due to missing dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
109 | path = op.realpath(path) # Required to avoid infinite loop |
a2c88b9b1d16
Added code to Project to move deleted files/directories to the recycle bin falling back to removing them (os.remove), if send2trash cannot be imported due to missing dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
110 | while not op.ismount(path): |
a2c88b9b1d16
Added code to Project to move deleted files/directories to the recycle bin falling back to removing them (os.remove), if send2trash cannot be imported due to missing dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
111 | path = op.split(path)[0] |
a2c88b9b1d16
Added code to Project to move deleted files/directories to the recycle bin falling back to removing them (os.remove), if send2trash cannot be imported due to missing dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
112 | return path |
a2c88b9b1d16
Added code to Project to move deleted files/directories to the recycle bin falling back to removing them (os.remove), if send2trash cannot be imported due to missing dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
113 | |
a2c88b9b1d16
Added code to Project to move deleted files/directories to the recycle bin falling back to removing them (os.remove), if send2trash cannot be imported due to missing dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
114 | def find_ext_volume_global_trash(volume_root): |
a2c88b9b1d16
Added code to Project to move deleted files/directories to the recycle bin falling back to removing them (os.remove), if send2trash cannot be imported due to missing dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
115 | # from [2] Trash directories (1) check for a .Trash dir with the right |
a2c88b9b1d16
Added code to Project to move deleted files/directories to the recycle bin falling back to removing them (os.remove), if send2trash cannot be imported due to missing dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
116 | # permissions set. |
a2c88b9b1d16
Added code to Project to move deleted files/directories to the recycle bin falling back to removing them (os.remove), if send2trash cannot be imported due to missing dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
117 | trash_dir = op.join(volume_root, TOPDIR_TRASH) |
a2c88b9b1d16
Added code to Project to move deleted files/directories to the recycle bin falling back to removing them (os.remove), if send2trash cannot be imported due to missing dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
118 | if not op.exists(trash_dir): |
a2c88b9b1d16
Added code to Project to move deleted files/directories to the recycle bin falling back to removing them (os.remove), if send2trash cannot be imported due to missing dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
119 | return None |
5994
cf0b37d2a28d
Updated send2trash to version 1.4.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5624
diff
changeset
|
120 | |
3644
a2c88b9b1d16
Added code to Project to move deleted files/directories to the recycle bin falling back to removing them (os.remove), if send2trash cannot be imported due to missing dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
121 | mode = os.lstat(trash_dir).st_mode |
a2c88b9b1d16
Added code to Project to move deleted files/directories to the recycle bin falling back to removing them (os.remove), if send2trash cannot be imported due to missing dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
122 | # vol/.Trash must be a directory, cannot be a symlink, and must have the |
a2c88b9b1d16
Added code to Project to move deleted files/directories to the recycle bin falling back to removing them (os.remove), if send2trash cannot be imported due to missing dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
123 | # sticky bit set. |
a2c88b9b1d16
Added code to Project to move deleted files/directories to the recycle bin falling back to removing them (os.remove), if send2trash cannot be imported due to missing dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
124 | if not op.isdir(trash_dir) or op.islink(trash_dir) or not (mode & stat.S_ISVTX): |
a2c88b9b1d16
Added code to Project to move deleted files/directories to the recycle bin falling back to removing them (os.remove), if send2trash cannot be imported due to missing dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
125 | return None |
a2c88b9b1d16
Added code to Project to move deleted files/directories to the recycle bin falling back to removing them (os.remove), if send2trash cannot be imported due to missing dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
126 | |
5994
cf0b37d2a28d
Updated send2trash to version 1.4.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5624
diff
changeset
|
127 | trash_dir = op.join(trash_dir, text_type(uid).encode('ascii')) |
3644
a2c88b9b1d16
Added code to Project to move deleted files/directories to the recycle bin falling back to removing them (os.remove), if send2trash cannot be imported due to missing dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
128 | try: |
a2c88b9b1d16
Added code to Project to move deleted files/directories to the recycle bin falling back to removing them (os.remove), if send2trash cannot be imported due to missing dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
129 | check_create(trash_dir) |
a2c88b9b1d16
Added code to Project to move deleted files/directories to the recycle bin falling back to removing them (os.remove), if send2trash cannot be imported due to missing dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
130 | except OSError: |
a2c88b9b1d16
Added code to Project to move deleted files/directories to the recycle bin falling back to removing them (os.remove), if send2trash cannot be imported due to missing dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
131 | return None |
a2c88b9b1d16
Added code to Project to move deleted files/directories to the recycle bin falling back to removing them (os.remove), if send2trash cannot be imported due to missing dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
132 | return trash_dir |
a2c88b9b1d16
Added code to Project to move deleted files/directories to the recycle bin falling back to removing them (os.remove), if send2trash cannot be imported due to missing dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
133 | |
a2c88b9b1d16
Added code to Project to move deleted files/directories to the recycle bin falling back to removing them (os.remove), if send2trash cannot be imported due to missing dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
134 | def find_ext_volume_fallback_trash(volume_root): |
a2c88b9b1d16
Added code to Project to move deleted files/directories to the recycle bin falling back to removing them (os.remove), if send2trash cannot be imported due to missing dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
135 | # from [2] Trash directories (1) create a .Trash-$uid dir. |
a2c88b9b1d16
Added code to Project to move deleted files/directories to the recycle bin falling back to removing them (os.remove), if send2trash cannot be imported due to missing dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
136 | trash_dir = op.join(volume_root, TOPDIR_FALLBACK) |
a2c88b9b1d16
Added code to Project to move deleted files/directories to the recycle bin falling back to removing them (os.remove), if send2trash cannot be imported due to missing dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
137 | # Try to make the directory, if we can't the OSError exception will escape |
a2c88b9b1d16
Added code to Project to move deleted files/directories to the recycle bin falling back to removing them (os.remove), if send2trash cannot be imported due to missing dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
138 | # be thrown out of send2trash. |
a2c88b9b1d16
Added code to Project to move deleted files/directories to the recycle bin falling back to removing them (os.remove), if send2trash cannot be imported due to missing dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
139 | check_create(trash_dir) |
a2c88b9b1d16
Added code to Project to move deleted files/directories to the recycle bin falling back to removing them (os.remove), if send2trash cannot be imported due to missing dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
140 | return trash_dir |
a2c88b9b1d16
Added code to Project to move deleted files/directories to the recycle bin falling back to removing them (os.remove), if send2trash cannot be imported due to missing dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
141 | |
a2c88b9b1d16
Added code to Project to move deleted files/directories to the recycle bin falling back to removing them (os.remove), if send2trash cannot be imported due to missing dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
142 | def find_ext_volume_trash(volume_root): |
a2c88b9b1d16
Added code to Project to move deleted files/directories to the recycle bin falling back to removing them (os.remove), if send2trash cannot be imported due to missing dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
143 | trash_dir = find_ext_volume_global_trash(volume_root) |
a2c88b9b1d16
Added code to Project to move deleted files/directories to the recycle bin falling back to removing them (os.remove), if send2trash cannot be imported due to missing dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
144 | if trash_dir is None: |
a2c88b9b1d16
Added code to Project to move deleted files/directories to the recycle bin falling back to removing them (os.remove), if send2trash cannot be imported due to missing dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
145 | trash_dir = find_ext_volume_fallback_trash(volume_root) |
a2c88b9b1d16
Added code to Project to move deleted files/directories to the recycle bin falling back to removing them (os.remove), if send2trash cannot be imported due to missing dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
146 | return trash_dir |
a2c88b9b1d16
Added code to Project to move deleted files/directories to the recycle bin falling back to removing them (os.remove), if send2trash cannot be imported due to missing dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
147 | |
a2c88b9b1d16
Added code to Project to move deleted files/directories to the recycle bin falling back to removing them (os.remove), if send2trash cannot be imported due to missing dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
148 | # Pull this out so it's easy to stub (to avoid stubbing lstat itself) |
a2c88b9b1d16
Added code to Project to move deleted files/directories to the recycle bin falling back to removing them (os.remove), if send2trash cannot be imported due to missing dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
149 | def get_dev(path): |
a2c88b9b1d16
Added code to Project to move deleted files/directories to the recycle bin falling back to removing them (os.remove), if send2trash cannot be imported due to missing dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
150 | return os.lstat(path).st_dev |
a2c88b9b1d16
Added code to Project to move deleted files/directories to the recycle bin falling back to removing them (os.remove), if send2trash cannot be imported due to missing dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
151 | |
a2c88b9b1d16
Added code to Project to move deleted files/directories to the recycle bin falling back to removing them (os.remove), if send2trash cannot be imported due to missing dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
152 | def send2trash(path): |
5994
cf0b37d2a28d
Updated send2trash to version 1.4.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5624
diff
changeset
|
153 | if isinstance(path, text_type): |
cf0b37d2a28d
Updated send2trash to version 1.4.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5624
diff
changeset
|
154 | path_b = fsencode(path) |
cf0b37d2a28d
Updated send2trash to version 1.4.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5624
diff
changeset
|
155 | elif isinstance(path, bytes): |
cf0b37d2a28d
Updated send2trash to version 1.4.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5624
diff
changeset
|
156 | path_b = path |
cf0b37d2a28d
Updated send2trash to version 1.4.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5624
diff
changeset
|
157 | elif hasattr(path, '__fspath__'): |
cf0b37d2a28d
Updated send2trash to version 1.4.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5624
diff
changeset
|
158 | # Python 3.6 PathLike protocol |
cf0b37d2a28d
Updated send2trash to version 1.4.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5624
diff
changeset
|
159 | return send2trash(path.__fspath__()) |
cf0b37d2a28d
Updated send2trash to version 1.4.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5624
diff
changeset
|
160 | else: |
cf0b37d2a28d
Updated send2trash to version 1.4.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5624
diff
changeset
|
161 | raise TypeError('str, bytes or PathLike expected, not %r' % type(path)) |
cf0b37d2a28d
Updated send2trash to version 1.4.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5624
diff
changeset
|
162 | |
cf0b37d2a28d
Updated send2trash to version 1.4.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5624
diff
changeset
|
163 | if not op.exists(path_b): |
3644
a2c88b9b1d16
Added code to Project to move deleted files/directories to the recycle bin falling back to removing them (os.remove), if send2trash cannot be imported due to missing dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
164 | raise OSError("File not found: %s" % path) |
a2c88b9b1d16
Added code to Project to move deleted files/directories to the recycle bin falling back to removing them (os.remove), if send2trash cannot be imported due to missing dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
165 | # ...should check whether the user has the necessary permissions to delete |
a2c88b9b1d16
Added code to Project to move deleted files/directories to the recycle bin falling back to removing them (os.remove), if send2trash cannot be imported due to missing dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
166 | # it, before starting the trashing operation itself. [2] |
5994
cf0b37d2a28d
Updated send2trash to version 1.4.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5624
diff
changeset
|
167 | if not os.access(path_b, os.W_OK): |
3644
a2c88b9b1d16
Added code to Project to move deleted files/directories to the recycle bin falling back to removing them (os.remove), if send2trash cannot be imported due to missing dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
168 | raise OSError("Permission denied: %s" % path) |
a2c88b9b1d16
Added code to Project to move deleted files/directories to the recycle bin falling back to removing them (os.remove), if send2trash cannot be imported due to missing dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
169 | # if the file to be trashed is on the same device as HOMETRASH we |
a2c88b9b1d16
Added code to Project to move deleted files/directories to the recycle bin falling back to removing them (os.remove), if send2trash cannot be imported due to missing dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
170 | # want to move it there. |
5994
cf0b37d2a28d
Updated send2trash to version 1.4.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5624
diff
changeset
|
171 | path_dev = get_dev(path_b) |
cf0b37d2a28d
Updated send2trash to version 1.4.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5624
diff
changeset
|
172 | |
3644
a2c88b9b1d16
Added code to Project to move deleted files/directories to the recycle bin falling back to removing them (os.remove), if send2trash cannot be imported due to missing dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
173 | # If XDG_DATA_HOME or HOMETRASH do not yet exist we need to stat the |
a2c88b9b1d16
Added code to Project to move deleted files/directories to the recycle bin falling back to removing them (os.remove), if send2trash cannot be imported due to missing dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
174 | # home directory, and these paths will be created further on if needed. |
5994
cf0b37d2a28d
Updated send2trash to version 1.4.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5624
diff
changeset
|
175 | trash_dev = get_dev(op.expanduser(b'~')) |
3644
a2c88b9b1d16
Added code to Project to move deleted files/directories to the recycle bin falling back to removing them (os.remove), if send2trash cannot be imported due to missing dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
176 | |
a2c88b9b1d16
Added code to Project to move deleted files/directories to the recycle bin falling back to removing them (os.remove), if send2trash cannot be imported due to missing dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
177 | if path_dev == trash_dev: |
a2c88b9b1d16
Added code to Project to move deleted files/directories to the recycle bin falling back to removing them (os.remove), if send2trash cannot be imported due to missing dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
178 | topdir = XDG_DATA_HOME |
5994
cf0b37d2a28d
Updated send2trash to version 1.4.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5624
diff
changeset
|
179 | dest_trash = HOMETRASH_B |
3644
a2c88b9b1d16
Added code to Project to move deleted files/directories to the recycle bin falling back to removing them (os.remove), if send2trash cannot be imported due to missing dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
180 | else: |
5994
cf0b37d2a28d
Updated send2trash to version 1.4.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5624
diff
changeset
|
181 | topdir = find_mount_point(path_b) |
3644
a2c88b9b1d16
Added code to Project to move deleted files/directories to the recycle bin falling back to removing them (os.remove), if send2trash cannot be imported due to missing dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
182 | trash_dev = get_dev(topdir) |
a2c88b9b1d16
Added code to Project to move deleted files/directories to the recycle bin falling back to removing them (os.remove), if send2trash cannot be imported due to missing dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
183 | if trash_dev != path_dev: |
a2c88b9b1d16
Added code to Project to move deleted files/directories to the recycle bin falling back to removing them (os.remove), if send2trash cannot be imported due to missing dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
184 | raise OSError("Couldn't find mount point for %s" % path) |
a2c88b9b1d16
Added code to Project to move deleted files/directories to the recycle bin falling back to removing them (os.remove), if send2trash cannot be imported due to missing dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
185 | dest_trash = find_ext_volume_trash(topdir) |
5994
cf0b37d2a28d
Updated send2trash to version 1.4.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5624
diff
changeset
|
186 | trash_move(path_b, dest_trash, topdir) |