瀏覽代碼

pythonlib/grassdb: replace unix only function for file owner name (#896)

pwd.getpwuid works on unix only
Anna Petrasova 4 年之前
父節點
當前提交
a3d1ff9313
共有 2 個文件被更改,包括 13 次插入5 次删除
  1. 6 2
      gui/wxpython/datacatalog/tree.py
  2. 7 3
      lib/python/grassdb/checks.py

+ 6 - 2
gui/wxpython/datacatalog/tree.py

@@ -209,14 +209,18 @@ class DataCatalogNode(DictNode):
     def label(self):
         data = self.data
         if data['type'] == 'mapset':
+            owner = data['owner'] if data['owner'] else _("name unknown")
             if data['current']:
                 return _("{name}  (current)").format(**data)
             elif data['is_different_owner'] and data['lock']:
-                return _("{name}  (in use, owner: {owner})").format(**data)
+                return _("{name}  (in use, owner: {owner})").format(
+                    name=data["name"], owner=owner
+                )
             elif data['lock']:
                 return _("{name}  (in use)").format(**data)
             elif data['is_different_owner']:
-                return _("{name}  (owner: {owner})").format(**data)
+                return _("{name}  (owner: {owner})").format(name=data["name"],
+                                                            owner=owner)
 
         return _("{name}").format(**data)
 

+ 7 - 3
lib/python/grassdb/checks.py

@@ -11,7 +11,7 @@ for details.
 
 
 import os
-from pwd import getpwuid
+from pathlib import Path
 
 
 def mapset_exists(database, location, mapset):
@@ -78,8 +78,12 @@ def is_different_mapset_owner(mapset_path):
 
 
 def get_mapset_owner(mapset_path):
-    """Returns mapset owner"""
-    return getpwuid(os.stat(mapset_path).st_uid).pw_name
+    """Returns mapset owner name or None if owner name unknown"""
+    try:
+        path = Path(mapset_path)
+        return path.owner()
+    except KeyError:
+        return None
 
 
 def is_mapset_locked(mapset_path):