|
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.
|