commit-gnue
[Top][All Lists]
Advanced

[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)




reply via email to

[Prev in Thread] Current Thread [Next in Thread]