commit-gnue
[Top][All Lists]
Advanced

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

r6826 - trunk/gnue-appserver/src/language


From: reinhard
Subject: r6826 - trunk/gnue-appserver/src/language
Date: Mon, 27 Dec 2004 08:33:08 -0600 (CST)

Author: reinhard
Date: 2004-12-27 08:33:07 -0600 (Mon, 27 Dec 2004)
New Revision: 6826

Modified:
   trunk/gnue-appserver/src/language/Object.py
Log:
Fixed __setattr__.


Modified: trunk/gnue-appserver/src/language/Object.py
===================================================================
--- trunk/gnue-appserver/src/language/Object.py 2004-12-27 10:19:55 UTC (rev 
6825)
+++ trunk/gnue-appserver/src/language/Object.py 2004-12-27 14:33:07 UTC (rev 
6826)
@@ -40,23 +40,20 @@
 
 
 # ===========================================================================
-# Helper methods
-# ===========================================================================
-
-# ===========================================================================
 # Implements a single business object
 # ===========================================================================
+
 class Object:
 
   # -------------------------------------------------------------------------
   # Constructor
   # -------------------------------------------------------------------------
+
   def __init__ (self, session, classname, objectId = None):
     # we won't trigger __setattr__ here ...
     self.__dict__['objectId']          = objectId
     self.__dict__['_Object__session']  = session
     self.__dict__['_Object__class']    = classname
-    self.__dict__['_Object__classdef'] = None
 
     if self.objectId is None:
       # Create new object
@@ -70,6 +67,7 @@
   # -------------------------------------------------------------------------
   # Return an attribute's value; if not available in cache load from server
   # -------------------------------------------------------------------------
+
   def __getattr__ (self, attr):
     name = self.__session.qualify (attr)
     if name == "gnue_id":
@@ -98,47 +96,53 @@
         return value
 
 
-
   # -------------------------------------------------------------------------
   # Set an attribute's value
   # -------------------------------------------------------------------------
+
   def __setattr__ (self, attr, value):
 
     if self.__dict__.has_key (attr):
       self.__dict__ [attr] = value
 
     else:
-      if self.__classdef is None:
-        self.__classdef = self.__session.getClassDef (self.__class)
+      name = self.__session.qualify (attr)
 
-      if self.__attrIsValid (attr):
-        name = self.__session.qualify (attr)
-        sm   = self.__session.getSessionManager ()
-        sid  = self.__session.getSessionId ()
+      try:
+        datatype = sm.load (sid, self.__class, [''], [name]) [0][0]
+      except KeyError:
+        raise MemberNotFoundError, (self.__class, name)
 
-        if isinstance (value, Object):
-          __value = value.objectId
-        else:
-          __value = value
+      if datatype == 'procedure':
+        # Procedures not valid in __setattr__
+        raise MemberNotFoundError, (self.__class, name)
 
-        sm.store (sid, self.__class, [self.objectId], [name], [[__value]])
+      sm  = self.__session.getSessionManager ()
+      sid = self.__session.getSessionId ()
 
+      if isinstance (value, Object):
+        __value = value.objectId
       else:
-        raise AttributeError, attr
+        __value = value
 
+      sm.store (sid, self.__class, [self.objectId], [name], [[__value]])
 
+
   # -------------------------------------------------------------------------
   # Return the Object-ID as string representation
   # -------------------------------------------------------------------------
+
   def __str__ (self):
     if self.objectId:
       return self.objectId
     else:
       return ''
 
+
   # -------------------------------------------------------------------------
   # Return the Object as string representation
   # -------------------------------------------------------------------------
+
   def __repr__ (self):
     if self.objectId:
       return '<%s instance with id %s>' % (self.__class, self.objectId)
@@ -149,6 +153,7 @@
   # -------------------------------------------------------------------------
   # Make object['property'] possible
   # -------------------------------------------------------------------------
+
   def __getitem__ (self, item):
     return self.__getattr__ (item)
   def __setitem__ (self, item, value):
@@ -160,31 +165,15 @@
   # ---------------------------------------------------------------------------
 
   def __nonzero__ (self):
-    """
-    """
 
     return True
 
-  # -------------------------------------------------------------------------
-  # Check if 'attr' is a valid property of this class
-  # -------------------------------------------------------------------------
-  def __attrIsValid (self, attr):
-    name = self.__session.qualify (attr)
-    return name in self.__classdef ['properties']
 
   # -------------------------------------------------------------------------
-  # Check if 'attr' is a valid procedure of this class
-  # -------------------------------------------------------------------------
-  def __attrIsMethod (self, attr):
-    name = self.__session.qualify (attr)
-    return name in self.__classdef ['procedures']
-
-
-  # -------------------------------------------------------------------------
   # Delete instance and clear object-id
   # -------------------------------------------------------------------------
+
   def delete (self):
     self.__session.getSessionManager ().delete (
                self.__session.getSessionId (), self.__class, [self.objectId])
     self.objectId = None
-





reply via email to

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