summaryrefslogtreecommitdiffstats
path: root/leafymiracle/resources.py
diff options
context:
space:
mode:
Diffstat (limited to 'leafymiracle/resources.py')
-rw-r--r--leafymiracle/resources.py59
1 files changed, 59 insertions, 0 deletions
diff --git a/leafymiracle/resources.py b/leafymiracle/resources.py
new file mode 100644
index 0000000..8185f9f
--- /dev/null
+++ b/leafymiracle/resources.py
@@ -0,0 +1,59 @@
+# Copyright (C) 2011 Luke Macken <lmacken@redhat.com>
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+from sqlalchemy.orm.exc import NoResultFound
+from models import DBSession, Root, initialize_sql
+
+class MyApp(object):
+ __name__ = None
+ __parent__ = None
+
+ def __getitem__(self, key):
+ session = DBSession()
+ try:
+ id = int(key)
+ except (ValueError, TypeError):
+ raise KeyError(key)
+
+ query = session.query(Root).filter_by(id=id)
+
+ try:
+ item = query.one()
+ item.__parent__ = self
+ item.__name__ = key
+ return item
+ except NoResultFound:
+ raise KeyError(key)
+
+ def get(self, key, default=None):
+ try:
+ item = self.__getitem__(key)
+ except KeyError:
+ item = default
+ return item
+
+ def __iter__(self):
+ session= DBSession()
+ query = session.query(Root)
+ return iter(query)
+
+root = MyApp()
+
+def default_get_root(request):
+ return root
+
+def appmaker(engine):
+ initialize_sql(engine)
+ return default_get_root