From: <jda...@us...> - 2011-10-23 14:25:41
|
Revision: 583 http://pyscard.svn.sourceforge.net/pyscard/?rev=583&view=rev Author: jdaussel Date: 2011-10-23 14:25:35 +0000 (Sun, 23 Oct 2011) Log Message: ----------- Fixed readergroups() that failed to return list of reader groups Modified Paths: -------------- trunk/pyscard/src/smartcard/System.py trunk/pyscard/src/smartcard/pcsc/PCSCReaderGroups.py trunk/pyscard/src/smartcard/reader/ReaderGroups.py Modified: trunk/pyscard/src/smartcard/System.py =================================================================== --- trunk/pyscard/src/smartcard/System.py 2011-10-22 18:21:25 UTC (rev 582) +++ trunk/pyscard/src/smartcard/System.py 2011-10-23 14:25:35 UTC (rev 583) @@ -44,7 +44,7 @@ def readergroups(): """Returns the list of reader groups.""" - return smartcard.pcsc.PCSCReaderGroups.PCSCReaderGroups() + return smartcard.pcsc.PCSCReaderGroups.PCSCReaderGroups().instance # for legacy only Modified: trunk/pyscard/src/smartcard/pcsc/PCSCReaderGroups.py =================================================================== --- trunk/pyscard/src/smartcard/pcsc/PCSCReaderGroups.py 2011-10-22 18:21:25 UTC (rev 582) +++ trunk/pyscard/src/smartcard/pcsc/PCSCReaderGroups.py 2011-10-23 14:25:35 UTC (rev 583) @@ -40,11 +40,7 @@ self.unremovablegroups = ['SCard$DefaultReaders'] def getreadergroups(self): - """ Returns the list of smartcard reader groups. - - import smartcard - print smartcard.reader_groups() - """ + """ Returns the list of smartcard reader groups.""" innerreadergroups.getreadergroups(self) hresult, hcontext = SCardEstablishContext(SCARD_SCOPE_USER) @@ -61,8 +57,6 @@ def addreadergroup(self, newgroup): """Add a reader group""" - innerreadergroups.addreadergroup(self, newgroup) - hresult, hcontext = SCardEstablishContext(SCARD_SCOPE_USER) if 0 != hresult: raise error( @@ -74,6 +68,9 @@ raise error( 'Unable to introduce reader group: ' + \ SCardGetErrorMessage(hresult)) + else: + innerreadergroups.addreadergroup(self, newgroup) + finally: hresult = SCardReleaseContext(hcontext) if 0 != hresult: @@ -84,8 +81,6 @@ def removereadergroup(self, group): """Remove a reader group""" - innerreadergroups.removereadergroup(self, group) - hresult, hcontext = SCardEstablishContext(SCARD_SCOPE_USER) if 0 != hresult: raise error( @@ -97,6 +92,9 @@ raise error( 'Unable to forget reader group: ' + \ SCardGetErrorMessage(hresult)) + else: + innerreadergroups.removereadergroup(self, group) + finally: hresult = SCardReleaseContext(hcontext) if 0 != hresult: @@ -108,20 +106,10 @@ class PCSCReaderGroups(readergroups): """PCSC readers groups.""" - """The single instance of __readergroups""" - instance = None - - """Constructor: create a single instance of __readergroups on first call""" - def __init__(self, initlist=None): - if None == PCSCReaderGroups.instance: - PCSCReaderGroups.instance = pcscinnerreadergroups(initlist) + """Create a single instance of pcscinnerreadergroups on first call""" + self.innerclazz = pcscinnerreadergroups + readergroups.__init__(self, initlist) - """All operators redirected to inner class.""" - - def __getattr__(self, name): - return getattr(self.instance, name) - - if __name__ == '__main__': print PCSCReaderGroups() Modified: trunk/pyscard/src/smartcard/reader/ReaderGroups.py =================================================================== --- trunk/pyscard/src/smartcard/reader/ReaderGroups.py 2011-10-22 18:21:25 UTC (rev 582) +++ trunk/pyscard/src/smartcard/reader/ReaderGroups.py 2011-10-23 14:25:35 UTC (rev 583) @@ -64,6 +64,12 @@ """Called when a reader group is added.""" self.removereadergroup(item) + def __iter__(self): + return ulist.__iter__(self) + + def next(self): + return ulist.__next__(self) + # # abstract methods implemented in subclasses # @@ -76,11 +82,13 @@ """Add a reader group""" if not isinstance(newgroup, type("")): raise BadReaderGroupException + self += newgroup def removereadergroup(self, group): """Remove a reader group""" if not isinstance(group, type("")): raise BadReaderGroupException + self.remove(group) def addreadertogroup(self, readername, groupname): """Add a reader to a reader group""" @@ -96,12 +104,12 @@ """The single instance of __readergroups""" instance = None + innerclazz = innerreadergroups - """Constructor: create a single instance of __readergroups on first call""" - def __init__(self, initlist=None): + """Create a single instance of innerreadergroups on first call""" if None == readergroups.instance: - readergroups.instance = innerreadergroups(initlist) + readergroups.instance = self.innerclazz(initlist) """All operators redirected to inner class.""" This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |