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
|