Do not user generator functions for account get*

darcs-hash:20070819134318-86b55-c04fb63b752b76b98bc7990c300a18409f07f6d7.gz
This commit is contained in:
David Rousselie
2007-08-19 15:43:18 +02:00
parent 08cb317257
commit c79b80c22d
8 changed files with 22 additions and 36 deletions

View File

@@ -868,7 +868,7 @@ class AccountManager(object):
resource = "" resource = ""
model.db_connect() model.db_connect()
accounts = account.get_accounts(bare_from_jid, account_class) accounts = account.get_accounts(bare_from_jid, account_class)
if accounts: if accounts.count() > 0:
for _account in accounts: for _account in accounts:
yield (_account, resource, account_type) yield (_account, resource, account_type)
model.db_disconnect() model.db_disconnect()

View File

@@ -6,13 +6,13 @@ import unittest
from jcl.jabber.tests import component, feeder, command, message, presence from jcl.jabber.tests import component, feeder, command, message, presence
def suite(): def suite():
suite = unittest.TestSuite() test_suite = unittest.TestSuite()
suite.addTest(component.suite()) test_suite.addTest(component.suite())
suite.addTest(feeder.suite()) test_suite.addTest(feeder.suite())
suite.addTest(command.suite()) test_suite.addTest(command.suite())
suite.addTest(message.suite()) test_suite.addTest(message.suite())
suite.addTest(presence.suite()) test_suite.addTest(presence.suite())
return suite return test_suite
if __name__ == '__main__': if __name__ == '__main__':
unittest.main(defaultTest='suite') unittest.main(defaultTest='suite')

View File

