commit-gnue
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

r6246 - in trunk/gnue-appserver/src: . classrep language


From: johannes
Subject: r6246 - in trunk/gnue-appserver/src: . classrep language
Date: Fri, 3 Sep 2004 13:39:44 -0500 (CDT)

Author: johannes
Date: 2004-09-03 13:39:42 -0500 (Fri, 03 Sep 2004)
New Revision: 6246

Modified:
   trunk/gnue-appserver/src/classrep/__init__.py
   trunk/gnue-appserver/src/geasInstance.py
   trunk/gnue-appserver/src/geasSession.py
   trunk/gnue-appserver/src/geasSessionManager.py
   trunk/gnue-appserver/src/language/App.py
   trunk/gnue-appserver/src/language/Session.py
Log:
First shot of gnue_message support


Modified: trunk/gnue-appserver/src/classrep/__init__.py
===================================================================
--- trunk/gnue-appserver/src/classrep/__init__.py       2004-09-03 08:15:08 UTC 
(rev 6245)
+++ trunk/gnue-appserver/src/classrep/__init__.py       2004-09-03 18:39:42 UTC 
(rev 6246)
@@ -30,6 +30,7 @@
 from gnue import paths
 from gnue import appserver
 from gnue.appserver.language import Session
+from gnue.common.apps import i18n
 
 class Error (appserver.Error):
   pass

Modified: trunk/gnue-appserver/src/geasInstance.py
===================================================================
--- trunk/gnue-appserver/src/geasInstance.py    2004-09-03 08:15:08 UTC (rev 
6245)
+++ trunk/gnue-appserver/src/geasInstance.py    2004-09-03 18:39:42 UTC (rev 
6246)
@@ -307,6 +307,7 @@
     cx.bindFunction ('find',       sess.find)
     cx.bindFunction ('setcontext', sess.setcontext)
     cx.bindFunction ('new',        sess.new)
+    cx.bindFunction ('message',    sess.message)
 
     # direct access to RPC API func.
     cx.bindFunction ('direct_request', self.__session.request)

Modified: trunk/gnue-appserver/src/geasSession.py
===================================================================
--- trunk/gnue-appserver/src/geasSession.py     2004-09-03 08:15:08 UTC (rev 
6245)
+++ trunk/gnue-appserver/src/geasSession.py     2004-09-03 18:39:42 UTC (rev 
6246)
@@ -32,6 +32,7 @@
 
 import geasList, geasInstance
 from gnue.common.datasources import GConditions
+from gnue.common.apps import i18n
 
 from mx import DateTime
 
@@ -63,7 +64,7 @@
   # Initalize
   # ---------------------------------------------------------------------------
 
-  def __init__ (self, connections, authAdapter, sm, id):
+  def __init__ (self, connections, authAdapter, sm, id, locale):
 
     self.loggedIn = 0
     self.connections = connections
@@ -80,8 +81,9 @@
     self.__dirtyInstances = {}
     self.__operation      = None
 
-    self.sm = sm                        # The session manager
-    self.id = id                        # The session id
+    self.sm     = sm                        # The session manager
+    self.id     = id                        # The session id
+    self.locale = locale
 
   # ---------------------------------------------------------------------------
   # Get a class definition from a class name and check access
@@ -198,6 +200,8 @@
 
   def login (self, user, password):
 
+    i18n.setcurrentlocale (self.locale)
+
     # This username/password is for the Application Server, not for the
     # database.
     self.__user = user
@@ -214,6 +218,8 @@
 
   def logout (self):
 
+    i18n.setcurrentlocale (self.locale)
+
     # FIXME: should the authAdapter be contacted?
     self.__connection.close ()
     self.loggedIn = 0
@@ -223,6 +229,8 @@
   # ---------------------------------------------------------------------------
 
   def commit (self):
+    i18n.setcurrentlocale (self.locale)
+
     for instance in self.__dirtyInstances.values ():
       instance.validate ()
 
@@ -235,6 +243,8 @@
 
   def rollback (self):
 
+    i18n.setcurrentlocale (self.locale)
+
     self.__connection.rollback ()
     self.__dirtyInstances = {}
 
@@ -244,6 +254,8 @@
 
   def request (self, classname, conditions, sortorder, propertylist):
 
+    i18n.setcurrentlocale (self.locale)
+
     classdef = self.__getClassdef (classname)
 
     (dsCond, asCond) = self.__splitCondition (conditions, classdef)
@@ -304,6 +316,8 @@
 
   def count (self, list_id):
 
+    i18n.setcurrentlocale (self.locale)
+
     list = self.__getList (list_id)
     return list.count ();
 
@@ -313,6 +327,8 @@
 
   def fetch (self, list_id, start, count):
 
+    i18n.setcurrentlocale (self.locale)
+
     list = self.__getList (list_id)
     return list.fetch (start, count)
 
@@ -368,6 +384,8 @@
 
   def load (self, classname, obj_id_list, propertylist):
 
