34 lines
883 B
Python
34 lines
883 B
Python
|
import inspect
|
||
|
from typing import Dict, Iterator, Tuple
|
||
|
|
||
|
from sqlalchemy.dialects import postgresql
|
||
|
|
||
|
from ereuse_devicehub.teal import resource
|
||
|
|
||
|
|
||
|
def compiled(Model, query) -> Tuple[str, Dict[str, str]]:
|
||
|
"""
|
||
|
Generates a SQL statement.
|
||
|
|
||
|
:return A tuple with 1. the SQL statement and 2. the params for it.
|
||
|
"""
|
||
|
c = Model.query.filter(*query).statement.compile(dialect=postgresql.dialect())
|
||
|
return str(c), c.params
|
||
|
|
||
|
|
||
|
def import_resource(module) -> Iterator['resource.Resource']:
|
||
|
"""
|
||
|
Gets the resource classes from the passed-in module.
|
||
|
|
||
|
This method yields subclasses of :class:`teal.resource.Resource`
|
||
|
found in the given module.
|
||
|
"""
|
||
|
|
||
|
for obj in vars(module).values():
|
||
|
if (
|
||
|
inspect.isclass(obj)
|
||
|
and issubclass(obj, resource.Resource)
|
||
|
and obj != resource.Resource
|
||
|
):
|
||
|
yield obj
|