start-moksha
by Luke Macken
start-moksha | 1 +
1 file changed, 1 insertion(+)
New commits:
commit dbfc6b939ee32c2d1a56721abd9c150f77bbf080
Author: Luke Macken <lmacken(a)redhat.com>
Date: Sat Jan 23 21:36:30 2010 -0500
Hack around more setuptools/easy_install problems
diff --git a/start-moksha b/start-moksha
index 1d22a75..bff96db 100755
--- a/start-moksha
+++ b/start-moksha
@@ -19,6 +19,7 @@ if [ ! $VIRTUAL_ENV ]; then
easy_install pysqlite
easy_install -U ToscaWidgets
easy_install -U SQLAlchemy
+ easy_install -U FormEncode
# `install` instead of `develop` to avoid weird directory vs. egg
# namespace issues
14 years, 3 months
moksha/apps moksha/tests
by Luke Macken
moksha/apps/knowledge/moksha/apps/knowledge/controllers/root.py | 2
moksha/apps/knowledge/moksha/apps/knowledge/model/model.py | 221 +++++-----
moksha/apps/knowledge/pavement.py | 32 -
moksha/apps/knowledge/pavement.py.hide | 32 +
moksha/tests/models/test_entity.py | 210 ++++-----
5 files changed, 249 insertions(+), 248 deletions(-)
New commits:
commit 68ef36ec6e899b57d5f97cee31a3d6033f5878e7
Author: Luke Macken <lmacken(a)redhat.com>
Date: Fri Jan 15 23:39:48 2010 -0500
Disable the knowledge app and it's test suite until we can figure out
how to properly handle it's SQLAlchemy engine(s)
diff --git a/moksha/apps/knowledge/moksha/apps/knowledge/controllers/root.py b/moksha/apps/knowledge/moksha/apps/knowledge/controllers/root.py
index 22924ad..852527a 100644
--- a/moksha/apps/knowledge/moksha/apps/knowledge/controllers/root.py
+++ b/moksha/apps/knowledge/moksha/apps/knowledge/controllers/root.py
@@ -17,7 +17,7 @@ from moksha import model
#from moksha.model import DBSession, metadata
from moksha.lib.base import Controller
from moksha.lib.helpers import defaultdict
-from moksha.apps.knowledge.model import Fact, Entity, with_characteristic, DBSession
+from moksha.apps.knowledge.model import Fact, Entity, with_characteristic, DBSession, metadata
#class EntityForm(TableForm):
# class fields(WidgetsList):
diff --git a/moksha/apps/knowledge/moksha/apps/knowledge/model/model.py b/moksha/apps/knowledge/moksha/apps/knowledge/model/model.py
index d2ed245..31c1e7a 100644
--- a/moksha/apps/knowledge/moksha/apps/knowledge/model/model.py
+++ b/moksha/apps/knowledge/moksha/apps/knowledge/model/model.py
@@ -22,113 +22,114 @@
.. moduleauthor:: Luke Macken <lmacken(a)redhat.com>
"""
-from sqlalchemy import *
-from sqlalchemy.orm import *
-from sqlalchemy.orm.collections import attribute_mapped_collection
-
-from datetime import datetime
-from sqlalchemy import *
-from sqlalchemy.orm import relation, comparable_property
-from sqlalchemy.orm.collections import attribute_mapped_collection
-from vertical import PolymorphicVerticalProperty, VerticalPropertyDictMixin
-
-from moksha.model import metadata, DeclarativeBase, DBSession
-
-
-class Fact(PolymorphicVerticalProperty, DeclarativeBase):
- """ A polymorphic-valued vertical table property """
- __tablename__ = 'moksha_facts'
-
- id = Column(Integer, ForeignKey('moksha_entities.id'), primary_key=True)
- key = Column(Unicode(64), primary_key=True)
- type_ = Column(Unicode(16), default=None)
- int_value = Column(Integer, default=None)
- char_value = Column(UnicodeText, default=None)
- boolean_value = Column(Boolean, default=None)
- datetime_value = Column(DateTime, default=None)
- list_value = Column(PickleType, default=None)
- dict_value = Column(PickleType, default=None)
-
- value = comparable_property(PolymorphicVerticalProperty.Comparator,
- PolymorphicVerticalProperty.value)
-
- type_map = {
- int: (u'integer', 'int_value'),
- str: (u'char', 'char_value'),
- unicode: (u'char', 'char_value'),
- bool: (u'boolean', 'boolean_value'),
- datetime: (u'datetime', 'datetime_value'),
- list: (u'list', 'list_value'),
- dict: (u'dict', 'dict_value'),
- type(None): (None, None),
- }
-
-with_characteristic = lambda key, value: and_(Fact.key==key, Fact.value==value)
-
-
-class Entity(VerticalPropertyDictMixin, DeclarativeBase):
- """ An polymorphic entity.
-
- Entity facts are available via the 'facts' property or by using
- dict-like accessors on an Entity instance::
-
- apple = Entity('apple')
- apple['color'] = 'red'
- # or, equivalently:
- apple.facts['color'] = Fact('color', 'red')
-
- This Entity is also an adjacency tree. Meaning, every entity
- can have a `parent` and zero or more `children`.
- """
- __tablename__ = 'moksha_entities'
- _property_type = Fact
- _property_mapping = 'facts'
-
- id = Column(Integer, autoincrement=True, primary_key=True)
- name = Column(UnicodeText, nullable=False)
-
- facts = relation(Fact, backref='entity',
- collection_class=attribute_mapped_collection('key'))
-
- # Adjacency tree properties
- #id = Column(Integer, Sequence('moksha_tree_id_seq', optional=True), primary_key=True)
- parent_id = Column(Integer, ForeignKey('moksha_entities.id'), nullable=True)
-
- children = relation('Entity', cascade="all",
- backref=backref("parent", remote_side="Entity.id"),
- collection_class=attribute_mapped_collection('name'),
- lazy=False, join_depth=3)
-
- def __init__(self, name=None):
- self.name = name
-
- @classmethod
- def by_name(cls, name):
- """A class method that permits to search entities
- based on their name attribute.
- """
- return DBSession.query(cls).filter(cls.name==name).first()
-
- # Adjacency-tree methods
- def append(self, node):
- if isinstance(node, basestring):
- node = Entity(node)
- node.parent = self
- self.children[node.name] = node
-
- def __repr__(self):
- return self._getstring(0, False)
-
- def __str__(self):
- return self._getstring(0, False)
-
- def _getstring(self, level, expand = False):
- s = (' ' * level) + "%s (%s,%s, %d)" % (
- self.name, self.id,self.parent_id,id(self)) + '\n'
- if expand:
- s += ''.join([n._getstring(level+1, True)
- for n in self.children.values()])
- return s
-
- def print_nodes(self):
- return self._getstring(0, True)
+#from sqlalchemy import *
+#from sqlalchemy.orm import *
+#from sqlalchemy.orm.collections import attribute_mapped_collection
+#
+#from datetime import datetime
+#from sqlalchemy import *
+#from sqlalchemy.orm import relation, comparable_property
+#from sqlalchemy.orm.collections import attribute_mapped_collection
+#from vertical import PolymorphicVerticalProperty, VerticalPropertyDictMixin
+#
+##from moksha.model import metadata, DeclarativeBase, DBSession
+#from moksha.apps.knowledge.model import metadata, DeclarativeBase, DBSession
+#
+#
+#class Fact(PolymorphicVerticalProperty, DeclarativeBase):
+# """ A polymorphic-valued vertical table property """
+# __tablename__ = 'moksha_facts'
+#
+# id = Column(Integer, ForeignKey('moksha_entities.id'), primary_key=True)
+# key = Column(Unicode(64), primary_key=True)
+# type_ = Column(Unicode(16), default=None)
+# int_value = Column(Integer, default=None)
+# char_value = Column(UnicodeText, default=None)
+# boolean_value = Column(Boolean, default=None)
+# datetime_value = Column(DateTime, default=None)
+# list_value = Column(PickleType, default=None)
+# dict_value = Column(PickleType, default=None)
+#
+# value = comparable_property(PolymorphicVerticalProperty.Comparator,
+# PolymorphicVerticalProperty.value)
+#
+# type_map = {
+# int: (u'integer', 'int_value'),
+# str: (u'char', 'char_value'),
+# unicode: (u'char', 'char_value'),
+# bool: (u'boolean', 'boolean_value'),
+# datetime: (u'datetime', 'datetime_value'),
+# list: (u'list', 'list_value'),
+# dict: (u'dict', 'dict_value'),
+# type(None): (None, None),
+# }
+#
+#with_characteristic = lambda key, value: and_(Fact.key==key, Fact.value==value)
+#
+#
+#class Entity(VerticalPropertyDictMixin, DeclarativeBase):
+# """ An polymorphic entity.
+#
+# Entity facts are available via the 'facts' property or by using
+# dict-like accessors on an Entity instance::
+#
+# apple = Entity('apple')
+# apple['color'] = 'red'
+# # or, equivalently:
+# apple.facts['color'] = Fact('color', 'red')
+#
+# This Entity is also an adjacency tree. Meaning, every entity
+# can have a `parent` and zero or more `children`.
+# """
+# __tablename__ = 'moksha_entities'
+# _property_type = Fact
+# _property_mapping = 'facts'
+#
+# id = Column(Integer, autoincrement=True, primary_key=True)
+# name = Column(UnicodeText, nullable=False)
+#
+# facts = relation(Fact, backref='entity',
+# collection_class=attribute_mapped_collection('key'))
+#
+# # Adjacency tree properties
+# #id = Column(Integer, Sequence('moksha_tree_id_seq', optional=True), primary_key=True)
+# parent_id = Column(Integer, ForeignKey('moksha_entities.id'), nullable=True)
+#
+# children = relation('Entity', cascade="all",
+# backref=backref("parent", remote_side="Entity.id"),
+# collection_class=attribute_mapped_collection('name'),
+# lazy=False, join_depth=3)
+#
+# def __init__(self, name=None):
+# self.name = name
+#
+# @classmethod
+# def by_name(cls, name):
+# """A class method that permits to search entities
+# based on their name attribute.
+# """
+# return DBSession.query(cls).filter(cls.name==name).first()
+#
+# # Adjacency-tree methods
+# def append(self, node):
+# if isinstance(node, basestring):
+# node = Entity(node)
+# node.parent = self
+# self.children[node.name] = node
+#
+# def __repr__(self):
+# return self._getstring(0, False)
+#
+# def __str__(self):
+# return self._getstring(0, False)
+#
+# def _getstring(self, level, expand = False):
+# s = (' ' * level) + "%s (%s,%s, %d)" % (
+# self.name, self.id,self.parent_id,id(self)) + '\n'
+# if expand:
+# s += ''.join([n._getstring(level+1, True)
+# for n in self.children.values()])
+# return s
+#
+# def print_nodes(self):
+# return self._getstring(0, True)
diff --git a/moksha/apps/knowledge/pavement.py b/moksha/apps/knowledge/pavement.py
deleted file mode 100644
index 8bb2d45..0000000
--- a/moksha/apps/knowledge/pavement.py
+++ /dev/null
@@ -1,32 +0,0 @@
-# -*- coding: utf-8 -*-
-from paver.easy import *
-from paver.setuputils import (setup, find_package_data, find_packages,
- install_distutils_tasks)
-install_distutils_tasks()
-from moksha.lib.paver_tasks import *
-
-options(
- setup=Bunch(
- name="moksha.knowledge",
- version="0.1",
- release="1",
- url="http://moksha.fedorahosted.org",
- description="Describe your package here",
- license="AGPLv3",
- long_description="",
- author="",
- author_email="",
- rpm_name='moksha-apps-knowledge',
- packages=find_packages(),
- package_data=find_package_data(),
- namespace_packages=[
- 'moksha',
- 'moksha.apps',
- ],
- install_requires=["Moksha"],
- entry_points="""
- [moksha.application]
- moksha.apps.knowledge = moksha.apps.knowledge.controllers.root:RootController
- """,
- ),
-)
diff --git a/moksha/apps/knowledge/pavement.py.hide b/moksha/apps/knowledge/pavement.py.hide
new file mode 100644
index 0000000..8bb2d45
--- /dev/null
+++ b/moksha/apps/knowledge/pavement.py.hide
@@ -0,0 +1,32 @@
+# -*- coding: utf-8 -*-
+from paver.easy import *
+from paver.setuputils import (setup, find_package_data, find_packages,
+ install_distutils_tasks)
+install_distutils_tasks()
+from moksha.lib.paver_tasks import *
+
+options(
+ setup=Bunch(
+ name="moksha.knowledge",
+ version="0.1",
+ release="1",
+ url="http://moksha.fedorahosted.org",
+ description="Describe your package here",
+ license="AGPLv3",
+ long_description="",
+ author="",
+ author_email="",
+ rpm_name='moksha-apps-knowledge',
+ packages=find_packages(),
+ package_data=find_package_data(),
+ namespace_packages=[
+ 'moksha',
+ 'moksha.apps',
+ ],
+ install_requires=["Moksha"],
+ entry_points="""
+ [moksha.application]
+ moksha.apps.knowledge = moksha.apps.knowledge.controllers.root:RootController
+ """,
+ ),
+)
diff --git a/moksha/tests/models/test_entity.py b/moksha/tests/models/test_entity.py
index ed1a898..2d9fde2 100644
--- a/moksha/tests/models/test_entity.py
+++ b/moksha/tests/models/test_entity.py
@@ -17,108 +17,108 @@
"""Test Moksha's Entity/Fact model"""
-from datetime import datetime
-from nose.tools import eq_, assert_true
-from sqlalchemy import *
-from moksha.tests.models import ModelTest
-
-from moksha.apps.knowledge.model import DBSession, Entity, Fact, with_characteristic
-
-class TestEntity(ModelTest):
- """Test case for the Entity model."""
-
- klass = Entity
- attrs = dict(name=u'lmacken')
-
- def setup(self):
- super(TestEntity, self).setup()
- self.obj[u'firstname'] = u'Luke'
- self.obj[u'lastname'] = u'Macken'
- self.obj[u'age'] = 24
- self.obj[u'dob'] = datetime(1984, 11, 02)
- self.obj[u'l33t'] = True
- self.obj[u'json'] = {'foo':'bar'}
-
- def test_entity_creation_name(self):
- eq_(self.obj.name, u'lmacken')
-
- def test_fact_types(self):
- DBSession.add(self.obj)
- DBSession.flush()
- me = DBSession.query(Entity).filter_by(name=u'lmacken').one()
- eq_(me[u'lastname'], u'Macken')
- eq_(me[u'age'], 24)
- eq_(me[u'dob'], datetime(1984, 11, 2))
- eq_(me[u'l33t'], True)
-
- def test_getting_by_name(self):
- """ Entities should be fetchable by their name """
- DBSession.add(self.obj)
- lmacken = Entity.by_name(u'lmacken')
- eq_(lmacken, self.obj)
-
- def test_filter_by_name(self):
- DBSession.add(self.obj)
- me = DBSession.query(Entity).filter_by(name=u'lmacken').one()
- eq_(me.name, u'lmacken')
- eq_(me[u'firstname'], u'Luke')
-
- def test_query_by_fact(self):
- """ Query entities by facts """
- DBSession.add(self.obj)
- assert DBSession.query(Entity).filter(
- Entity.facts.any(
- and_(Fact.key == u'l33t',
- Fact.value == True))).first()
-
- def test_query_with_characteristic(self):
- """ Query entities based on facts using with_characteristic """
- DBSession.add(self.obj)
- assert (DBSession.query(Entity).
- filter(or_(Entity.facts.any(
- with_characteristic(u'dob', datetime(1984, 11, 02))),
- not_(Entity.facts.any(Fact.key == u'l33t'))))).first()
-
- def test_query_facts_by_characteristic(self):
- """ Query facts by certain characteristics """
- DBSession.add(self.obj)
- assert (DBSession.query(Fact).
- filter(with_characteristic(u'l33t', True))).one()
-
- def test_child_entities(self):
- child = Entity(u'child1')
- DBSession.add(child)
- self.obj.append(child)
- DBSession.flush()
- me = Entity.by_name(u'lmacken')
- assert_true('child1' in me.children)
- eq_(self.obj.children['child1'].parent, me)
-
- def test_entity_json_fact(self):
- me = Entity.by_name(u'lmacken')
- eq_(me[u'json'], {'foo': 'bar'})
-
- """
- TODO: add hooks that send AMQP messages?
- Or, do this i
- def test_hooks(self):
- from moksha.hook import Hook, MokshaHookMapperExtension
- from moksha.model import model
- insert = update = delete = False
-
- class MyHook(Hook):
- def after_insert(self, instance):
- insert = True
- def after_update(self, instance):
- update = True
- def after_delete(self, instance):
- delete = True
-
- model.moksha_mapper_extension.hooks['after_insert'].append(MyHook())
-
- # create a new entity
- something = Entity(u'something')
- DBSession.add(something)
- DBSession.flush()
- assert insert
- """
+#from datetime import datetime
+#from nose.tools import eq_, assert_true
+#from sqlalchemy import *
+#from moksha.tests.models import ModelTest
+#
+#from moksha.apps.knowledge.model import DBSession, Entity, Fact, with_characteristic
+#
+#class TestEntity(ModelTest):
+# """Test case for the Entity model."""
+#
+# klass = Entity
+# attrs = dict(name=u'lmacken')
+#
+# def setup(self):
+# super(TestEntity, self).setup()
+# self.obj[u'firstname'] = u'Luke'
+# self.obj[u'lastname'] = u'Macken'
+# self.obj[u'age'] = 24
+# self.obj[u'dob'] = datetime(1984, 11, 02)
+# self.obj[u'l33t'] = True
+# self.obj[u'json'] = {'foo':'bar'}
+#
+# def test_entity_creation_name(self):
+# eq_(self.obj.name, u'lmacken')
+#
+# def test_fact_types(self):
+# DBSession.add(self.obj)
+# DBSession.flush()
+# me = DBSession.query(Entity).filter_by(name=u'lmacken').one()
+# eq_(me[u'lastname'], u'Macken')
+# eq_(me[u'age'], 24)
+# eq_(me[u'dob'], datetime(1984, 11, 2))
+# eq_(me[u'l33t'], True)
+#
+# def test_getting_by_name(self):
+# """ Entities should be fetchable by their name """
+# DBSession.add(self.obj)
+# lmacken = Entity.by_name(u'lmacken')
+# eq_(lmacken, self.obj)
+#
+# def test_filter_by_name(self):
+# DBSession.add(self.obj)
+# me = DBSession.query(Entity).filter_by(name=u'lmacken').one()
+# eq_(me.name, u'lmacken')
+# eq_(me[u'firstname'], u'Luke')
+#
+# def test_query_by_fact(self):
+# """ Query entities by facts """
+# DBSession.add(self.obj)
+# assert DBSession.query(Entity).filter(
+# Entity.facts.any(
+# and_(Fact.key == u'l33t',
+# Fact.value == True))).first()
+#
+# def test_query_with_characteristic(self):
+# """ Query entities based on facts using with_characteristic """
+# DBSession.add(self.obj)
+# assert (DBSession.query(Entity).
+# filter(or_(Entity.facts.any(
+# with_characteristic(u'dob', datetime(1984, 11, 02))),
+# not_(Entity.facts.any(Fact.key == u'l33t'))))).first()
+#
+# def test_query_facts_by_characteristic(self):
+# """ Query facts by certain characteristics """
+# DBSession.add(self.obj)
+# assert (DBSession.query(Fact).
+# filter(with_characteristic(u'l33t', True))).one()
+#
+# def test_child_entities(self):
+# child = Entity(u'child1')
+# DBSession.add(child)
+# self.obj.append(child)
+# DBSession.flush()
+# me = Entity.by_name(u'lmacken')
+# assert_true('child1' in me.children)
+# eq_(self.obj.children['child1'].parent, me)
+#
+# def test_entity_json_fact(self):
+# me = Entity.by_name(u'lmacken')
+# eq_(me[u'json'], {'foo': 'bar'})
+#
+# """
+# TODO: add hooks that send AMQP messages?
+# Or, do this i
+# def test_hooks(self):
+# from moksha.hook import Hook, MokshaHookMapperExtension
+# from moksha.model import model
+# insert = update = delete = False
+#
+# class MyHook(Hook):
+# def after_insert(self, instance):
+# insert = True
+# def after_update(self, instance):
+# update = True
+# def after_delete(self, instance):
+# delete = True
+#
+# model.moksha_mapper_extension.hooks['after_insert'].append(MyHook())
+#
+# # create a new entity
+# something = Entity(u'something')
+# DBSession.add(something)
+# DBSession.flush()
+# assert insert
+# """
14 years, 4 months
docs/index.rst
by Luke Macken
docs/index.rst | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
New commits:
commit 254d25e9efdd1fe7fa8b9e6488125a1bac1cbb73
Author: Luke Macken <lmacken(a)redhat.com>
Date: Mon Jan 4 05:59:15 2010 -0500
Update our doc index to reflect some recent naming changes
diff --git a/docs/index.rst b/docs/index.rst
index b4ed880..f45604b 100644
--- a/docs/index.rst
+++ b/docs/index.rst
@@ -58,7 +58,7 @@ Messaging
main/MessageBrokers
main/Topics
main/Consumers
- main/DataStreams
+ main/Producers
main/MokshaHub
Widgets
14 years, 4 months