From: <Z3...@us...> - 2011-01-08 09:08:14
|
Revision: 330 http://spd.svn.sourceforge.net/spd/?rev=330&view=rev Author: Z3po Date: 2011-01-08 09:08:07 +0000 (Sat, 08 Jan 2011) Log Message: ----------- fixed widemode a bit, changed optionparser, changed input handling (giving --id option) Modified Paths: -------------- branches/spd-ng/src/spdCLI.py branches/spd-ng/src/spdCore.py branches/spd-ng/src/spdInterface.py Modified: branches/spd-ng/src/spdCLI.py =================================================================== --- branches/spd-ng/src/spdCLI.py 2010-12-31 14:55:52 UTC (rev 329) +++ branches/spd-ng/src/spdCLI.py 2011-01-08 09:08:07 UTC (rev 330) @@ -1,6 +1,6 @@ #!/usr/bin/python -from optparse import OptionParser +from optparse import OptionParser, OptionGroup import sys import re @@ -67,7 +67,12 @@ for key in passdict: if passdict[key][i] is None: passdict[key][i] = '' - sys.stdout.write(re.sub('\n','\n' + __space,str(passdict[key][i]).ljust(__keylength[key])) + '|') + __count = 0 + for line in str(passdict[key][i]).split('\n'): + if __count > 0: + sys.stdout.write('\n' + __space) + sys.stdout.write(line.ljust(__keylength[key]) + '|') + __count += 1 __space = __space + ''.ljust(__keylength[key]) + ' ' sys.stdout.write('\n') else: @@ -76,11 +81,11 @@ print "No Results found" # }}} - def editEntry(self,__passdict): + def editEntry(self,__passdict): # {{{ __count = len(__passdict['__ID']) for i in range(0, __count): print '---------------------------' - print 'Changing Entry: ' + str(__passdict['__ID'][i]) + '\nENTER for no changes.' + print 'Changing Entry with ID: ' + str(__passdict['__ID'][i]) + '\nENTER for no changes.' for __column in __passdict: __input = '' if __column != '__ID': @@ -90,6 +95,7 @@ if __input != '': __passdict[__column][i] = __input return __passdict + # }}} def createEntry(self,columns): # {{{ Entry = {} @@ -114,27 +120,37 @@ default=False, help = "Add an Entry") + parser.add_option( "-e", "--edit", + action = "store_true", + dest ="editEntry", + help ="Edit given Entries (IDs)") + parser.add_option( "-d", "--delete", action = "store_true", dest ="deleteEntry", default = False, - help ="Entries to delete") + help ="Delete given Entries") - parser.add_option( "-e", "--edit", - action = "store_true", - dest ="editEntry", - help ="Entries to edit (by id)") - - parser.add_option( "-i", "--delete-id", - action = "store_true", - dest ="deleteID", - default = False, - help ="ID(s) to delete") + group = OptionGroup(parser, "Input Manipulation") - #parser.add_option( "--id", - # dest ="id", - # help ="Show Password by ID") + group.add_option( "--id", + action="store_true", + dest ="byid", + default=False, + help ="Handle Input given as ID(s)") + parser.add_option_group(group) + + group = OptionGroup(parser, "Output Manipulation") + + group.add_option( "-w", "--wide", + action="store_true", + dest = "widemode", + default=False, + help = "print output in wide mode (means as a table)") + + parser.add_option_group(group) + #parser.add_option( "--add-column", # metavar="Collumn", # dest = "addcolumn", @@ -147,11 +163,6 @@ # default=False, # help = "print Password only of first match, usefull for piping (e.g. in rdesktop)") # - parser.add_option( "-w", "--wide", - action="store_true", - dest = "widemode", - default=False, - help = "print output in wide mode (means as a table)") #parser.add_option( "-l", "--local", # action="store_true", @@ -163,31 +174,33 @@ # dest = "passfile", # help = "do not use the confgured passfile but the one given here") - parser.add_option( "--add-columns", + group = OptionGroup(parser, "Columns Manipulation") + + group.add_option( "--add-columns", action="store_true", dest = "addColumn", default=False, - help = "Add Column(s)") + help = "Add given Column(s)") - parser.add_option( "--delete-columns", + group.add_option( "--delete-columns", action = "store_true", dest ="deleteColumn", default = False, - help ="Column(s) to delete") + help ="Delete Columns given") + parser.add_option_group(group) + (options, args) = parser.parse_args() if options.addEntry: return ["addEntry", args] elif options.deleteEntry: - return ["deleteEntry", args] + return ["deleteEntry", [ options.byid, args]] elif options.editEntry: return ["editEntry", args] - elif options.deleteID: - return ["deleteID", args] + elif options.deleteColumn: return ["deleteColumn", args] - elif options.addColumn: return ["addColumn", args] Modified: branches/spd-ng/src/spdCore.py =================================================================== --- branches/spd-ng/src/spdCore.py 2010-12-31 14:55:52 UTC (rev 329) +++ branches/spd-ng/src/spdCore.py 2011-01-08 09:08:07 UTC (rev 330) @@ -6,6 +6,7 @@ coreobject = spdCore.Core()''' import sqlite3 +import re class Core(object): @@ -47,7 +48,10 @@ if byid: for __id in SearchList: - query += '__ID = ' + __id + ' or ' + if re.match('\d+',__id): + query += '__ID = ' + __id + ' or ' + else: + self.__ErrorHandler('searchEntry', 'Searching for ID but no valid ID given: ' + __id) query = query[0:-3] else: @@ -91,8 +95,10 @@ # }}} def delEntry(self,ID): # {{{ - query = 'delete from '+ self.ConfigSection +' where __ID='+str(ID) - self.dbc.execute(query) + for __id in ID: + query = 'delete from '+ self.ConfigSection +' where __ID=\'' + str(__id) + '\'' + self.dbc.execute(query) + self.db.commit() # }}} @@ -101,17 +107,14 @@ for i in range(0, len(__passdict['__ID'])): for __column in __passdict: if __column != '__ID': - print __column query += __column + ' = \'' + __passdict[__column][i] + '\', ' query = query[0:-2] query += ' WHERE __ID = ' + str(__passdict['__ID'][i]) - print query self.dbc.execute(query) query = 'UPDATE ' + self.ConfigSection + ' SET ' self.db.commit() # }}} - def getColumns(self,showid=True): # {{{ query = "pragma Table_info('" + self.ConfigSection + "')" self.dbc.execute(query) @@ -165,7 +168,7 @@ DROP TABLE """ + self.ConfigSection + """_backup; """) self.db.commit() - # }}} + # }}}a # EOF # vim:foldmethod=marker:tabstop=3:autoindent:shiftwidth=3 Modified: branches/spd-ng/src/spdInterface.py =================================================================== --- branches/spd-ng/src/spdInterface.py 2010-12-31 14:55:52 UTC (rev 329) +++ branches/spd-ng/src/spdInterface.py 2011-01-08 09:08:07 UTC (rev 330) @@ -122,26 +122,18 @@ self.__client.printPasswords(passdict) # }}} - def deleteID(self,ids): # {{{ - if not ids: - self.__ErrorHandler('deleteID()','No ID to delete given') - if type(ids).__name__ != 'list': - if type(ids).__name__ == 'int': - ids = str(ids) - ids = string.split(ids) - for id in ids: - self.__core.delEntry(id) - # }}} + def deleteEntry(self, values): # {{{ + byid, searchString = values + __passdict = self.__findPasswords(searchString,byid) + + if len(__passdict) == 0: + self.__ErrorHandler('deleteEntry','No matches found') - def deleteEntry(self,searchString): # {{{ - __passdict = self.__findPasswords(searchString) - if len(__passdict) > 1: + if len(__passdict['__ID']) > 1: print str(__passdict) - elif len(__passdict) > 0: + else: print str(__passdict) self.__core.delEntry(__passdict['__ID']) - else: - self.__ErrorHandler('deleteEntry','No matches found') # }}} def editEntry(self,ids): # {{{ @@ -155,7 +147,10 @@ def deleteColumn(self,columns): # {{{ for column in columns: - self.__core.delColumn(column) + if column in self.__core.getColumns(showid=False): + self.__core.delColumn(column) + else: + self.__ErrorHandler('deleteColumn','column ' + column + ' is not part of the passwordfile') # }}} def addColumn(self,columns): # {{{ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |