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