[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