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