+    i18n.setcurrentlocale (self.locale)
+
     classdef = self.__getClassdef (classname)
 
     result = []
@@ -386,6 +404,8 @@
 
   def store (self, classname, obj_id_list, propertylist, data):
 
+    i18n.setcurrentlocale (self.locale)
+
     opControl = self.__startOperation ('store')
 
     try:
@@ -423,6 +443,8 @@
 
   def delete (self, classname, obj_id_list):
 
+    i18n.setcurrentlocale (self.locale)
+
     opControl = self.__startOperation ('delete')
 
     try:
@@ -455,6 +477,8 @@
 
   def call (self, classname, obj_id_list, procedurename, parameters):
 
+    i18n.setcurrentlocale (self.locale)
+
     opControl = self.__startOperation ('call')
 
     try:

Modified: trunk/gnue-appserver/src/geasSessionManager.py
===================================================================
--- trunk/gnue-appserver/src/geasSessionManager.py      2004-09-03 08:15:08 UTC 
(rev 6245)
+++ trunk/gnue-appserver/src/geasSessionManager.py      2004-09-03 18:39:42 UTC 
(rev 6246)
@@ -29,6 +29,7 @@
 
 from gnue import appserver
 from gnue.common.datasources import GConnections
+from gnue.common.apps import i18n
 
 # =============================================================================
 # Exceptions
@@ -66,7 +67,7 @@
 
   def _buildInternalSession (self):
     self._internalSession = geasSession.geasSession (self._connections,
-      geasAuthentication.geasAuthAgent(), self, 0)
+      geasAuthentication.geasAuthAgent(), self, 0, i18n.getuserlocale ())
     self._internalSession.login (None,None) # fake login
     self._sessions [0] = self._internalSession
 
@@ -100,7 +101,7 @@
     conn = GConnections.GConnections(location, loginHandler, loginOptions)
    
     sess = geasSession.geasSession (conn, self._authAdapter, self,
-                                    self._sessNo)
+                                    self._sessNo, authentication ['language'])
 
     sess.login (authentication ['user'], authentication ['password'])
     self._sessions [self._sessNo] = sess

Modified: trunk/gnue-appserver/src/language/App.py
===================================================================
--- trunk/gnue-appserver/src/language/App.py    2004-09-03 08:15:08 UTC (rev 
6245)
+++ trunk/gnue-appserver/src/language/App.py    2004-09-03 18:39:42 UTC (rev 
6246)
@@ -21,7 +21,7 @@
 #
 # $Id$
 
-from gnue.common.apps import GClientApp
+from gnue.common.apps import GClientApp, i18n
 from gnue.common.datasources import GLoginHandler
 from gnue.appserver import geasSessionManager
 import Session

Modified: trunk/gnue-appserver/src/language/Session.py
===================================================================
--- trunk/gnue-appserver/src/language/Session.py        2004-09-03 08:15:08 UTC 
(rev 6245)
+++ trunk/gnue-appserver/src/language/Session.py        2004-09-03 18:39:42 UTC 
(rev 6246)
@@ -21,9 +21,12 @@
 #
 # $Id$
 
+import types
+
 from ObjectList import ObjectList
 from Object import Object
 from gnue import appserver
+from gnue.common.apps import i18n, errors
 
 
 # ===========================================================================
@@ -35,6 +38,10 @@
     msg = u_("Cannot qualifiy name '%s', no context specified") % name
     appserver.Error.__init__ (self, msg)
 
+class MessageNotFoundError (errors.ApplicationError):
+  def __init__ (self, message):
+    msg = u_("Message '%s' not found") % message
+    errors.ApplicationError.__init__ (self, msg)
 
 # ===========================================================================
 # CLASS session: implement a session of the language interface
@@ -117,7 +124,39 @@
     return Object (self, self.qualify (classname))
 
 
+  # -------------------------------------------------------------------------
+  # Get a message from the message catalogue
+  # -------------------------------------------------------------------------
 
+  def message (self, messageName, *args):
+    languages = ['C']
+    current = i18n.getlanguage ()
+    if '_' in current:
+      languages.insert (0, current.split ('_') [0])
+    languages.insert (0, current)
+
+    (module, message) = self.qualify (messageName).split ('_')
+
+    for lang in languages:
+      cond = ['and', ['eq', ['field', 'module.name'], ['const', module]],
+                     ['eq', ['field', 'name'], ['const', message]],
+                     ['eq', ['field', 'language'], ['const', lang]]]
+
+      result = self.find ('gnue_message', cond, [], ['gnue_text'])
+      if len (result):
+        text = result [0].gnue_text
+
+        if len (args):
+          if isinstance (args [0], types.DictType):
+            text = text % args [0]
+          else:
+            text = text % args
+
+        return text
+
+    raise MessageNotFoundError, self.qualify (messageName)
+
+
 # =============================================================================
 # Login-Session creates a new Session-Id using 'user' and 'password'
 # =============================================================================





reply via email to

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