|
@@ -6,6 +6,56 @@ import os.path
|
|
|
import hashlib
|
|
|
|
|
|
|
|
|
+def is_writeable(path, check_parent=False):
|
|
|
+ '''
|
|
|
+ Check if a given path is writeable by the current user.
|
|
|
+
|
|
|
+ :param path: The path to check
|
|
|
+ :param check_parent: If the path to check does not exist, check for the
|
|
|
+ ability to write to the parent directory instead
|
|
|
+ :returns: True or False
|
|
|
+ '''
|
|
|
+
|
|
|
+ if os.access(path, os.F_OK) and os.access(path, os.W_OK):
|
|
|
+ # The path exists and is writeable
|
|
|
+ return True
|
|
|
+
|
|
|
+ if os.access(path, os.F_OK) and not os.access(path, os.W_OK):
|
|
|
+ # The path exists and is not writeable
|
|
|
+ return False
|
|
|
+
|
|
|
+ # The path does not exists or is not writeable
|
|
|
+
|
|
|
+ if check_parent is False:
|
|
|
+ # We're not allowed to check the parent directory of the provided path
|
|
|
+ return False
|
|
|
+
|
|
|
+ # Lets get the parent directory of the provided path
|
|
|
+ parent_dir = os.path.dirname(path)
|
|
|
+
|
|
|
+ if not os.access(parent_dir, os.F_OK):
|
|
|
+ # Parent directory does not exit
|
|
|
+ return False
|
|
|
+
|
|
|
+ # Finally, return if we're allowed to write in the parent directory of the
|
|
|
+ # provided path
|
|
|
+ return os.access(parent_dir, os.W_OK)
|
|
|
+
|
|
|
+def is_readable(path):
|
|
|
+ '''
|
|
|
+ Check if a given path is readable by the current user.
|
|
|
+
|
|
|
+ :param path: The path to check
|
|
|
+ :returns: True or False
|
|
|
+ '''
|
|
|
+
|
|
|
+ if os.access(path, os.F_OK) and os.access(path, os.R_OK):
|
|
|
+ # The path exists and is readable
|
|
|
+ return True
|
|
|
+
|
|
|
+ # The path does not exist
|
|
|
+ return False
|
|
|
+
|
|
|
def findfile(start, name=None):
|
|
|
for relpath, dirs, files in os.walk(start):
|
|
|
if name in files:
|