[Checkins] SVN: Sandbox/cklinger/megrok.storm/trunk/src/megrok/storm/ Provide ILocation to the objects

Christian Klinger cklinger at novareto.de
Fri Sep 12 06:03:42 EDT 2008


Log message for revision 91075:
  Provide ILocation to the objects

Changed:
  U   Sandbox/cklinger/megrok.storm/trunk/src/megrok/storm/component.py
  U   Sandbox/cklinger/megrok.storm/trunk/src/megrok/storm/interfaces.py

-=-
Modified: Sandbox/cklinger/megrok.storm/trunk/src/megrok/storm/component.py
===================================================================
--- Sandbox/cklinger/megrok.storm/trunk/src/megrok/storm/component.py	2008-09-12 05:58:44 UTC (rev 91074)
+++ Sandbox/cklinger/megrok.storm/trunk/src/megrok/storm/component.py	2008-09-12 10:03:41 UTC (rev 91075)
@@ -8,9 +8,12 @@
 from zope.configuration.name import resolve
 import megrok.storm
 from interfaces import IAppRoot
+from zope.location.interfaces import ILocation
+from zope.interface import implements
+from grokcore.component import Context
 
-class AppRoot(grok.Model):
-    grok.implements(IAppRoot)
+class AppRoot(object):
+    grok.implements(IAppRoot, ILocation)
 
     def getStore(self):
 	name = megrok.storm.directive.storename.bind().get(self)
@@ -27,7 +30,13 @@
     def __iter__(self):
         store = self.getStore()
 	object = megrok.storm.directive.rdb_object.bind().get(self)
-        return iter( store.find(object))
+	key = megrok.storm.directive.key.bind().get(self)
+	rc = []
+	for obj in store.find(object):
+	    obj.__name__ = getattr(obj, key)
+	    obj.__parent__ = self
+	    rc.append(obj)
+        return iter( rc )
 
     def __getitem__(self, name):
         store = self.getStore()
@@ -35,6 +44,10 @@
 	key = megrok.storm.directive.key.bind().get(self)
         key_property = getattr(object, key)
         item = store.find(object, key_property == name).one()
+        ### Set ILocation if item
+	if item:
+	    item.__parent__ = self
+	    item.__name__ = name 
         return item
 
     def  __setitem__(self, name, item):
@@ -42,11 +55,23 @@
         setattr(item, key, name)
         store = self.getStore()
         store.add(item)
+	### Add Location Information
+	key = megrok.storm.directive.key.bind().get(self)
+	item.__name__ = getattr(item, key) 
+	item.__parent__ = self
 
     def add(self, item):
         store = self.getStore()
         store.add(item)
+	### Add Location Information
+	key = megrok.storm.directive.key.bind().get(self)
+	item.__name__ = getattr(item, key) 
+	item.__parent__ = self
 
+    def delete(self, item):	
+        store = self.getStore()
+        store.remove(item)
+
     def __len__(self):
         store = self.getStore()
 	object = megrok.storm.directive.rdb_object.bind().get(self)
@@ -67,6 +92,11 @@
 	result = store.find(object, *args, **kwargs)
 	return result
 
+    def get(self, key, default=None):
+        try:
+	    return self[key]
+	except TypeError:
+	    return default
 
 class Store(object):
     pass
@@ -86,7 +116,10 @@
 	return (storename, uri)
 
 
-class Model(grokcore.component.Context):
-    pass
+class Model(Context):
+    implements(ILocation)
 
+    __parent__ = None
+    __name__ = None
 
+

Modified: Sandbox/cklinger/megrok.storm/trunk/src/megrok/storm/interfaces.py
===================================================================
--- Sandbox/cklinger/megrok.storm/trunk/src/megrok/storm/interfaces.py	2008-09-12 05:58:44 UTC (rev 91074)
+++ Sandbox/cklinger/megrok.storm/trunk/src/megrok/storm/interfaces.py	2008-09-12 10:03:41 UTC (rev 91075)
@@ -6,9 +6,12 @@
     def getStore(self):
 	""" Return the default store megrok.rdb.store """
 
-    def add(self):
-	""" Add an object to the default store """
+    def delete(self, item):
+	""" Delete item form store"""
 
+    def add(self, item):
+	""" Add item to the default store """
+
     def __delitem__(self, name):
 	""" Delets the object with the pk-key name """
 



More information about the Checkins mailing list