[Top][All Lists]
[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
-
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- r6826 - trunk/gnue-appserver/src/language,
reinhard <=