[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
gnue-appserver/src geasSessionManager.py classr...
From: |
Johannes Vetter |
Subject: |
gnue-appserver/src geasSessionManager.py classr... |
Date: |
Tue, 21 Oct 2003 08:26:50 -0400 |
CVSROOT: /cvsroot/gnue
Module name: gnue-appserver
Branch:
Changes by: Johannes Vetter <address@hidden> 03/10/21 08:26:50
Modified files:
src : geasSessionManager.py
src/classrep : Base.py Class.py Module.py SchemaSupport.py
__init__.py test.py
Log message:
Finished SchemaSupport.
CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue-appserver/src/geasSessionManager.py.diff?tr1=1.16&tr2=1.17&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue-appserver/src/classrep/Base.py.diff?tr1=1.2&tr2=1.3&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue-appserver/src/classrep/Class.py.diff?tr1=1.9&tr2=1.10&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue-appserver/src/classrep/Module.py.diff?tr1=1.8&tr2=1.9&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue-appserver/src/classrep/SchemaSupport.py.diff?tr1=1.2&tr2=1.3&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue-appserver/src/classrep/__init__.py.diff?tr1=1.13&tr2=1.14&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue-appserver/src/classrep/test.py.diff?tr1=1.7&tr2=1.8&r1=text&r2=text
Patches:
Index: gnue-appserver/src/classrep/Base.py
diff -c gnue-appserver/src/classrep/Base.py:1.2
gnue-appserver/src/classrep/Base.py:1.3
*** gnue-appserver/src/classrep/Base.py:1.2 Sun Oct 19 18:08:04 2003
--- gnue-appserver/src/classrep/Base.py Tue Oct 21 08:26:50 2003
***************
*** 19,25 ****
# write to the Free Software Foundation, Inc., 59 Temple Place
# - Suite 330, Boston, MA 02111-1307, USA.
#
! # $Id: Base.py,v 1.2 2003/10/19 22:08:04 reinhard Exp $
import types
--- 19,25 ----
# write to the Free Software Foundation, Inc., 59 Temple Place
# - Suite 330, Boston, MA 02111-1307, USA.
#
! # $Id: Base.py,v 1.3 2003/10/21 12:26:50 jvetter Exp $
import types
***************
*** 42,54 ****
# Return all keys
#
---------------------------------------------------------------------------
def keys (self):
! return self._cache.keys ()
#
---------------------------------------------------------------------------
# Return all values
#
---------------------------------------------------------------------------
def values (self):
! return self._cache.values ()
#
---------------------------------------------------------------------------
# Return all key-value-pairs
--- 42,57 ----
# Return all keys
#
---------------------------------------------------------------------------
def keys (self):
! keys = self._cache.keys ()
! keys.sort ()
! return keys
#
---------------------------------------------------------------------------
# Return all values
#
---------------------------------------------------------------------------
def values (self):
! keys = self.keys ()
! return map (self._cache.get, keys)
#
---------------------------------------------------------------------------
# Return all key-value-pairs
Index: gnue-appserver/src/classrep/Class.py
diff -c gnue-appserver/src/classrep/Class.py:1.9
gnue-appserver/src/classrep/Class.py:1.10
*** gnue-appserver/src/classrep/Class.py:1.9 Sun Oct 19 18:08:04 2003
--- gnue-appserver/src/classrep/Class.py Tue Oct 21 08:26:50 2003
***************
*** 19,25 ****
# write to the Free Software Foundation, Inc., 59 Temple Place
# - Suite 330, Boston, MA 02111-1307, USA.
#
! # $Id: Class.py,v 1.9 2003/10/19 22:08:04 reinhard Exp $
import types
from Base import *
--- 19,25 ----
# write to the Free Software Foundation, Inc., 59 Temple Place
# - Suite 330, Boston, MA 02111-1307, USA.
#
! # $Id: Class.py,v 1.10 2003/10/21 12:26:50 jvetter Exp $
import types
from Base import *
***************
*** 39,44 ****
--- 39,45 ----
self.modules = moduleDict
self._module = module
+
self.definition = definition
if not definition:
***************
*** 50,58 ****
self._updateCache (list)
# if a module is specified, fetch all it's classes
- # FIXME: use a definition somehow ...
if module is not None:
! self._updateCache (self._requestData (module.gnue_id))
#
---------------------------------------------------------------------------
# Update the cache with all business objects in list
--- 51,67 ----
self._updateCache (list)
# if a module is specified, fetch all it's classes
if module is not None:
! if self.modules.classdict:
! for item in self.modules.classdict.values ():
! if item.module.fullName == module.fullName:
! self._cache [item.fullName] = item
! else:
! self._updateCache (self._requestData (module.gnue_id))
!
! # otherwise preload the cache with all available classes !
! else:
! self._updateCache (self._requestData ())
#
---------------------------------------------------------------------------
# Update the cache with all business objects in list
***************
*** 65,72 ****
#
---------------------------------------------------------------------------
# Request a list of matching business objects
#
---------------------------------------------------------------------------
! def _requestData (self, moduleId, className=None):
! cond = [["eq", ""], ["field", "gnue_module"], ["const", moduleId]]
if className:
cond += [["eq", ""], ["field", "gnue_name"], ["const", className]]
--- 74,87 ----
#
---------------------------------------------------------------------------
# Request a list of matching business objects
#
---------------------------------------------------------------------------
! def _requestData (self, moduleId = None, className = None):
! if not self.session:
! return []
!
! cond = []
! if moduleId:
! cond = [["eq", ""], ["field", "gnue_module"], ["const", moduleId]]
!
if className:
cond += [["eq", ""], ["field", "gnue_name"], ["const", className]]
Index: gnue-appserver/src/classrep/Module.py
diff -c gnue-appserver/src/classrep/Module.py:1.8
gnue-appserver/src/classrep/Module.py:1.9
*** gnue-appserver/src/classrep/Module.py:1.8 Sun Oct 19 18:08:04 2003
--- gnue-appserver/src/classrep/Module.py Tue Oct 21 08:26:50 2003
***************
*** 19,25 ****
# write to the Free Software Foundation, Inc., 59 Temple Place
# - Suite 330, Boston, MA 02111-1307, USA.
#
! # $Id: Module.py,v 1.8 2003/10/19 22:08:04 reinhard Exp $
import types
from Base import *
--- 19,25 ----
# write to the Free Software Foundation, Inc., 59 Temple Place
# - Suite 330, Boston, MA 02111-1307, USA.
#
! # $Id: Module.py,v 1.9 2003/10/21 12:26:50 jvetter Exp $
import types
from Base import *
***************
*** 38,43 ****
--- 38,44 ----
def __init__ (self, session, definition = None):
BaseDictionary.__init__ (self, session)
self.definition = definition
+ self.classdict = None
if definition:
self._updateCache ([module [1] for module in definition.modules ()])
Index: gnue-appserver/src/classrep/SchemaSupport.py
diff -c gnue-appserver/src/classrep/SchemaSupport.py:1.2
gnue-appserver/src/classrep/SchemaSupport.py:1.3
*** gnue-appserver/src/classrep/SchemaSupport.py:1.2 Wed Oct 8 10:31:40 2003
--- gnue-appserver/src/classrep/SchemaSupport.py Tue Oct 21 08:26:50 2003
***************
*** 19,25 ****
# write to the Free Software Foundation, Inc., 59 Temple Place
# - Suite 330, Boston, MA 02111-1307, USA.
#
! # $Id: SchemaSupport.py,v 1.2 2003/10/08 14:31:40 siesel Exp $
# read schema support
from gnue.common.schema import GSParser
--- 19,27 ----
# write to the Free Software Foundation, Inc., 59 Temple Place
# - Suite 330, Boston, MA 02111-1307, USA.
#
! # $Id: SchemaSupport.py,v 1.3 2003/10/21 12:26:50 jvetter Exp $
!
! from gnue.appserver.classrep import Namespace
# read schema support
from gnue.common.schema import GSParser
***************
*** 32,73 ****
SCHEMA_STORE_BOTH = 0
SCHEMA_STORE_SCHEMA = 1
SCHEMA_STORE_DATA = 2
class SchemaSupport:
def __init__(self, modules, classes):
! self._modules=modules
! self._classes=classes
#
---------------------------------------------------------------------------
# Load a Schema from a file and store it in the class repository
# Parameter: filename: name of file to load
# overwrite: if true, old class definitions will be removed
# install: if true, database tables for the class will be
created
! # TODO: a) make this code transactional, i.e. first check, if everything
can be
! # done without breaks, then execute.
# b) add global class repository locking
#
---------------------------------------------------------------------------
!
! def loadSchemaFromFile(self, filename, overwrite=0, install=0):
!
! input = openResource(filename)
!
! schema = GSParser.loadFile(input)
!
! for table in schema.findChildrenOfType('GSTable',allowAllChildren=1):
! print 'adding Table %s' % table.name
! for field in table.findChildrenOfType('GSField',allowAllChildren=1):
! print ' with field %s:' % field.name
!
! if overwrite:
! raise "Overwrite support not working yet."
!
! if install:
! # TODO: this job should be done in a quite general way,
! # to let the code be reused in reaction on manual class
! # repository changes.
! raise "Creation of Schema tables is not supported yet"
#
---------------------------------------------------------------------------
# Write a Schema to a file
--- 34,80 ----
SCHEMA_STORE_BOTH = 0
SCHEMA_STORE_SCHEMA = 1
SCHEMA_STORE_DATA = 2
+ SCHEMA_TYPES = { 'string' : 'string',
+ 'number' : 'number',
+ 'boolean' : 'boolean',
+ 'date' : 'date',
+ 'time' : 'time',
+ 'datetime': 'timestamp' }
+
class SchemaSupport:
def __init__(self, modules, classes):
! self._modules = modules
! self._classes = classes
#
---------------------------------------------------------------------------
# Load a Schema from a file and store it in the class repository
# Parameter: filename: name of file to load
# overwrite: if true, old class definitions will be removed
# install: if true, database tables for the class will be
created
! # TODO: a) make this code transactional, i.e. first check, if everything
can
! # be done without breaks, then execute.
# b) add global class repository locking
#
---------------------------------------------------------------------------
! def loadSchemaFromFile (self, filename, overwrite=0, install=0):
! input = openResource (filename)
! schema = GSParser.loadFile (input)
!
! for table in schema.findChildrenOfType ('GSTable', allowAllChildren = 1):
! print 'adding Table %s' % table.name
!
! for field in table.findChildrenOfType ('GSField', allowAllChildren = 1):
! print ' with field %s:' % field.name
!
! if overwrite:
! raise 'Overwrite support not working yet.'
!
! if install:
! # TODO: this job should be done in a quite general way,
! # to let the code be reused in reaction on manual class
! # repository changes.
! raise 'Creation of Schema tables is not supported yet'
#
---------------------------------------------------------------------------
# Write a Schema to a file
***************
*** 76,190 ****
# TODO: a) add global class repository locking
# b) add a (include system tables) parameter
#
---------------------------------------------------------------------------
!
! def writeSchemaToFile(self, filename, classlist='all tables',
type=SCHEMA_STORE_BOTH):
! schema = GSSchema()
! schema.title='Appserver Schema Dump'
! schema.author='Appserver SchemaSupport'
! schema.version='1.0'
! #schema.description=''
!
! gstables = GSTables(schema)
!
! if (classlist=='all tables'):
! # load all tables first
! tablelist=[]
! for tablename in self._classes.keys():
! tablelist.append(tablename)
! else:
! tablelist=classlist
! if (type==SCHEMA_STORE_BOTH) or (type==SCHEMA_STORE_SCHEMA):
! for tablename in tablelist:
! self.createTableDef(gstables, tablename)
!
! if (type==SCHEMA_STORE_BOTH) or (type==SCHEMA_STORE_DATA):
! gsdata = GSData(schema)
! self.createDataList(gsdata, tablelist)
! dest = open(filename,"w")
! dest.write("""<?xml version="1.0"?>
! <!-- Schema definition created by GNUe Appserver's Schema Support
! Dropped Schema includes %s -->
! """ % classlist)
!
! dest.write(schema.dumpXML())
! dest.close()
!
! def createTableDef(self, gstables, tablename):
! table=GSTable(gstables)
! table.name=tablename
! #table.description=''
!
! # add fields listing (required)
! fields=GSFields(table)
! GSConstraints(table)
! GSIndexes(table)
!
! proplist=self._classes[tablename].properties
!
! for propname in proplist.keys():
! # add one field per property
! field = GSField(fields)
! field.name=propname
! field.type=proplist[propname].gnue_type
! field.length=int(proplist[propname].gnue_length)
! field.precision=int(proplist[propname].gnue_scale)
! field.description=proplist[propname].gnue_comment
! # TODO: where should 'gnue_module' be stored?
!
! # set gnue_id to be a primary key
! if (propname=='gnue_id') and (proplist[propname].gnue_type=='id'):
! pk=GSPrimaryKey(table)
! pk.name='gnue_id_pk'
! pkf=GSPKField(pk)
! pkf.name='gnue_id'
def createDataList(self, gsdata, tablelist):
! # TODO: do we need to add information about modules too?
!
! tabledata=GSTableData(gsdata)
! tabledata.name='gnue_class_dump'
! tabledata.tablename='gnue_class'
! tablerows=GSRows(tabledata)
!
! propdata=GSTableData(gsdata)
! propdata.name='gnue_property_dump'
! propdata.tablename='gnue_property'
! proprows=GSRows(propdata)
! for tablename in tablelist:
! classdef = self._classes[tablename]
! proplist=classdef.properties
!
! # save tabledata
! row = GSRow(tablerows)
! self._buildValue(row,'gnue_id',classdef.gnue_id)
! self._buildValue(row,'gnue_module',classdef.gnue_module)
! self._buildValue(row,'gnue_name',classdef.gnue_name)
! self._buildValue(row,'gnue_comment',classdef.gnue_comment)
! for propname in proplist.keys():
! # add one field per property
! row = GSRow(proprows)
! row.name=propname
! self._buildValue(row,'gnue_id',proplist[propname].gnue_id)
!
self._buildValue(row,'gnue_module',proplist[propname].gnue_module)
! self._buildValue(row,'gnue_class',proplist[propname].gnue_class)
! self._buildValue(row,'gnue_name',proplist[propname].gnue_name)
! self._buildValue(row,'gnue_type',proplist[propname].gnue_type)
!
self._buildValue(row,'gnue_length',int(proplist[propname].gnue_length))
!
self._buildValue(row,'gnue_scale',int(proplist[propname].gnue_scale))
!
self._buildValue(row,'gnue_comment',proplist[propname].gnue_comment)
! def _buildValue(self,row,field,data):
! val = GSValue(row)
! #val.field=field
! GContent(val,"'%s'" % data)
#
=============================================================================
# test program
--- 83,228 ----
# TODO: a) add global class repository locking
# b) add a (include system tables) parameter
#
---------------------------------------------------------------------------
! def writeSchemaToFile (self, filename, classlist = None,
! type = SCHEMA_STORE_BOTH):
! schema = GSSchema()
! schema.title = 'Appserver Schema Dump'
! schema.author = 'Appserver SchemaSupport'
! schema.version = '1.0'
! # schema.description=''
! gstables = GSTables (schema)
!
! # use either the given classlist or a list of all classes available
! tablelist = classlist or self._classes.keys ()
!
! # create the schema definition
! if (type == SCHEMA_STORE_BOTH) or (type == SCHEMA_STORE_SCHEMA):
! for tablename in tablelist:
! self.createTableDef (gstables, tablename)
! # optionally create the datalist
! if (type == SCHEMA_STORE_BOTH) or (type == SCHEMA_STORE_DATA):
! gsdata = GSData (schema)
! self.createDataList (gsdata, tablelist)
! # create the .gsd-file
! dest = open (filename, 'w')
! dest.write ("""<?xml version="1.0"?>\n""" +
! """<!-- Schema definition created by GNUe Appserver's Schema
Support\n"""+
! """Dropped Schema includes %s -->\n""" % tablelist)
+ dest.write (schema.dumpXML ())
+ dest.close ()
+
+ #
---------------------------------------------------------------------------
+ # Create the tabledefinition for tablename
+ #
---------------------------------------------------------------------------
+ def createTableDef (self, gstables, tablename):
+ table = GSTable (gstables)
+ table.name = tablename
+ #table.description = ''
+
+ # add fields listing (required)
+ fields = GSFields (table)
+ GSConstraints (table)
+ GSIndexes (table)
+
+ for property in self._classes [tablename].properties.values ():
+ # add one field per property
+ field = GSField (fields)
+ field.name = property.fullName
+ field.description = property.gnue_comment
+
+ # use valid types as is
+ if property.gnue_type in SCHEMA_TYPES.keys ():
+ field.type = SCHEMA_TYPES [property.gnue_type]
+ field.length = int (property.gnue_length)
+ field.precision = int (property.gnue_scale)
+ # everything else should be a reference
+ else:
+ field.type = 'string'
+ field.length = 32
+ field.precision = 0
+
+ # TODO: where should 'gnue_module' be stored?
+
+ # set gnue_id to be a primary key
+ if (property.fullName == 'gnue_id') and (property.gnue_type == 'id'):
+ pk = GSPrimaryKey (table)
+ pk.name = 'gnue_id_pk_' + property.klass.fullName
+
+ pkf = GSPKField(pk)
+ pkf.name = 'gnue_id'
+ #
---------------------------------------------------------------------------
+ # Dump all tabledata from a given tablelist
+ #
---------------------------------------------------------------------------
def createDataList(self, gsdata, tablelist):
! # get a unique list of all modules enlisted in tablelist
! modlist = {}
! for table in tablelist:
! (module, classname) = Namespace.splitName (table)
! modlist [module] = 1
!
! # dump all modules enlisted in tablelist
! moddata = GSTableData (gsdata)
! moddata.name = 'gnue_module_dump'
! moddata.tablename = 'gnue_module'
! modrows = GSRows (moddata)
!
! for module in modlist.keys ():
! moddef = self._modules [module]
!
! row = GSRow (modrows)
! # we use the same sort order here as BaseDictionary.values ()
! self._buildValue (row, 'gnue_comment', moddef.gnue_comment)
! self._buildValue (row, 'gnue_id' , moddef.gnue_id)
! self._buildValue (row, 'gnue_name' , moddef.gnue_name)
!
! # dump all classes enlisted in tablelist
! tabledata = GSTableData (gsdata)
! tabledata.name = 'gnue_class_dump'
! tabledata.tablename = 'gnue_class'
! tablerows = GSRows (tabledata)
!
! # and all their properties
! propdata = GSTableData (gsdata)
! propdata.name = 'gnue_property_dump'
! propdata.tablename = 'gnue_property'
! proprows = GSRows (propdata)
! for tablename in tablelist:
! classdef = self._classes [tablename]
! # save tabledata
! row = GSRow (tablerows)
! self._buildValue (row, 'gnue_comment', classdef.gnue_comment)
! self._buildValue (row, 'gnue_id' , classdef.gnue_id)
! self._buildValue (row, 'gnue_module' , classdef.gnue_module)
! self._buildValue (row, 'gnue_name' , classdef.gnue_name)
!
! for property in classdef.properties.values ():
! # add one field per property
! row = GSRow (proprows)
! self._buildValue (row, 'gnue_class' , property.gnue_class)
! self._buildValue (row, 'gnue_comment', property.gnue_comment)
! self._buildValue (row, 'gnue_id' , property.gnue_id)
! self._buildValue (row, 'gnue_length', int (property.gnue_length))
! self._buildValue (row, 'gnue_module', property.gnue_module)
! self._buildValue (row, 'gnue_name' , property.gnue_name)
! self._buildValue (row, 'gnue_scale' , int (property.gnue_scale))
! self._buildValue (row, 'gnue_type' , property.gnue_type)
!
! #
---------------------------------------------------------------------------
! # Create a new field in a row and populate it with a value
! #
---------------------------------------------------------------------------
! def _buildValue(self, row, field, data):
! val = GSValue (row)
! GContent (val, "'%s'" % data)
#
=============================================================================
# test program
***************
*** 197,206 ****
sm = app.getSessionManager ()
! gsdSupp = SchemaSupport(sm._modules,sm._classes)
! gsdSupp.writeSchemaToFile('AS_schema.gsd')
! gsdSupp.writeSchemaToFile('AS_schema2.gsd',['address_person'])
! gsdSupp.loadSchemaFromFile('AS_schema.gsd',overwrite=0)
--- 235,244 ----
sm = app.getSessionManager ()
! gsdSupp = SchemaSupport (sm.modules, sm.classes)
! gsdSupp.writeSchemaToFile ('AS_schema.gsd')
! gsdSupp.writeSchemaToFile ('AS_schema2.gsd', ['address_person'])
! # gsdSupp.loadSchemaFromFile('AS_schema.gsd',overwrite=0)
Index: gnue-appserver/src/classrep/__init__.py
diff -c gnue-appserver/src/classrep/__init__.py:1.13
gnue-appserver/src/classrep/__init__.py:1.14
*** gnue-appserver/src/classrep/__init__.py:1.13 Mon Sep 29 18:28:59 2003
--- gnue-appserver/src/classrep/__init__.py Tue Oct 21 08:26:50 2003
***************
*** 19,25 ****
# write to the Free Software Foundation, Inc., 59 Temple Place
# - Suite 330, Boston, MA 02111-1307, USA.
#
! # $Id: __init__.py,v 1.13 2003/09/29 22:28:59 reinhard Exp $
import os, sys
--- 19,25 ----
# write to the Free Software Foundation, Inc., 59 Temple Place
# - Suite 330, Boston, MA 02111-1307, USA.
#
! # $Id: __init__.py,v 1.14 2003/10/21 12:26:50 jvetter Exp $
import os, sys
***************
*** 47,59 ****
basedir = os.path.dirname(__file__)
if not os.path.isfile (os.path.join (basedir, "repository.ini")):
basedir = os.path.join (paths.data, "share", "gnue", "appserver")
! modules = ModuleDict (None, RepositoryDefinition (os.path.join (basedir,
!
"repository.ini")))
classes = ClassDict (None, modules)
# Now, we can access the database to load the real repository
session = Session.InternalSession (server)
new_modules = ModuleDict (session)
! new_classes = ClassDict (session, new_modules, module = new_modules
["gnue"])
modules = new_modules
classes = new_classes
return
--- 47,62 ----
basedir = os.path.dirname(__file__)
if not os.path.isfile (os.path.join (basedir, "repository.ini")):
basedir = os.path.join (paths.data, "share", "gnue", "appserver")
!
! defaultRepository = os.path.join (basedir, "repository.ini")
! modules = ModuleDict (None, RepositoryDefinition (defaultRepository))
classes = ClassDict (None, modules)
+
# Now, we can access the database to load the real repository
session = Session.InternalSession (server)
new_modules = ModuleDict (session)
! new_classes = ClassDict (session, new_modules)
modules = new_modules
classes = new_classes
+ modules.classdict = classes
return
Index: gnue-appserver/src/classrep/test.py
diff -c gnue-appserver/src/classrep/test.py:1.7
gnue-appserver/src/classrep/test.py:1.8
*** gnue-appserver/src/classrep/test.py:1.7 Mon Sep 22 07:53:02 2003
--- gnue-appserver/src/classrep/test.py Tue Oct 21 08:26:50 2003
***************
*** 19,59 ****
# write to the Free Software Foundation, Inc., 59 Temple Place
# - Suite 330, Boston, MA 02111-1307, USA.
#
! # $Id: test.py,v 1.7 2003/09/22 11:53:02 jvetter Exp $
#
from gnue.appserver.language import App
from gnue.appserver import classrep
! app = App.App ()
! # sess = app.newSession ("hacker", "secret")
! # mod = ModuleDict (sess)
print '\nModule "address":'
! m = classrep.modules ["address"]
print "%s: %s\n" % (m.gnue_name, m.gnue_comment)
print "Classes in 'address':"
for k in m.classes.keys ():
print k
! print "Number of modules: %d\n" % len (classrep.modules)
print "All modules via keys ():"
! for k in classrep.modules.keys ():
! m = classrep.modules [k]
print k, ":", m.gnue_comment
print
print "All modules via values ():"
! for m in classrep.modules.values ():
print m.gnue_name + ": " + m.gnue_comment
print
print "All modules via items ():"
! for i in classrep.modules.items ():
print i
print
! print 'Is there a module "address": %d' % classrep.modules.has_key ("address")
! print 'Is there a module "foo": %d' % classrep.modules.has_key ("foo")
--- 19,63 ----
# write to the Free Software Foundation, Inc., 59 Temple Place
# - Suite 330, Boston, MA 02111-1307, USA.
#
! # $Id: test.py,v 1.8 2003/10/21 12:26:50 jvetter Exp $
#
from gnue.appserver.language import App
from gnue.appserver import classrep
! from gnue.appserver.test import testApp
!
! app = testApp ()
! sm = app.getSessionManager ()
!
! print "Already loaded modules:", sm.modules.keys ()
! print "Already loaded classes:", sm.classes.keys ()
print '\nModule "address":'
! m = sm.modules ["address"]
print "%s: %s\n" % (m.gnue_name, m.gnue_comment)
print "Classes in 'address':"
for k in m.classes.keys ():
print k
! print "Number of modules: %d\n" % len (sm.modules)
print "All modules via keys ():"
! for k in sm.modules.keys ():
! m = sm.modules [k]
print k, ":", m.gnue_comment
print
print "All modules via values ():"
! for m in sm.modules.values ():
print m.gnue_name + ": " + m.gnue_comment
print
print "All modules via items ():"
! for i in sm.modules.items ():
print i
print
! print 'Is there a module "address": %d' % sm.modules.has_key ("address")
! print 'Is there a module "foo": %d' % sm.modules.has_key ("foo")
Index: gnue-appserver/src/geasSessionManager.py
diff -c gnue-appserver/src/geasSessionManager.py:1.16
gnue-appserver/src/geasSessionManager.py:1.17
*** gnue-appserver/src/geasSessionManager.py:1.16 Wed Sep 10 16:31:39 2003
--- gnue-appserver/src/geasSessionManager.py Tue Oct 21 08:26:49 2003
***************
*** 19,25 ****
#
# Copyright 2001-2003 Free Software Foundation
#
! # $Id: geasSessionManager.py,v 1.16 2003/09/10 20:31:39 reinhard Exp $
import geasSession
import geasAuthentication
--- 19,25 ----
#
# Copyright 2001-2003 Free Software Foundation
#
! # $Id: geasSessionManager.py,v 1.17 2003/10/21 12:26:49 jvetter Exp $
import geasSession
import geasAuthentication
***************
*** 48,53 ****
--- 48,55 ----
self._sessions = {}
self._buildInternalSession ()
classrep.init (self)
+ self.modules = classrep.modules
+ self.classes = classrep.classes
# TODO: load default authagent depending on config setting
self._authAdapter = geasAuthentication.geasDBAuthAgent
(self._internalSession)
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- gnue-appserver/src geasSessionManager.py classr...,
Johannes Vetter <=