@@ -64,7 +64,6 @@ class JCLCommandManager_TestCase(JCLTestCase):
Example2Account, LegacyJID, Example2Account, LegacyJID,
User]) User])
self.config_file = tempfile.mktemp(".conf", "jcltest", "/tmp") self.config_file = tempfile.mktemp(".conf", "jcltest", "/tmp")
print str(self.config_file)
self.config = ConfigParser() self.config = ConfigParser()
self.config.read(self.config_file) self.config.read(self.config_file)
self.comp = JCLComponent("jcl.test.com", self.comp = JCLComponent("jcl.test.com",

View File

@@ -6,7 +6,6 @@ from sqlobject.dbconnection import connectionForURI
import jcl.model import jcl.model
db_connected = False
db_connection_str = "" db_connection_str = ""
# create a hub to attach a per thread connection # create a hub to attach a per thread connection

View File

@@ -80,9 +80,7 @@ def get_all_users(user_class=User, limit=None, filter=None,
model.db_connect() model.db_connect()
users = user_class.select(clause=filter, limit=limit, users = user_class.select(clause=filter, limit=limit,
distinct=distinct) distinct=distinct)
for user in users: return users
yield user
model.db_disconnect()
class Account(InheritableSQLObject): class Account(InheritableSQLObject):
"""Base Account class""" """Base Account class"""
@@ -183,7 +181,6 @@ def get_account(bare_user_jid, name, account_class=Account):
return result return result
def get_accounts(bare_user_jid, account_class=Account, filter=None): def get_accounts(bare_user_jid, account_class=Account, filter=None):
model.db_connect()
if filter is not None: if filter is not None:
filter = AND(AND(Account.q.userID == User.q.id, filter = AND(AND(Account.q.userID == User.q.id,
User.q.jid == unicode(bare_user_jid)), User.q.jid == unicode(bare_user_jid)),
@@ -192,26 +189,18 @@ def get_accounts(bare_user_jid, account_class=Account, filter=None):
filter = AND(Account.q.userID == User.q.id, filter = AND(Account.q.userID == User.q.id,
User.q.jid == unicode(bare_user_jid)) User.q.jid == unicode(bare_user_jid))
accounts = account_class.select(filter) accounts = account_class.select(filter)
if accounts.count() == 0: return accounts
model.db_disconnect()
return
for _account in accounts:
yield _account
model.db_disconnect()
def get_all_accounts(account_class=Account, filter=None, limit=None): def get_all_accounts(account_class=Account, filter=None, limit=None):
model.db_connect() model.db_connect()
accounts = account_class.select(clause=filter, limit=limit) accounts = account_class.select(clause=filter, limit=limit)
for _account in accounts: return accounts
yield _account
model.db_disconnect()
def get_accounts_count(bare_user_jid, account_class=Account): def get_accounts_count(bare_user_jid, account_class=Account):
model.db_connect() model.db_connect()
accounts_count = account_class.select(\ accounts_count = account_class.select(\
AND(Account.q.userID == User.q.id, AND(Account.q.userID == User.q.id,
User.q.jid == unicode(bare_user_jid))).count() User.q.jid == unicode(bare_user_jid))).count()
model.db_disconnect()
return accounts_count return accounts_count
def get_all_accounts_count(account_class=Account, filter=None): def get_all_accounts_count(account_class=Account, filter=None):
@@ -220,7 +209,6 @@ def get_all_accounts_count(account_class=Account, filter=None):
accounts_count = account_class.select().count() accounts_count = account_class.select().count()
else: else:
accounts_count = account_class.select(filter).count() accounts_count = account_class.select(filter).count()
model.db_disconnect()
return accounts_count return accounts_count
class PresenceAccount(Account): class PresenceAccount(Account):
@@ -354,9 +342,7 @@ def get_legacy_jids(bare_to_jid):
AND(AND(LegacyJID.q.accountID == Account.q.id, AND(AND(LegacyJID.q.accountID == Account.q.id,
Account.q.userID == User.q.id), Account.q.userID == User.q.id),
User.q.jid == bare_to_jid)) User.q.jid == bare_to_jid))
for legacy_jid in legacy_jids: return legacy_jids
yield legacy_jid
model.db_disconnect()
class LegacyJID(InheritableSQLObject): class LegacyJID(InheritableSQLObject):
_connection = model.hub _connection = model.hub

View File

@@ -273,9 +273,9 @@ class Account_TestCase(InheritableAccount_TestCase):
model.db_disconnect() model.db_disconnect()
class PresenceAccount_TestCase(InheritableAccount_TestCase): class PresenceAccount_TestCase(InheritableAccount_TestCase):
def setUp(self): def setUp(self, tables=[]):
JCLTestCase.setUp(self, tables=[User, Account, PresenceAccount, JCLTestCase.setUp(self, tables=[User, Account, PresenceAccount,
PresenceAccountExample]) PresenceAccountExample] + tables)
model.db_connect() model.db_connect()
self.account = PresenceAccountExample(\ self.account = PresenceAccountExample(\
user=User(jid="test1@test.com"), user=User(jid="test1@test.com"),

View File

@@ -26,12 +26,10 @@ import sys
from ConfigParser import ConfigParser from ConfigParser import ConfigParser
from getopt import gnu_getopt from getopt import gnu_getopt
from sqlobject import *
from jcl.lang import Lang from jcl.lang import Lang
from jcl.jabber.component import JCLComponent from jcl.jabber.component import JCLComponent
import jcl.model as model import jcl.model as model
from jcl.model.account import Account, PresenceAccount from jcl.model.account import Account, PresenceAccount, User, LegacyJID
class JCLRunner(object): class JCLRunner(object):
def __init__(self, component_name, component_version): def __init__(self, component_name, component_version):
@@ -42,7 +40,7 @@ class JCLRunner(object):
""" """
self.component_name = component_name self.component_name = component_name
self.component_version = component_version self.component_version = component_version
self.config_file = "jmc.conf" self.config_file = "jcl.conf"
self.server = "localhost" self.server = "localhost"
self.port = 5347 self.port = 5347
self.secret = "secret" self.secret = "secret"
@@ -179,6 +177,8 @@ class JCLRunner(object):
def setup_db(self): def setup_db(self):
Account.createTable(ifNotExists=True) Account.createTable(ifNotExists=True)
PresenceAccount.createTable(ifNotExists=True) PresenceAccount.createTable(ifNotExists=True)
User.createTable(ifNotExists=True)
LegacyJID.createTable(ifNotExists=True)
def setup_pidfile(self): def setup_pidfile(self):
pidfile = open(self.pid_file, "w") pidfile = open(self.pid_file, "w")

View File

@@ -31,7 +31,7 @@ import jcl
from jcl.runner import JCLRunner from jcl.runner import JCLRunner
import jcl.model as model import jcl.model as model
from jcl.model.account import Account, PresenceAccount from jcl.model.account import Account, PresenceAccount, User, LegacyJID
if sys.platform == "win32": if sys.platform == "win32":
DB_DIR = "/c|/temp/" DB_DIR = "/c|/temp/"
@@ -48,7 +48,7 @@ class JCLRunner_TestCase(unittest.TestCase):
def test_configure_default(self): def test_configure_default(self):
self.runner.configure() self.runner.configure()
self.assertEquals(self.runner.config_file, "jmc.conf") self.assertEquals(self.runner.config_file, "jcl.conf")
self.assertEquals(self.runner.server, "localhost") self.assertEquals(self.runner.server, "localhost")
self.assertEquals(self.runner.port, 5347) self.assertEquals(self.runner.port, 5347)
self.assertEquals(self.runner.secret, "secret") self.assertEquals(self.runner.secret, "secret")
@@ -131,6 +131,8 @@ class JCLRunner_TestCase(unittest.TestCase):
# dropTable should succeed because tables should exist # dropTable should succeed because tables should exist
Account.dropTable() Account.dropTable()
PresenceAccount.dropTable() PresenceAccount.dropTable()
User.dropTable()
LegacyJID.dropTable()
model.db_disconnect() model.db_disconnect()
os.unlink(db_path) os.unlink(db_path)
self.assertFalse(os.access("/tmp/jcl.pid", os.F_OK)) self.assertFalse(os.access("/tmp/jcl.pid", os.F_OK))