Let subclass of MasterView override the database Session it uses.
This commit is contained in:
parent
89b443c442
commit
a33b48dde3
|
@ -35,7 +35,6 @@ import formalchemy
|
||||||
from pyramid.renderers import get_renderer, render_to_response
|
from pyramid.renderers import get_renderer, render_to_response
|
||||||
from pyramid.httpexceptions import HTTPFound, HTTPNotFound
|
from pyramid.httpexceptions import HTTPFound, HTTPNotFound
|
||||||
|
|
||||||
from tailbone.db import Session
|
|
||||||
from tailbone.views import View
|
from tailbone.views import View
|
||||||
from tailbone.newgrids import filters, AlchemyGrid, GridAction
|
from tailbone.newgrids import filters, AlchemyGrid, GridAction
|
||||||
from tailbone.forms import AlchemyForm
|
from tailbone.forms import AlchemyForm
|
||||||
|
@ -58,6 +57,15 @@ class MasterView(View):
|
||||||
row_attrs = {}
|
row_attrs = {}
|
||||||
cell_attrs = {}
|
cell_attrs = {}
|
||||||
|
|
||||||
|
@property
|
||||||
|
def Session(self):
|
||||||
|
"""
|
||||||
|
SQLAlchemy scoped session to use when querying the database. Defaults
|
||||||
|
to ``tailbone.db.Session``.
|
||||||
|
"""
|
||||||
|
from tailbone.db import Session
|
||||||
|
return Session
|
||||||
|
|
||||||
##############################
|
##############################
|
||||||
# Available Views
|
# Available Views
|
||||||
##############################
|
##############################
|
||||||
|
@ -413,7 +421,7 @@ class MasterView(View):
|
||||||
override this method; override :meth:`query()` instead.
|
override this method; override :meth:`query()` instead.
|
||||||
"""
|
"""
|
||||||
if session is None:
|
if session is None:
|
||||||
session = Session()
|
session = self.Session()
|
||||||
return self.query(session)
|
return self.query(session)
|
||||||
|
|
||||||
def query(self, session):
|
def query(self, session):
|
||||||
|
@ -453,7 +461,7 @@ class MasterView(View):
|
||||||
doing a database lookup. If the instance cannot be found, raises 404.
|
doing a database lookup. If the instance cannot be found, raises 404.
|
||||||
"""
|
"""
|
||||||
key = self.request.matchdict[self.get_model_key()]
|
key = self.request.matchdict[self.get_model_key()]
|
||||||
instance = Session.query(self.model_class).get(key)
|
instance = self.Session.query(self.model_class).get(key)
|
||||||
if not instance:
|
if not instance:
|
||||||
raise HTTPNotFound()
|
raise HTTPNotFound()
|
||||||
return instance
|
return instance
|
||||||
|
@ -484,7 +492,7 @@ class MasterView(View):
|
||||||
"""
|
"""
|
||||||
Make a FormAlchemy fieldset for the given model instance.
|
Make a FormAlchemy fieldset for the given model instance.
|
||||||
"""
|
"""
|
||||||
kwargs.setdefault('session', Session())
|
kwargs.setdefault('session', self.Session())
|
||||||
kwargs.setdefault('request', self.request)
|
kwargs.setdefault('request', self.request)
|
||||||
fieldset = formalchemy.FieldSet(instance, **kwargs)
|
fieldset = formalchemy.FieldSet(instance, **kwargs)
|
||||||
fieldset.prettify = prettify
|
fieldset.prettify = prettify
|
||||||
|
@ -525,8 +533,8 @@ class MasterView(View):
|
||||||
"""
|
"""
|
||||||
# Flush immediately to force any pending integrity errors etc.; that
|
# Flush immediately to force any pending integrity errors etc.; that
|
||||||
# way we don't set flash message until we know we have success.
|
# way we don't set flash message until we know we have success.
|
||||||
Session.delete(instance)
|
self.Session.delete(instance)
|
||||||
Session.flush()
|
self.Session.flush()
|
||||||
|
|
||||||
def get_after_delete_url(self, instance):
|
def get_after_delete_url(self, instance):
|
||||||
"""
|
"""
|
||||||
|
|
Loading…
Reference in a new issue