From: <Z3...@us...> - 2010-12-31 14:55:58
|
Revision: 329 http://spd.svn.sourceforge.net/spd/?rev=329&view=rev Author: Z3po Date: 2010-12-31 14:55:52 +0000 (Fri, 31 Dec 2010) Log Message: ----------- Added function to edit Entries Modified Paths: -------------- branches/spd-ng/src/spdCLI.py branches/spd-ng/src/spdCore.py branches/spd-ng/src/spdInterface.py branches/spd-ng/src/test.db Modified: branches/spd-ng/src/spdCLI.py =================================================================== --- branches/spd-ng/src/spdCLI.py 2010-12-29 22:07:08 UTC (rev 328) +++ branches/spd-ng/src/spdCLI.py 2010-12-31 14:55:52 UTC (rev 329) @@ -9,6 +9,7 @@ Resistance is futile""" __outmode = None + __version = '0.3-alpha' def __ErrorHandler(self,function,message): # {{{ """ErrorHandler of the Client Module. @@ -75,6 +76,21 @@ print "No Results found" # }}} + 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.' + for __column in __passdict: + __input = '' + if __column != '__ID': + if __passdict[__column][i] is None: + __passdict[__column][i] = '' + __input = raw_input(__column + ' (' + str(__passdict[__column][i]) + '): ') + if __input != '': + __passdict[__column][i] = __input + return __passdict + def createEntry(self,columns): # {{{ Entry = {} print "Adding a new Entry to our passfile" @@ -87,21 +103,28 @@ def parseArgs(self,version): # {{{ parser = OptionParser( "%prog [Options] [Keywords]", description = "SPD - Simple Password Displayer - CLI", - version = "SPD " + version, + version = """spdCore """ + version + + """\nspdCLI """ + self.__version, epilog = """With no parameters it will print out everything! Please report Bugs or Feature Request at http://spd.sourceforge.net""") + parser.add_option( "-a", "--add", + action="store_true", + dest = "addEntry", + default=False, + help = "Add an Entry") + parser.add_option( "-d", "--delete", action = "store_true", - dest ="delete", + dest ="deleteEntry", default = False, help ="Entries to delete") - #parser.add_option( "-e", "--edit", - # metavar="ID", - # dest ="edit", - # help ="ID to edit") - # + 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", @@ -111,12 +134,6 @@ #parser.add_option( "--id", # dest ="id", # help ="Show Password by ID") - # - parser.add_option( "-a", "--add", - action="store_true", - dest = "add", - default=False, - help = "Add an Entry") #parser.add_option( "--add-column", # metavar="Collumn", @@ -160,10 +177,12 @@ (options, args) = parser.parse_args() - if options.add: + if options.addEntry: return ["addEntry", args] - elif options.delete: + elif options.deleteEntry: return ["deleteEntry", args] + elif options.editEntry: + return ["editEntry", args] elif options.deleteID: return ["deleteID", args] elif options.deleteColumn: Modified: branches/spd-ng/src/spdCore.py =================================================================== --- branches/spd-ng/src/spdCore.py 2010-12-29 22:07:08 UTC (rev 328) +++ branches/spd-ng/src/spdCore.py 2010-12-31 14:55:52 UTC (rev 329) @@ -6,7 +6,6 @@ coreobject = spdCore.Core()''' import sqlite3 -import atexit class Core(object): @@ -42,21 +41,27 @@ # }}} - def searchEntry(self,SearchList): # {{{ + def searchEntry(self,SearchList,byid=False): # {{{ query = 'select * from ' + self.ConfigSection + ' where ' - # Build the where-clause - for pattern in SearchList: - query += '(' + if byid: + for __id in SearchList: + query += '__ID = ' + __id + ' or ' + query = query[0:-3] - for i in self.getColumns(): - if i != self.PasswordColumn: - query += i + " like '%" + pattern + "%' or " + else: + # Build the where-clause + for pattern in SearchList: + query += '(' - query = query[0:-4] + ') and ' - query = query[0:-5] + for i in self.getColumns(): + if i != self.PasswordColumn: + query += i + " like '%" + pattern + "%' or " + query = query[0:-4] + ') and ' + query = query[0:-5] + # Execute the query self.dbc.execute(query) @@ -91,6 +96,22 @@ self.db.commit() # }}} + def editEntry(self,__passdict): # {{{ + query = 'UPDATE ' + self.ConfigSection + ' SET ' + 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) @@ -106,7 +127,7 @@ def addColumn(self,columnname): # {{{ if columnname in self.getColumns(showid=True): - self.__ErrorHandler('addColumn','Column already exists') + self.__ErrorHandler('addColumn','Column \"' + columnname + '\" already exists') query='alter table ' + self.ConfigSection + ' add column ' + columnname + ' text ' self.db.execute(query) self.db.commit() Modified: branches/spd-ng/src/spdInterface.py =================================================================== --- branches/spd-ng/src/spdInterface.py 2010-12-29 22:07:08 UTC (rev 328) +++ branches/spd-ng/src/spdInterface.py 2010-12-31 14:55:52 UTC (rev 329) @@ -7,8 +7,11 @@ Interface.main() or force a clientmode with: - Interface = spdInterface.Interface('CLI')''' + Interface = spdInterface.Interface('CLI') +if building your own interface, name it spd"whatever" and pass "whatever" +to the Interface Class. The Module must be in pythons include path.''' + from sys import exit import os import string @@ -97,7 +100,7 @@ 'clientmode' : clientmode }) # }}} - def __findPasswords(self,searchString): # {{{ + def __findPasswords(self,searchString,byid=False): # {{{ """Find the passwords by searchlist/searchstring handed. print the results in CLIENTMODE. # searchlist: optional string or list of keywords to search for.""" @@ -109,7 +112,7 @@ if len(searchlist) == 0: searchlist = ['%',] - passdict = self.__core.searchEntry(searchlist) + passdict = self.__core.searchEntry(searchlist,byid) return passdict # }}} @@ -141,6 +144,15 @@ self.__ErrorHandler('deleteEntry','No matches found') # }}} + def editEntry(self,ids): # {{{ + __passdict = self.__findPasswords(ids,byid=True) + if len(__passdict) > 0: + __newpassdict = self.__client.editEntry(__passdict) + self.__core.editEntry(__newpassdict) + else: + self.__ErrorHandler('editEntry','no matches for ' + str(ids) + 'found') + # }}} + def deleteColumn(self,columns): # {{{ for column in columns: self.__core.delColumn(column) Modified: branches/spd-ng/src/test.db =================================================================== (Binary files differ) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |