save new users and add command edit

This commit is contained in:
a-Sansara 2012-10-01 22:08:37 +02:00
parent f014414041
commit 291df8a954
4 changed files with 181 additions and 24 deletions

View File

@ -108,6 +108,7 @@ class Cli:
gpData.add_option('-c', '--category' , help='set specified CATEGORY (crit. for opt. -l,-a or -s)' , action='store', metavar='CATG ') gpData.add_option('-c', '--category' , help='set specified CATEGORY (crit. for opt. -l,-a or -s)' , action='store', metavar='CATG ')
gpData.add_option('-u', '--user' , help='set specified USER (crit. for opt. -l,-a or -s)' , action='store', metavar='OWNER ') gpData.add_option('-u', '--user' , help='set specified USER (crit. for opt. -l,-a or -s)' , action='store', metavar='OWNER ')
gpData.add_option('-l', '--label' , help='set specified LABEL (edit mode only)' , action='store', metavar='LABEL ')
gpData.add_option('-o', '--order' , help='set colon ORDER (crit. for opt. -l and -s)' , action='store', metavar='ORDER ' , default='ID') gpData.add_option('-o', '--order' , help='set colon ORDER (crit. for opt. -l and -s)' , action='store', metavar='ORDER ' , default='ID')
gpData.add_option('-O', '--order-inv' , help='set colon ORDER_INVERSE (crit. for opt. -l and -s)' , action='store', metavar='ORDER_INVERSE') gpData.add_option('-O', '--order-inv' , help='set colon ORDER_INVERSE (crit. for opt. -l and -s)' , action='store', metavar='ORDER_INVERSE')
#gpData.add_option('-o', '--output-dir' , help='set specified OUTPUT DIR (for opt. -l,-a,-d or -g)' , action='store', metavar='DIR ') #gpData.add_option('-o', '--output-dir' , help='set specified OUTPUT DIR (for opt. -l,-a,-d or -g)' , action='store', metavar='DIR ')
@ -209,7 +210,7 @@ class Cli:
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# ~~ data CMD ~~ # ~~ data CMD ~~
elif a[0] == 'list' or a[0] == 'add' or a[0] == 'get' or a[0] == 'remove' or a[0] == 'search' : elif a[0] == 'list' or a[0] == 'add' or a[0] == 'get' or a[0] == 'remove' or a[0] == 'search' or a[0] == 'edit':
o.active_profile = self.ini.get('profile') o.active_profile = self.ini.get('profile')
@ -300,10 +301,42 @@ class Cli:
else : self.error_cmd('`'+a[1]+' is not a file',parser) else : self.error_cmd('`'+a[1]+' is not a file',parser)
elif a[0] == 'edit':
if not len(a)>1 : self.error_cmd('`'+a[0]+' need an id',parser)
else:
if not util.represents_int(a[1]):
print('\n ',end='')
Clz.print(' == `' , Clz.bg1+Clz.fgB7, False)
Clz.print(a[1] , Clz.bg1+Clz.fgB3, False)
Clz.print('` is not a valid id == ', Clz.bg1+Clz.fgB7)
print()
self.exit(1)
else :
vid = a[1]
key = impst.index.getById(vid)
if key !=None :
done = impst.editFile(key,o.label,o.category)
if done :
impst.saveIndex()
print('\n ',end='')
Clz.print(' == OK == ', Clz.bg2+Clz.fgb7)
print()
else :
print('\n ',end='')
Clz.print(' == `' , Clz.bg1+Clz.fgB7, False)
Clz.print(a[1] , Clz.bg1+Clz.fgB3, False)
Clz.print('` has not been modified == ', Clz.bg1+Clz.fgB7)
print()
else:
print('\n ',end='')
Clz.print(' == `' , Clz.bg1+Clz.fgB7, False)
Clz.print(a[1] , Clz.bg1+Clz.fgB3, False)
Clz.print('` is not a valid id == ', Clz.bg1+Clz.fgB7)
print()
elif a[0] == 'get': elif a[0] == 'get':
if not len(a)>1 : self.error_cmd('`'+a[0]+' need one argument',parser) if not len(a)>1 : self.error_cmd('`'+a[0]+' need an id',parser)
else: else:
vid = a[1] vid = a[1]
ids = [] ids = []
@ -388,7 +421,7 @@ class Cli:
elif a[0] == 'remove': elif a[0] == 'remove':
if not len(a)>1 : self.error_cmd('`'+a[0]+' need one argument',parser) if not len(a)>1 : self.error_cmd('`'+a[0]+' need an id',parser)
else : else :
if not util.represents_int(a[1]): if not util.represents_int(a[1]):
@ -506,6 +539,22 @@ class Cli:
Clz.print('}', Clz.fgB1, False) Clz.print('}', Clz.fgB1, False)
Clz.print(']', Clz.fgB3) Clz.print(']', Clz.fgB3)
Clz.print(' imprastorage ', Clz.fgb7, False)
Clz.print('edit ', Clz.fgB3, False)
Clz.print('{', Clz.fgB1, False)
Clz.print('id', Clz.fgB1, False)
Clz.print('} ', Clz.fgB1, False)
Clz.print('[', Clz.fgB3, False)
Clz.print(' -l ', Clz.fgB3, False)
Clz.print('{', Clz.fgB1, False)
Clz.print('label', Clz.fgB1, False)
Clz.print('}', Clz.fgB1, False)
Clz.print(' -c ', Clz.fgB3, False)
Clz.print('{', Clz.fgB1, False)
Clz.print('category', Clz.fgB1, False)
Clz.print('}', Clz.fgB1, False)
Clz.print(']', Clz.fgB3)
Clz.print(' imprastorage ', Clz.fgb7, False) Clz.print(' imprastorage ', Clz.fgb7, False)
Clz.print('get ', Clz.fgB3, False) Clz.print('get ', Clz.fgB3, False)
Clz.print('{', Clz.fgB1, False) Clz.print('{', Clz.fgB1, False)
@ -563,7 +612,9 @@ class Cli:
Clz.print('conf', Clz.fgB3, False) Clz.print('conf', Clz.fgB3, False)
Clz.print(' -L', Clz.fgB3, False) Clz.print(' -L', Clz.fgB3, False)
Clz.print('|', Clz.fgB1, False) Clz.print('|', Clz.fgB1, False)
Clz.print('-V ', Clz.fgB3, False) Clz.print('-V', Clz.fgB3, False)
Clz.print('|', Clz.fgB1, False)
Clz.print('-C ', Clz.fgB3, False)
Clz.print('{', Clz.fgB1, False) Clz.print('{', Clz.fgB1, False)
Clz.print('profile', Clz.fgB1, False) Clz.print('profile', Clz.fgB1, False)
Clz.print('}', Clz.fgB1) Clz.print('}', Clz.fgB1)
@ -627,6 +678,12 @@ class Cli:
Clz.print('USER'.ljust(10,' ') , Clz.fgB1) Clz.print('USER'.ljust(10,' ') , Clz.fgB1)
Clz.print(' '*50+'set a user' , Clz.fgB7) Clz.print(' '*50+'set a user' , Clz.fgB7)
Clz.print(' '*4+'-l ' , Clz.fgB3, False)
Clz.print('LABEL'.ljust(10,' ') , Clz.fgB1, False)
Clz.print(', --label'.ljust(18,' ') , Clz.fgB3, False)
Clz.print('LABEL'.ljust(10,' ') , Clz.fgB1)
Clz.print(' '*50+'set a label (edit mode only)' , Clz.fgB7)
Clz.print(' '*4+'-o ' , Clz.fgB3, False) Clz.print(' '*4+'-o ' , Clz.fgB3, False)
Clz.print('COLON'.ljust(10,' ') , Clz.fgB1, False) Clz.print('COLON'.ljust(10,' ') , Clz.fgB1, False)
Clz.print(', --order'.ljust(18,' ') , Clz.fgB3, False) Clz.print(', --order'.ljust(18,' ') , Clz.fgB3, False)
@ -651,7 +708,13 @@ class Cli:
Clz.print('PROFILE'.ljust(10,' ') , Clz.fgB1, False) Clz.print('PROFILE'.ljust(10,' ') , Clz.fgB1, False)
Clz.print(', --view'.ljust(18,' ') , Clz.fgB3, False) Clz.print(', --view'.ljust(18,' ') , Clz.fgB3, False)
Clz.print('PROFILE'.ljust(10,' ') , Clz.fgB1) Clz.print('PROFILE'.ljust(10,' ') , Clz.fgB1)
Clz.print(' '*50+'view the specified profile (or * for all available)' , Clz.fgB7) Clz.print(' '*50+'view the specified profile (or \'all\' for view availables)' , Clz.fgB7)
Clz.print(' '*4+'-C ' , Clz.fgB3, False)
Clz.print('PROFILE'.ljust(10,' ') , Clz.fgB1, False)
Clz.print(', --check'.ljust(18,' ') , Clz.fgB3, False)
Clz.print('PROFILE'.ljust(10,' ') , Clz.fgB1)
Clz.print(' '*50+'check the specified profile' , Clz.fgB7)
Clz.print(' '*4+'-S ' , Clz.fgB3, False) Clz.print(' '*4+'-S ' , Clz.fgB3, False)
Clz.print('PROFILE'.ljust(10,' ') , Clz.fgB1, False) Clz.print('PROFILE'.ljust(10,' ') , Clz.fgB1, False)
@ -715,35 +778,67 @@ class Cli:
printLineSep(LINE_SEP_CHAR,LINE_SEP_LEN) printLineSep(LINE_SEP_CHAR,LINE_SEP_LEN)
print() print()
Clz.print(' EXEMPLES :\n', Clz.fgB3) Clz.print(' EXEMPLES :\n', Clz.fgB3)
CHQ = "'"
sep = core.sep
HOME = sep+'home'+sep
if not Clz.isUnix :
CHQ = '"'
HOME = 'C:'+sep
Clz.print(' '*4+'command add :', Clz.fgB3) Clz.print(' '*4+'command add :', Clz.fgB3)
Clz.print(' '*8+'# add (upload) a file',Clz.fgn7) Clz.print(' '*8+'# add (upload) a file',Clz.fgn7)
Clz.print(' '*8+'imprastorage ', Clz.fgB7, False) Clz.print(' '*8+'imprastorage ', Clz.fgB7, False)
Clz.print('add ', Clz.fgB3, False) Clz.print('add ', Clz.fgB3, False)
Clz.print('/home/Share/2009-mountains.avi', Clz.fgB1) Clz.print(HOME+'Share'+sep+'2009-mountains.avi', Clz.fgB1)
Clz.print(' '*8+'# add a file with a label (label will be the filename on downloading)',Clz.fgn7) Clz.print(' '*8+'# add a file with a label (label will be the filename on downloading)',Clz.fgn7)
Clz.print(' '*8+'imprastorage ', Clz.fgB7, False) Clz.print(' '*8+'imprastorage ', Clz.fgB7, False)
Clz.print('add ', Clz.fgB3, False) Clz.print('add ', Clz.fgB3, False)
Clz.print('/home/Share/2009-mountains.avi \'summer 2009 - in mountains\'', Clz.fgB1) Clz.print(HOME+'Share'+sep+'2009-mountains.avi '+CHQ+'summer 2009 - in mountains'+CHQ, Clz.fgB1)
Clz.print(' '*8+'# add a file on a category (category will be the dir structure on downloading)',Clz.fgn7) Clz.print(' '*8+'# add a file on a category (category will be the dir structure on downloading)',Clz.fgn7)
Clz.print(' '*8+'imprastorage ', Clz.fgB7, False) Clz.print(' '*8+'imprastorage ', Clz.fgB7, False)
Clz.print('add ', Clz.fgB3, False) Clz.print('add ', Clz.fgB3, False)
Clz.print('/home/Share/2009-mountains.avi', Clz.fgB1, False) Clz.print(HOME+'Share'+sep+'2009-mountains.avi', Clz.fgB1, False)
Clz.print(' -c ', Clz.fgB3, False) Clz.print(' -c ', Clz.fgB3, False)
Clz.print('videos/perso/2009', Clz.fgB1) Clz.print('videos/perso/2009', Clz.fgB1)
Clz.print(' '*8+'# add a file with a label on a category',Clz.fgn7) Clz.print(' '*8+'# add a file with a label on a category',Clz.fgn7)
Clz.print(' '*8+'imprastorage ', Clz.fgB7, False) Clz.print(' '*8+'imprastorage ', Clz.fgB7, False)
Clz.print('add ', Clz.fgB3, False) Clz.print('add ', Clz.fgB3, False)
Clz.print('/home/Share/2009-mountains.avi \'summer 2009 - in mountains\'', Clz.fgB1, False) Clz.print(HOME+'Share'+sep+'2009-mountains.avi '+CHQ+'summer 2009 - in mountains'+CHQ, Clz.fgB1, False)
Clz.print(' -c ', Clz.fgB3, False) Clz.print(' -c ', Clz.fgB3, False)
Clz.print('videos/perso/2009', Clz.fgB1) Clz.print('videos/perso/2009', Clz.fgB1)
printLineSep(LINE_SEP_CHAR,LINE_SEP_LEN)
Clz.print('\n'+' '*4+'command edit :', Clz.fgB3)
Clz.print(' '*8+'# edit label on file with id 15',Clz.fgn7)
Clz.print(' '*8+'imprastorage ', Clz.fgB7, False)
Clz.print('edit ', Clz.fgB3, False)
Clz.print('15', Clz.fgB1, False)
Clz.print(' -l ' , Clz.fgB3, False)
Clz.print('newName', Clz.fgB1)
Clz.print(' '*8+'# edit category on file with id 15',Clz.fgn7)
Clz.print(' '*8+'imprastorage ', Clz.fgB7, False)
Clz.print('edit ', Clz.fgB3, False)
Clz.print('15', Clz.fgB1, False)
Clz.print(' -c ' , Clz.fgB3, False)
Clz.print('new/category', Clz.fgB1)
Clz.print(' '*8+'# edit label and category on file with id 15',Clz.fgn7)
Clz.print(' '*8+'imprastorage ', Clz.fgB7, False)
Clz.print('edit ', Clz.fgB3, False)
Clz.print('15', Clz.fgB1, False)
Clz.print(' -c ' , Clz.fgB3, False)
Clz.print('new/category', Clz.fgB1, False)
Clz.print(' -c ' , Clz.fgB3, False)
Clz.print(CHQ+'my newName'+CHQ, Clz.fgB1)
printLineSep(LINE_SEP_CHAR,LINE_SEP_LEN) printLineSep(LINE_SEP_CHAR,LINE_SEP_LEN)
Clz.print('\n'+' '*4+'command get :', Clz.fgB3) Clz.print('\n'+' '*4+'command get :', Clz.fgB3)
@ -824,21 +919,21 @@ class Cli:
Clz.print(' '*8+'# search all files wich contains `old mountain` on category `videos/perso`',Clz.fgn7) Clz.print(' '*8+'# search all files wich contains `old mountain` on category `videos/perso`',Clz.fgn7)
Clz.print(' '*8+'imprastorage ', Clz.fgB7, False) Clz.print(' '*8+'imprastorage ', Clz.fgB7, False)
Clz.print('search ', Clz.fgB3, False) Clz.print('search ', Clz.fgB3, False)
Clz.print('\'old mountain\'', Clz.fgB1, False) Clz.print(CHQ+'old mountain'+CHQ, Clz.fgB1, False)
Clz.print(' -c ' , Clz.fgB3, False) Clz.print(' -c ' , Clz.fgB3, False)
Clz.print('videos/perso', Clz.fgB1) Clz.print('videos/perso', Clz.fgB1)
Clz.print(' '*8+'# search all files wich contains `old mountain` sent by user `bob`',Clz.fgn7) Clz.print(' '*8+'# search all files wich contains `old mountain` sent by user `bob`',Clz.fgn7)
Clz.print(' '*8+'imprastorage ', Clz.fgB7, False) Clz.print(' '*8+'imprastorage ', Clz.fgB7, False)
Clz.print('search ', Clz.fgB3, False) Clz.print('search ', Clz.fgB3, False)
Clz.print('\'old mountain\'', Clz.fgB1, False) Clz.print(CHQ+'old mountain'+CHQ, Clz.fgB1, False)
Clz.print(' -u ' , Clz.fgB3, False) Clz.print(' -u ' , Clz.fgB3, False)
Clz.print('bob', Clz.fgB1) Clz.print('bob', Clz.fgB1)
Clz.print(' '*8+'# search all files wich contains `old mountain` (reverse sorted by SIZE)',Clz.fgn7) Clz.print(' '*8+'# search all files wich contains `old mountain` (reverse sorted by SIZE)',Clz.fgn7)
Clz.print(' '*8+'imprastorage ', Clz.fgB7, False) Clz.print(' '*8+'imprastorage ', Clz.fgB7, False)
Clz.print('search ', Clz.fgB3, False) Clz.print('search ', Clz.fgB3, False)
Clz.print('\'old mountain\'', Clz.fgB1, False) Clz.print(CHQ+'old mountain'+CHQ, Clz.fgB1, False)
Clz.print(' -O ' , Clz.fgB3, False) Clz.print(' -O ' , Clz.fgB3, False)
Clz.print('SIZE', Clz.fgB1) Clz.print('SIZE', Clz.fgB1)
@ -846,7 +941,7 @@ class Cli:
Clz.print(' '*8+'# sorted by LABEL)',Clz.fgn7) Clz.print(' '*8+'# sorted by LABEL)',Clz.fgn7)
Clz.print(' '*8+'imprastorage ', Clz.fgB7, False) Clz.print(' '*8+'imprastorage ', Clz.fgB7, False)
Clz.print('search ', Clz.fgB3, False) Clz.print('search ', Clz.fgB3, False)
Clz.print('\'old mountain\'', Clz.fgB1, False) Clz.print(CHQ+'old mountain'+CHQ, Clz.fgB1, False)
Clz.print(' -c ' , Clz.fgB3, False) Clz.print(' -c ' , Clz.fgB3, False)
Clz.print('videos/perso', Clz.fgB1, False) Clz.print('videos/perso', Clz.fgB1, False)
Clz.print(' -u ' , Clz.fgB3, False) Clz.print(' -u ' , Clz.fgB3, False)
@ -857,12 +952,12 @@ class Cli:
Clz.print(' '*8+'# search all files starting by `old mountain`',Clz.fgn7) Clz.print(' '*8+'# search all files starting by `old mountain`',Clz.fgn7)
Clz.print(' '*8+'imprastorage ', Clz.fgB7, False) Clz.print(' '*8+'imprastorage ', Clz.fgB7, False)
Clz.print('search ', Clz.fgB3, False) Clz.print('search ', Clz.fgB3, False)
Clz.print('\'^old mountain\'', Clz.fgB1) Clz.print(CHQ+'^old mountain'+CHQ, Clz.fgB1)
Clz.print(' '*8+'# search all files ending by `old mountain`',Clz.fgn7) Clz.print(' '*8+'# search all files ending by `old mountain`',Clz.fgn7)
Clz.print(' '*8+'imprastorage ', Clz.fgB7, False) Clz.print(' '*8+'imprastorage ', Clz.fgB7, False)
Clz.print('search ', Clz.fgB3, False) Clz.print('search ', Clz.fgB3, False)
Clz.print('\'old mountain$\'', Clz.fgB1) Clz.print(CHQ+'old mountain$'+CHQ, Clz.fgB1)
printLineSep(LINE_SEP_CHAR,LINE_SEP_LEN) printLineSep(LINE_SEP_CHAR,LINE_SEP_LEN)
@ -886,6 +981,12 @@ class Cli:
Clz.print('-X ', Clz.fgB3, False) Clz.print('-X ', Clz.fgB3, False)
Clz.print('mypassword ', Clz.fgB1) Clz.print('mypassword ', Clz.fgB1)
Clz.print(' '*8+'# check config profile bobimap (current profile doesn\'t change)',Clz.fgn7)
Clz.print(' '*8+'imprastorage ', Clz.fgB7, False)
Clz.print('conf ', Clz.fgB3, False)
Clz.print('-C ', Clz.fgB3, False)
Clz.print('bobimap ', Clz.fgB1)
Clz.print(' '*8+'# load config profile bobimap and set it as current profile',Clz.fgn7) Clz.print(' '*8+'# load config profile bobimap and set it as current profile',Clz.fgn7)
Clz.print(' '*8+'imprastorage ', Clz.fgB7, False) Clz.print(' '*8+'imprastorage ', Clz.fgB7, False)
Clz.print('conf ', Clz.fgB3, False) Clz.print('conf ', Clz.fgB3, False)

View File

@ -285,8 +285,13 @@ class ImpraIndex:
self.dic = self.decrypt(encdata) self.dic = self.decrypt(encdata)
self.id = max([self.dic[k][self.UID] for i, k in enumerate(self.dic) if not k.startswith(self.SEP_KEY_INTERN)])+1 self.id = max([self.dic[k][self.UID] for i, k in enumerate(self.dic) if not k.startswith(self.SEP_KEY_INTERN)])+1
for k in dicCategory : for k in dicCategory :
if not self.SEP_KEY_INTERN+k in self.dic: if k == "users" :
self.dic[self.SEP_KEY_INTERN+k] = dicCategory[k] for k1 in dicCategory[k]:
if k1 not in self.dic[self.SEP_KEY_INTERN+k]:
self.dic[self.SEP_KEY_INTERN+k][k1] = dicCategory[k][k1]
else :
if not self.SEP_KEY_INTERN+k in self.dic:
self.dic[self.SEP_KEY_INTERN+k] = dicCategory[k]
def add(self,key, label, count, ext='', usr='', cat='', md5='', bFlag='b', size=''): def add(self,key, label, count, ext='', usr='', cat='', md5='', bFlag='b', size=''):
"""Add an entry to the index """Add an entry to the index
@ -356,6 +361,21 @@ class ImpraIndex:
if key in self.dic : row = self.dic.get(key) if key in self.dic : row = self.dic.get(key)
return row return row
def edit(self, key, label=None, category=None):
"""Get the corresponding key in the index
:Returns: `tuple` row
"""
done = False
row = self.dic[key]
r = list(row)
if label != None :
r[self.LABEL] = label
if category != None :
r[self.CATG] = category
self.dic[key] = tuple(r)
done = row != self.dic[key]
return done
def getById(self,sid): def getById(self,sid):
"""Get the corresponding id in the index """Get the corresponding id in the index
:Returns: `str`|None key :Returns: `str`|None key
@ -481,6 +501,8 @@ class ImpraIndex:
d = sorted([(self.dic.get(k),k) for i, k in enumerate(self.dic) if not k.startswith(self.SEP_KEY_INTERN)], reverse=inv, key=lambda lst:lst[0][orderIndex]) d = sorted([(self.dic.get(k),k) for i, k in enumerate(self.dic) if not k.startswith(self.SEP_KEY_INTERN)], reverse=inv, key=lambda lst:lst[0][orderIndex])
a = '' a = ''
tsize = 0
psize = 0
for v,k in d : for v,k in d :
if matchIds==None or v[self.UID] in matchIds: if matchIds==None or v[self.UID] in matchIds:
a = '' a = ''
@ -493,8 +515,18 @@ class ImpraIndex:
Clz.print(str(v[self.EXT][:5]).ljust(7,' ') , Clz.fgn3, False) Clz.print(str(v[self.EXT][:5]).ljust(7,' ') , Clz.fgn3, False)
Clz.print(self.getUser(str(v[self.USER])).ljust(15 ,' ') , Clz.fgn7, False) Clz.print(self.getUser(str(v[self.USER])).ljust(15 ,' ') , Clz.fgn7, False)
Clz.print(str(v[self.CATG]) +' '*2 , Clz.fgN3) Clz.print(str(v[self.CATG]) +' '*2 , Clz.fgN3)
psize += int(v[self.SIZE])
tsize += int(v[self.SIZE])
printLineSep(LINE_SEP_CHAR,LINE_SEP_LEN) printLineSep(LINE_SEP_CHAR,LINE_SEP_LEN)
c = Clz.fgB2
if psize != tsize : c = Clz.fgB7
Clz.print('size : ', Clz.fgB3, False)
Clz.print(formatBytes(int(psize))[:9].rjust(9,' '), c, False)
if psize != tsize :
Clz.print(' / ', Clz.fgB3, False)
Clz.print(formatBytes(int(tsize)), Clz.fgB2)
print()
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@ -556,8 +588,12 @@ class ImpraStorage:
def getIndexDefaultCatg(self): def getIndexDefaultCatg(self):
"""""" """"""
usrName = self.conf.get('name','infos') usrName = self.conf.get('name','infos')
return {'catg':self.conf.get('types','catg'), 'users':{ ('%s' % self.mb.getHashName('all')) : 'all', ('%s' % self.mb.getHashName(usrName)) : usrName}} defUsers = self.conf.get('users','catg').split(',')
dic = {'catg':self.conf.get('types','catg'), 'users':{ ('%s' % self.mb.getHashName('all')) : 'all', ('%s' % self.mb.getHashName(usrName)) : usrName}}
for u in defUsers :
dic['users'][('%s' % self.mb.getHashName(u.strip()))] = u.strip()
return dic
def getIndex(self, forceRefresh=False): def getIndex(self, forceRefresh=False):
"""""" """"""
@ -586,7 +622,11 @@ class ImpraStorage:
o.write(encData) o.write(encData)
self.conf.set('time',str(datetime.now()),'index') self.conf.set('time',str(datetime.now()),'index')
index = ImpraIndex(self.conf.get('key','keys'),self.conf.get('mark','keys'), encData, self.getIndexDefaultCatg()) index = ImpraIndex(self.conf.get('key','keys'),self.conf.get('mark','keys'), encData, self.getIndexDefaultCatg())
defUsers = self.conf.get('users','catg')
for k in index.dic[ImpraIndex.SEP_KEY_INTERN+'users']:
if index.dic[ImpraIndex.SEP_KEY_INTERN+'users'][k] not in [ i.strip() for i in defUsers.split(',')]:
self.conf.set('users',defUsers+', '+index.dic[ImpraIndex.SEP_KEY_INTERN+'users'][k],'catg')
rt.stop() rt.stop()
return index return index
@ -750,6 +790,22 @@ class ImpraStorage:
rt.stop() rt.stop()
return done return done
def editFile(self,key,label,category):
""""""
from impra.util import DEBUG, DEBUG_LEVEL, DEBUG_NOTICE, DEBUG_WARN, DEBUG_INFO
done = False
row = self.index.get(key)
if row==None :
print()
Clz.print(' == `' , Clz.bg1+Clz.fgB7, False)
Clz.print(str(key) , Clz.bg1+Clz.fgB3, False)
Clz.print('` not on the server == ', Clz.bg1+Clz.fgB7)
print()
else :
done = self.index.edit(key,label,category)
return done
def removeFile(self,key): def removeFile(self,key):
"""""" """"""
from impra.util import DEBUG, DEBUG_LEVEL, DEBUG_NOTICE, DEBUG_WARN, DEBUG_INFO from impra.util import DEBUG, DEBUG_LEVEL, DEBUG_NOTICE, DEBUG_WARN, DEBUG_INFO

View File

@ -178,7 +178,7 @@ class ImapHelper:
def status(self,box='INBOX'): def status(self,box='INBOX'):
"""""" """"""
status, resp = ih.srv.status(box, '(MESSAGES RECENT UIDNEXT UIDVALIDITY UNSEEN)') status, resp = self.srv.status(box, '(MESSAGES RECENT UIDNEXT UIDVALIDITY UNSEEN)')
if status == 'OK' : if status == 'OK' :
data = search(self.REG_SATUS,bstr(resp[self.K_HEAD])) data = search(self.REG_SATUS,bstr(resp[self.K_HEAD]))
l = split(' ',data.group(2)) l = split(' ',data.group(2))

View File

@ -156,7 +156,7 @@ def formatBytes(b, p=2):
#Uncomment one of the following alternatives #Uncomment one of the following alternatives
b /= pow(1024,p) b /= pow(1024,p)
#b /= (1 << (10 * p)) #b /= (1 << (10 * p))
return str(round(b, p))+' '+units[p] return str(round(b, 1))+' '+units[p]
def bstr(b,enc='utf-8'): def bstr(b,enc='utf-8'):
"""""" """"""