Browse Source

add code to properly dump os.stat_result's..

main
John-Mark Gurney 2 years ago
parent
commit
725f32102b
1 changed files with 22 additions and 0 deletions
  1. +22
    -0
      ui/medashare/cli.py

+ 22
- 0
ui/medashare/cli.py View File

@@ -693,10 +693,32 @@ class FileObject(MDBase):
return uuid.uuid5(_NAMESPACE_MEDASHARE_PATH,
str(hostid) + '/'.join(os.path.split(fname)))

_statsymbtoname = { getattr(stat, x): 'stat.' + x for x in dir(stat) if x.startswith('S_') }

@classmethod
def _modetosymbolic(cls, mode): # pragma: no cover
r = []
while mode:
nbit = -mode & mode

r.append(cls._statsymbtoname[nbit])

mode = mode & ~nbit

return '|'.join(r)
@classmethod
def _real_stat_repr(cls, st): # pragma: no cover
return 'os.stat_result' \
'((%s, %d, %d, %d, %d, %d, %d, %d, %.6f, %d))' % \
(cls._modetosymbolic(st.st_mode), 10, 100, 1, 100, 100,
st.st_size, st.st_atime, st.st_mtime, st.st_ctime)

@classmethod
def from_file(cls, filename, created_by_ref):
filename = os.path.abspath(filename)
s = os.stat(filename)
# keep so that when new files are added, it's easy to get stat
#_debprint(repr(filename), cls._real_stat_repr(s))
# XXX - race here, fix w/ checking mtime before/after?
obj = {
'created_by_ref': created_by_ref,


Loading…
Cancel
Save