vigiboard / dashboard / model / __init__.py @ 805cc54a
History | View | Annotate | Download (2.37 KB)
1 | 805cc54a | Thomas ANDREJAK | # -*- coding: utf-8 -*-
|
---|---|---|---|
2 | """The application's model objects"""
|
||
3 | |||
4 | from zope.sqlalchemy import ZopeTransactionExtension |
||
5 | from sqlalchemy.orm import scoped_session, sessionmaker |
||
6 | #from sqlalchemy import MetaData
|
||
7 | from sqlalchemy.ext.declarative import declarative_base |
||
8 | |||
9 | # Global session manager: DBSession() returns the Thread-local
|
||
10 | # session object appropriate for the current web request.
|
||
11 | maker = sessionmaker(autoflush=True, autocommit=False, |
||
12 | extension=ZopeTransactionExtension()) |
||
13 | DBSession = scoped_session(maker) |
||
14 | |||
15 | # Base class for all of our model classes: By default, the data model is
|
||
16 | # defined with SQLAlchemy's declarative extension, but if you need more
|
||
17 | # control, you can switch to the traditional method.
|
||
18 | DeclarativeBase = declarative_base() |
||
19 | |||
20 | # There are two convenient ways for you to spare some typing.
|
||
21 | # You can have a query property on all your model classes by doing this:
|
||
22 | # DeclarativeBase.query = DBSession.query_property()
|
||
23 | # Or you can use a session-aware mapper as it was used in TurboGears 1:
|
||
24 | # DeclarativeBase = declarative_base(mapper=DBSession.mapper)
|
||
25 | |||
26 | # Global metadata.
|
||
27 | # The default metadata is the one from the declarative base.
|
||
28 | metadata = DeclarativeBase.metadata |
||
29 | |||
30 | # If you have multiple databases with overlapping table names, you'll need a
|
||
31 | # metadata for each database. Feel free to rename 'metadata2'.
|
||
32 | #metadata2 = MetaData()
|
||
33 | |||
34 | #####
|
||
35 | # Generally you will not want to define your table's mappers, and data objects
|
||
36 | # here in __init__ but will want to create modules them in the model directory
|
||
37 | # and import them at the bottom of this file.
|
||
38 | #
|
||
39 | ######
|
||
40 | |||
41 | def init_model(engine): |
||
42 | """Call me before using any of the tables or classes in the model."""
|
||
43 | |||
44 | DBSession.configure(bind=engine) |
||
45 | # If you are using reflection to introspect your database and create
|
||
46 | # table objects for you, your tables must be defined and mapped inside
|
||
47 | # the init_model function, so that the engine is available if you
|
||
48 | # use the model outside tg2, you need to make sure this is called before
|
||
49 | # you use the model.
|
||
50 | |||
51 | #
|
||
52 | # See the following example:
|
||
53 | |||
54 | #global t_reflected
|
||
55 | |||
56 | #t_reflected = Table("Reflected", metadata,
|
||
57 | # autoload=True, autoload_with=engine)
|
||
58 | |||
59 | #mapper(Reflected, t_reflected)
|
||
60 | __all__= ["auth","dashboard"] |
||
61 | # Import your model modules here.
|
||
62 | from dashboard.model.auth import User, Group, Permission |
||
63 | |||
64 | # Dashboard DB
|
||
65 | from dashboard.model.bdd_dashboard import * |