[z3-checkins] r5475 - in z3/sqlos/trunk: . container ftests
interfaces services transaction
dreamcatcher at codespeak.net
dreamcatcher at codespeak.net
Wed Jul 7 17:52:34 MEST 2004
Author: dreamcatcher
Date: Wed Jul 7 17:52:34 2004
New Revision: 5475
Removed:
z3/sqlos/trunk/factory.py
z3/sqlos/trunk/services/servicenames.py
z3/sqlos/trunk/services/sqlfactoryservice.py
z3/sqlos/trunk/services/sqlfactoryservice.zcml
Modified:
z3/sqlos/trunk/__init__.py
z3/sqlos/trunk/attributeannotations.py
z3/sqlos/trunk/container/__init__.py
z3/sqlos/trunk/ftests/test_transaction.py
z3/sqlos/trunk/interfaces/services.py
z3/sqlos/trunk/meta.zcml
z3/sqlos/trunk/transaction/__init__.py
Log:
Get rid of sqlfactoryservice and a couple dead chickens with it.
Modified: z3/sqlos/trunk/__init__.py
==============================================================================
--- z3/sqlos/trunk/__init__.py (original)
+++ z3/sqlos/trunk/__init__.py Wed Jul 7 17:52:34 2004
@@ -14,6 +14,7 @@
from datetime import datetime, date
from zope.interface import classImplements
+from zope.app import zapi
from zope.security.checker import NamesChecker, NoProxy, defineChecker
from sqlobject.dbconnection import DBConnection, DBAPI
@@ -21,8 +22,8 @@
from sqlobject.main import SQLObject, SelectResults
from sqlobject.sqlbuilder import registerConverter, \
SQLObjectTable
-from sqlos.interfaces import IDBConnection, \
- IDBAPI, ISQLConnection, ISQLObject, ISelectResults
+from sqlos.interfaces import IDBConnection, IDBAPI, ISQLConnection
+from sqlos.interfaces import IISQLObject, ISQLObject, ISelectResults
defineChecker(SQLObjectTable, NoProxy)
@@ -53,3 +54,7 @@
return repr(value.isoformat())
registerConverter(date, DateConverter)
+
+
+def getFactory(name, context=None, default=None):
+ return zapi.queryUtility(IISQLObject, name, default=default, context=context)
Modified: z3/sqlos/trunk/attributeannotations.py
==============================================================================
--- z3/sqlos/trunk/attributeannotations.py (original)
+++ z3/sqlos/trunk/attributeannotations.py Wed Jul 7 17:52:34 2004
@@ -19,8 +19,7 @@
from zope.app.interfaces.location import ILocation
from sqlobject import *
-from sqlos.factory import SQLObjectFactory
-from zopeproducts.sfbr.interfaces.security import ISecurityRole
+from sqlos import getFactory
from zope.app.location import Location
class AnnotationProxy(object):
@@ -58,7 +57,7 @@
self.__context[name] = value
self.__parent[self.__key] = self.__context
-class AnnotationSource(SQLObjectFactory, Location):
+class AnnotationSource(Location):
def __init__(self, context):
self.context = context
@@ -69,7 +68,7 @@
self.className = 'Annotations'
def __getitem__(self, name):
- factory = self.getFactory(self.className)
+ factory = getFactory(self.className)
clause = "location = %r and key = %r" % (str(self.location),
str(name))
result = factory.select(clause = clause)
@@ -86,7 +85,7 @@
return item
def __setitem__(self, name, value):
- factory = self.getFactory(self.className)
+ factory = getFactory(self.className)
clause = "location = %r and key = %r" % (str(self.location),
str(name))
result = factory.select(clause = clause)
Modified: z3/sqlos/trunk/container/__init__.py
==============================================================================
--- z3/sqlos/trunk/container/__init__.py (original)
+++ z3/sqlos/trunk/container/__init__.py Wed Jul 7 17:52:34 2004
@@ -24,8 +24,7 @@
from sqlos.interfaces.container import ISQLObjectContainer
from sqlos.interfaces.container import ISQLObjectAdding
-from sqlos.factory import SQLObjectFactory
-from sqlos.services.servicenames import SQLObjectFactory as SQLOService
+from sqlos import getFactory
from sqlobject import *
from sqlobject.main import CreateNewSQLObject
@@ -38,41 +37,28 @@
pass
def keys(self):
- """Return a sequence-like object containing the names
- associated with the objects that appear in the folder
+ """ Return a sequence-like object containing the names
+ associated with the objects that appear in the folder
"""
- keys = []
- fs = zapi.getService(self, SQLOService)
- getFactory = fs.getFactory
- for factoryName in self.classNames:
- keys.extend([factoryName+'.'+str(p.id) for p in
- getFactory(factoryName).select()])
- return keys
+ return [k for k, v in self.items()]
def __iter__(self):
return iter(self.keys())
def values(self):
- """Return a sequence-like object containing the objects that
- appear in the folder.
+ """ Return a sequence-like object containing the objects that
+ appear in the folder.
"""
- values = []
- fs = zapi.getService(self, SQLOService)
- factories = fs.getFactories(self.classNames)
- for factory in factories:
- values.extend(factory.select())
- return values
+ return [v for k, v in self.items()]
def items(self):
"""Return a sequence-like object containing tuples of the form
- (name, object) for the objects that appear in the folder.
+ (name, object) for the objects that appear in the folder.
"""
items = []
- fs = zapi.getService(self, SQLOService)
- getFactory = fs.getFactory
for factoryName in self.classNames:
- items.extend([(factoryName+'.'+str(p.id),p) for p in
- getFactory(factoryName).select()])
+ items.extend([('%s.%s' % (factoryName, p.id), p)
+ for p in getFactory(factoryName).select()])
return items
def __getitem__(self, name):
@@ -82,17 +68,16 @@
KeyError is raised.
"""
try:
- factoryName,id = name.split('.')
+ factoryName, id = name.split('.')
id = int(id)
except ValueError:
raise KeyError(name)
- fs = zapi.getService(self, SQLOService)
- factory = fs.getFactory(factoryName)
+ factory = getFactory(factoryName)
try:
- return factory(id)
+ return factory.get(id)
except SQLObjectNotFound:
- raise KeyError(name)
+ raise KeyError, name
def get(self, name, default=None):
"""Return the named object, or the value of the default
Deleted: /z3/sqlos/trunk/factory.py
==============================================================================
--- /z3/sqlos/trunk/factory.py Wed Jul 7 17:52:34 2004
+++ (empty file)
@@ -1,49 +0,0 @@
-##############################################################################
-#
-# Copyright (c) 2004 Enfold Systems LLC. All rights reserved.
-#
-# This software is distributed under the terms of the Zope Public
-# License (ZPL) v2.1. See COPYING.txt for more information.
-#
-##############################################################################
-"""
-$Id$
-"""
-
-import warnings
-from zope.interface import implements
-from zope.app import zapi
-
-from sqlos.interfaces import IISQLObject
-from sqlos.interfaces.container import ISQLObjectContainerSchema, \
- ISQLObjectFactory
-from sqlos.connection import getConnection, connCache
-
-class SQLObjectFactory(object):
-
- implements(ISQLObjectContainerSchema, ISQLObjectFactory)
-
- classNames = []
- connectionName = None
-
- def getFactory(self, className):
- warnings.warn('The SQLObjectFactory service is deprecated '
- 'please update your code to use '
- 'zapi.queryUtility(IISQLObject, name, context=context).',
- DeprecationWarning, 2)
- klass = zapi.queryUtility(IISQLObject, className,
- default=None, context=self)
- if klass is None:
- raise KeyError, className
- return klass
-
- def getFactories(self, classNames=None):
- if classNames is None:
- classNames = self.classNames
- getFactory = self.getFactory
- factories = []
- for className in classNames:
- klass = getFactory(className)
- factories.append(klass)
- return tuple(factories)
-
Modified: z3/sqlos/trunk/ftests/test_transaction.py
==============================================================================
--- z3/sqlos/trunk/ftests/test_transaction.py (original)
+++ z3/sqlos/trunk/ftests/test_transaction.py Wed Jul 7 17:52:34 2004
@@ -19,19 +19,16 @@
from zope.app.rdb.interfaces import IZopeDatabaseAdapter
from zope.security.checker import defineChecker, NoProxy
+from sqlos import getFactory
from sqlos.container import SQLObjectContainer
from sqlos.services.classservice import registerClass
from sqlos.tests.sampleperson import SamplePerson
-from sqlos.services.servicenames import SQLObjectFactory
-from sqlos.services.sqlfactoryservice import \
- LocalSQLObjectFactoryService
-
-from zopeproducts.psycopgda.adapter import PsycopgAdapter
+from psycopgda.adapter import PsycopgAdapter
__metaclass__ = type
-DSN = 'dbi://sidnei:passthru@localhost:5432/template1'
+DSN = 'dbi://zope3:123@localhost:5432/zope3'
defineChecker(SamplePerson, NoProxy)
@@ -49,16 +46,7 @@
# Create a service manager at the approot level
mgr = setup.createServiceManager(container)
- # Create a SQLObjectFactoryService
- setup.addService(mgr, SQLObjectFactory,
- LocalSQLObjectFactoryService())
-
- # Set the SQLObjectFactory connection name
- sqlfservice = zapi.getService(container, 'SQLObjectFactory')
- sqlfservice.connectionName = 'stub'
-
container.classNames = ['SamplePerson',]
- container.connectionName = 'stub'
kwargs = {'fullname':'Sidnei da Silva',
'username':'sidnei',
'password':'test'}
@@ -71,8 +59,7 @@
return folder['sqlcontainer']
def createObject(self, container, **kwargs):
- fs = zapi.getService(container, SQLObjectFactory)
- factory = fs.getFactory(container.classNames[0])
+ factory = getFactory(container.classNames[0])
person = factory.new(**kwargs)
container['sampleperson'] = person
return container['SamplePerson.%s' % person.id]
Modified: z3/sqlos/trunk/interfaces/services.py
==============================================================================
--- z3/sqlos/trunk/interfaces/services.py (original)
+++ z3/sqlos/trunk/interfaces/services.py Wed Jul 7 17:52:34 2004
@@ -12,19 +12,6 @@
from zope.interface import Interface
from zope.schema import Choice
-class ILocalSQLObjectFactoryService(Interface):
- """ Provides an easy way to get SQLObject factory classes
-
- XXX This should go away and be replaced by zope's factory
- service implementation.
- """
-
- connectionName = Choice(
- title=(u"Connection Name"),
- description=(u"The Connection Name for the connection to be used."),
- vocabulary="Connection Names",
- required=True)
-
class IClassService(Interface):
""" A simple registry of factory classes """
Modified: z3/sqlos/trunk/meta.zcml
==============================================================================
--- z3/sqlos/trunk/meta.zcml (original)
+++ z3/sqlos/trunk/meta.zcml Wed Jul 7 17:52:34 2004
@@ -31,6 +31,4 @@
</meta:directives>
- <include package=".services" file="sqlfactoryservice.zcml" />
-
</configure>
Deleted: /z3/sqlos/trunk/services/servicenames.py
==============================================================================
--- /z3/sqlos/trunk/services/servicenames.py Wed Jul 7 17:52:34 2004
+++ (empty file)
@@ -1,12 +0,0 @@
-##############################################################################
-#
-# Copyright (c) 2004 Enfold Systems LLC. All rights reserved.
-#
-# This software is distributed under the terms of the Zope Public
-# License (ZPL) v2.1. See COPYING.txt for more information.
-#
-##############################################################################
-"""
-$Id$
-"""
-SQLObjectFactory = 'SQLObjectFactory'
Deleted: /z3/sqlos/trunk/services/sqlfactoryservice.py
==============================================================================
--- /z3/sqlos/trunk/services/sqlfactoryservice.py Wed Jul 7 17:52:34 2004
+++ (empty file)
@@ -1,29 +0,0 @@
-##############################################################################
-#
-# Copyright (c) 2004 Enfold Systems LLC. All rights reserved.
-#
-# This software is distributed under the terms of the Zope Public
-# License (ZPL) v2.1. See COPYING.txt for more information.
-#
-##############################################################################
-"""
-$Id$
-"""
-__metaclass__ = type
-
-from persistent import Persistent
-
-from zope.app.site.interfaces import ISimpleService
-from zope.interface import implements
-from zope.app.container.contained import Contained
-
-from sqlos.interfaces.services import ILocalSQLObjectFactoryService
-from sqlos.interfaces.container import ISQLObjectFactory
-from sqlos.factory import SQLObjectFactory
-
-class LocalSQLObjectFactoryService(Persistent, Contained, SQLObjectFactory):
- __doc__ = ILocalSQLObjectFactoryService.__doc__
-
- connectionName = None
-
- implements(ILocalSQLObjectFactoryService, ISimpleService)
Deleted: /z3/sqlos/trunk/services/sqlfactoryservice.zcml
==============================================================================
--- /z3/sqlos/trunk/services/sqlfactoryservice.zcml Wed Jul 7 17:52:34 2004
+++ (empty file)
@@ -1,58 +0,0 @@
-<configure xmlns="http://namespaces.zope.org/zope"
- xmlns:browser="http://namespaces.zope.org/browser">
-
- <!-- start LocalSQLObjectFactoryService -->
-
- <content
- class="sqlos.services.sqlfactoryservice.LocalSQLObjectFactoryService">
-
- <implements
- interface="sqlos.interfaces.services.ILocalSQLObjectFactoryService"
- />
-
- <factory
- title="SQLObject Factory Service"
- description="A SQLObject Factory Service"
- />
-
- <require
- permission="zope.ManageServices"
- interface="sqlos.interfaces.container.ISQLObjectFactory"
- />
-
- <require
- permission="zope.ManageServices"
- interface="sqlos.interfaces.container.ISQLObjectContainerSchema"
- />
-
- <require
- permission="zope.ManageServices"
- set_schema="sqlos.interfaces.container.ISQLObjectContainerSchema"
- />
-
- </content>
-
- <browser:addMenuItem
- class="sqlos.services.sqlfactoryservice.LocalSQLObjectFactoryService"
- title="SQLObject Factory Service"
- description="A SQLObject Factory Service"
- permission="zope.ManageServices"
- />
-
- <serviceType
- id="SQLObjectFactory"
- interface="sqlos.interfaces.services.ILocalSQLObjectFactoryService"
- />
-
- <browser:addform
- schema="sqlos.interfaces.services.ILocalSQLObjectFactoryService"
- for="zope.app.container.interfaces.IAdding"
- name="AddFactoryService"
- label="Edit Connection Settings"
- permission="zope.ManageContent"
- content_factory="sqlos.services.sqlfactoryservice.LocalSQLObjectFactoryService"
- set_after_add="connectionName"
- />
-
-</configure>
-
Modified: z3/sqlos/trunk/transaction/__init__.py
==============================================================================
--- z3/sqlos/trunk/transaction/__init__.py (original)
+++ z3/sqlos/trunk/transaction/__init__.py Wed Jul 7 17:52:34 2004
@@ -37,8 +37,14 @@
>>> SamplePerson.createTable(ifNotExists=True)
>>> person = SamplePerson(fullname='Sidnei', username='sidnei',
... password='123')
- >>> person
- <SamplePerson 1 fullname='Sidnei' username='sidnei' password='123'>
+ >>> person.id
+ 1
+ >>> person.fullname
+ 'Sidnei'
+ >>> person.username
+ 'sidnei'
+ >>> person.password
+ '123'
Create a temp method to ease testing:
More information about the z3-checkins
mailing list