def model_route(model_name): for model in get_template_models(app.config['service']): if model['name'] == model_name: break else: abort(404) return render_template('model.html', model=model)
def build_app(service): """Builds and returns a web app that exposes DDL and ERD. Arguments: service Base URL of the data models service to use. """ # noqa app.config['service'] = service app.config['service_version'] = get_service_version(service) app.config['models'] = get_template_models(service) app.config['dialects'] = get_template_dialects() return app
def version_route(model_name, version_name): for model in get_template_models(app.config['service']): if model['name'] == model_name: break else: abort(404) for version in model['versions']: if version['name'] == version_name: break else: abort(404) return render_template('version.html', model=model, version=version, dialects=app.config['dialects'])
version='auto') try: containers = docker_client.containers(filters={'status': 'running'}) except ConnectionError: containers = [] raise SkipTest('Docker daemon socket not found.') for container in containers: if 'dbhi/data-models-sqlalchemy' in container['Image']: DMSA_AVAILABLE = True ENDPOINTS = [''] for m in get_template_models( os.environ.get('DMSA_TEST_SERVICE') or 'https://data-models-service.research.chop.edu/'): ENDPOINTS.append('%s/' % m['name']) for v in m['versions']: ENDPOINTS.append('%s/%s/' % (m['name'], v['name'])) ENDPOINTS.append('%s/%s/erd/' % (m['name'], v['name'])) ENDPOINTS.append('%s/%s/logging/oracle/' % (m['name'], v['name'])) ENDPOINTS.append('%s/%s/nologging/oracle/' % (m['name'], v['name'])) for d in get_template_dialects(): ENDPOINTS.append('%s/%s/ddl/%s/' %
def index_route(): return render_template('index.html', models=get_template_models(app.config['service']))
def refresh_data_models_template(): """Retrieve the data models from the service and cache them""" get_template_models(app.config['service'], force_refresh=True)
import os from nose.tools import eq_ from dmsa import service from dmsa.utility import get_template_models SERVICE = os.environ.get('DMSA_TEST_SERVICE', 'https://data-models-service.research.chop.edu/') app = service.build_app(SERVICE, refresh_interval=None) app.config['TESTING'] = True test_app = app.test_client() ENDPOINTS = ['/'] for m in get_template_models(SERVICE): ENDPOINTS.append('/%s/' % m['name']) for v in m['versions']: ENDPOINTS.append('/%s/%s/' % (m['name'], v['name'])) ENDPOINTS.append('/%s/%s/erd/' % (m['name'], v['name'])) ENDPOINTS.append('/%s/%s/ddl/sqlite/' % (m['name'], v['name'])) ENDPOINTS.append('/%s/%s/drop/sqlite/' % (m['name'], v['name'])) ENDPOINTS.append('/%s/%s/delete/sqlite/' % (m['name'], v['name'])) for e in ['tables', 'indexes']:
docker_client = docker.Client(base_url='unix://var/run/docker.sock', version='auto') try: containers = docker_client.containers(filters={'status': 'running'}) except ConnectionError: containers = [] raise SkipTest('Docker daemon socket not found.') for container in containers: if 'dbhi/data-models-sqlalchemy' in container['Image']: DMSA_AVAILABLE = True ENDPOINTS = [''] for m in get_template_models(os.environ.get('DMSA_TEST_SERVICE') or 'https://data-models-service.research.chop.edu/'): ENDPOINTS.append('%s/' % m['name']) for v in m['versions']: ENDPOINTS.append('%s/%s/' % (m['name'], v['name'])) ENDPOINTS.append('%s/%s/erd/' % (m['name'], v['name'])) ENDPOINTS.append('%s/%s/logging/oracle/' % (m['name'], v['name'])) ENDPOINTS.append('%s/%s/nologging/oracle/' % (m['name'], v['name'])) for d in get_template_dialects():
import os from nose.tools import eq_ from dmsa import service from dmsa.utility import get_template_models SERVICE = os.environ.get("DMSA_TEST_SERVICE", "https://data-models-service.research.chop.edu/") app = service.build_app(SERVICE) app.config["TESTING"] = True test_app = app.test_client() ENDPOINTS = ["/"] for m in get_template_models(SERVICE): ENDPOINTS.append("/%s/" % m["name"]) for v in m["versions"]: ENDPOINTS.append("/%s/%s/" % (m["name"], v["name"])) ENDPOINTS.append("/%s/%s/erd/" % (m["name"], v["name"])) ENDPOINTS.append("/%s/%s/ddl/sqlite/" % (m["name"], v["name"])) ENDPOINTS.append("/%s/%s/drop/sqlite/" % (m["name"], v["name"])) ENDPOINTS.append("/%s/%s/delete/sqlite/" % (m["name"], v["name"])) for e in ["tables", "indexes"]: ENDPOINTS.append("/%s/%s/ddl/sqlite/%s/" % (m["name"], v["name"], e)) ENDPOINTS.append("/%s/%s/drop/sqlite/%s/" % (m["name"], v["name"], e))
def test_model_creation(): for m in get_template_models(SERVICE): for v in m['versions']: yield check_model_creation, m['name'], v['name'], SERVICE