From 3b7c35da118ffbf3d8de8dff1af84ff0222c1e71 Mon Sep 17 00:00:00 2001 From: antonygc91 Date: Tue, 30 Sep 2014 10:36:46 -0300 Subject: [PATCH] change db url to ini file --- wscserver/__init__.py | 22 +++++++++++++--------- wscserver/model/__init__.py | 34 ++++++++++++++++++++++++---------- wscserver/view/restfulview.py | 67 +++++++++++++++++++++---------------------------------------------- 3 files changed, 58 insertions(+), 65 deletions(-) diff --git a/wscserver/__init__.py b/wscserver/__init__.py index d3cb764..1c1718c 100644 --- a/wscserver/__init__.py +++ b/wscserver/__init__.py @@ -1,23 +1,27 @@ -from pyramid.config import Configurator -from pyramid_restler import includeme -from sqlalchemy import engine_from_config, create_engine -from sqlalchemy.orm import sessionmaker -from wscserver.config.routing import make_routes -from wscserver.model import initialize_sql, sqlalchemy_url +from sqlalchemy import create_engine +from pyramid_restler import includeme +from pyramid.config import Configurator +from sqlalchemy.orm import sessionmaker +from sqlalchemy import engine_from_config def main(global_config, **settings): """ This function returns a Pyramid WSGI application. """ + + from wscserver.model import initialize_sql + + initialize_sql(settings) config = Configurator(settings=settings) config.scan('wscserver.model') # the "important" line - engine = create_engine(sqlalchemy_url) - initialize_sql(engine) - includeme(config) + from wscserver.config.routing import make_routes + + includeme(config) make_routes(config) config.scan('wscserver') + return config.make_wsgi_app() diff --git a/wscserver/model/__init__.py b/wscserver/model/__init__.py index 0fd6503..46ff0b3 100644 --- a/wscserver/model/__init__.py +++ b/wscserver/model/__init__.py @@ -1,19 +1,33 @@ # from sqlalchemy import engine_from_config -from sqlalchemy.ext.declarative import declarative_base -from sqlalchemy.orm import scoped_session, sessionmaker -from sqlalchemy.engine import create_engine + + from pyramid import config +from sqlalchemy.engine import create_engine from paste.deploy.loadwsgi import appconfig +from sqlalchemy.ext.declarative import declarative_base +from sqlalchemy.orm import scoped_session, sessionmaker + +def initialize_sql(settings): -sqlalchemy_url = 'postgresql://cacic:cacic@localhost/cacic' -DBSession = scoped_session(sessionmaker()) -Base = declarative_base() -engine = create_engine(sqlalchemy_url) -Session = sessionmaker(bind=engine) -session = Session() + global DBSession + global sqlalchemy_url + global DBSession + global Base + global engine + global Session + global session + sqlalchemy_url = settings['sqlalchemy.url'] + DBSession = scoped_session(sessionmaker()) + Base = declarative_base() + engine = create_engine(sqlalchemy_url) + Session = sessionmaker(bind=engine) + session = Session() -def initialize_sql(engine): DBSession.configure(bind=engine) Base.metadata.bind = engine # Base.metadata.create_all(engine) + + + + diff --git a/wscserver/view/restfulview.py b/wscserver/view/restfulview.py index b395e2f..448562d 100644 --- a/wscserver/view/restfulview.py +++ b/wscserver/view/restfulview.py @@ -1,9 +1,7 @@ import json -import hashlib - from pyramid.response import Response from wscserver.model import session - +import zipfile FILE_BEGIN = '{"results":[' FILE_END = '], "result_count": %s}' @@ -33,21 +31,20 @@ FILTER_KEYS = str(tuple(COMPUTER_FILTER.keys())) def viewcoleta(request): - #create index idx_id_computador on computador_coleta(id_computador); + # Please ensure this index exists on database + # CREATE INDEX idx_id_computador ON computador_coleta(id_computador); limit = request.params.get('limit', 'NULL') stmt1 = """ - SELECT - id_computador + SELECT id_computador FROM computador_coleta GROUP BY id_computador LIMIT {}; - """.format(limit) + """.format(limit) computer_ids = session.execute(stmt1) - stmt2 = """ SELECT classe.nm_class_name, cp.nm_property_name, @@ -56,7 +53,7 @@ def viewcoleta(request): INNER JOIN class_property as cp ON (cc.id_class_property = cp.id_class_property) INNER JOIN classe ON (classe.id_class = cp.id_class) - WHERE cc.id_computador = {} AND + WHERE cc.id_computador = {} AND classe.nm_class_name IN {}; """ @@ -80,13 +77,22 @@ def viewcoleta(request): f.write(FILE_END % computer_ids.rowcount) - return Response('ok') - #return Response( - # content_type='application/json', - # content_disposition='filename=coleta.json', - # app_iter=[open('/var/antony/coleta.json', 'rb').read()] - #) + if '1' in tuple(request.params.get('zip')): + with zipfile.ZipFile('/tmp/coleta.zip', 'w') as myzip: + myzip.write('/tmp/coleta.json') + + return Response( + content_type='application/zip', + content_disposition='filename=coleta.zip', + body_file=open('/tmp/coleta.zip', 'rb')) + else: + return Response( + content_type='application/json', + content_disposition='filename=coleta.json', + body_file=open('/tmp/coleta.json')) + + return Response('ok') def build_computer_json(computer_group): @@ -116,34 +122,3 @@ def build_computer_json(computer_group): return json.dumps(computer) -def zipcoleta(): - """Recebe o json da coleta em um arquivo e zipa""" - coleta = requests.get('http://localhost/wscserver/rest/coleta') - - tmpdir = tempfile.gettempdir() - os.chdir(tmpdir) - f = open('coleta.json','r') - arquivozip = 'coleta.zip' - with zipfile.ZipFile(arquivozip, 'w') as myzip: - myzip.write(f.name) - f.close() - os.remove('coleta.json') - filepath = os.path.abspath(arquivozip) - return filepath -''' -def zipcoleta(): - """Recebe o json da coleta em um arquivo e zipa""" - coleta = requests.get('http://localhost/wscserver/rest/coleta') - - path = tempfile.gettempdir() - os.chdir(path) - f = open('coleta.json','w') - f.write(coleta.text) - arquivozip = 'coleta.zip' - with zipfile.ZipFile(arquivozip, 'w') as myzip: - myzip.write(f.name) - f.close() - os.remove('coleta.json') - filepath = os.path.abspath(arquivozip) - return filepath -''' -- libgit2 0.21.2