"""The application's model objects"""
-import sqlalchemy as sa
-from sqlalchemy import orm
-
+import elixir
from floof.model import meta
-# Tables are defined in separate files and imported to here
-from floof.model.users import *
-from floof.model.art import *
+Session = elixir.session = meta.Session
+# Uncomment if using reflected tables
+# elixir.options_defaults.update({'autoload': True})
+elixir.options_defaults.update({'shortnames':True})
+metadata = elixir.metadata
+# this will be called in config/environment.py
+# if not using reflected tables
def init_model(engine):
"""Call me before using any of the tables or classes in the model"""
- ## Reflected tables must be defined and mapped here
- #global reflected_table
- #reflected_table = sa.Table("Reflected", meta.metadata, autoload=True,
- # autoload_with=engine)
- #orm.mapper(Reflected, reflected_table)
- #
meta.Session.configure(bind=engine)
- meta.engine = engine
+ metadata.bind = engine
+
+# Delay the setup if using reflected tables
+if elixir.options_defaults.get('autoload', False) \
+ and not metadata.is_bound():
+ elixir.delay_setup = True
+
+# # import other entities here, e.g.
+# from floof.model.blog import BlogEntry, BlogComment
+from floof.model.art import Art
+from floof.model.users import User, IdentityURL
+
+# Finally, call elixir to set up the tables.
+# but not if using reflected tables
+if not elixir.options_defaults.get('autoload', False):
+ elixir.setup_all()
+