Commit 042b876846297ce1a1f32149c97782b1b17932ad

Authored by Eduardo Santos
0 parents
Exists in master

Merge do Super Gerente para trunk

git-svn-id: http://svn.softwarepublico.gov.br/svn/cacic/cacic/trunk/integrador@1607 fecfc0c7-e812-0410-ae72-849f08638ee7
CHANGES.txt 0 → 100644
  1 +++ a/CHANGES.txt
... ... @@ -0,0 +1,4 @@
  1 +0.0
  2 +---
  3 +
  4 +- Initial version
... ...
MANIFEST.in 0 → 100644
  1 +++ a/MANIFEST.in
... ... @@ -0,0 +1,2 @@
  1 +include *.txt *.ini *.cfg *.rst
  2 +recursive-include wscserver *.ico *.png *.css *.gif *.jpg *.pt *.txt *.mak *.mako *.js *.html *.xml
... ...
README.txt 0 → 100644
  1 +++ a/README.txt
... ... @@ -0,0 +1,14 @@
  1 +WSCServer README
  2 +==================
  3 +
  4 +Getting Started
  5 +---------------
  6 +
  7 +- cd <directory containing this file>
  8 +
  9 +- $venv/bin/python setup.py develop
  10 +
  11 +- $venv/bin/initialize_WSCServer_db development.ini
  12 +
  13 +- $venv/bin/pserve development.ini
  14 +
... ...
TODO.txt 0 → 100644
  1 +++ a/TODO.txt
... ... @@ -0,0 +1 @@
  1 +Aumentar as classes que faltarem no json_base conforme as coletas acontecem
... ...
coleta.txt 0 → 100644
  1 +++ a/coleta.txt
... ... @@ -0,0 +1,65 @@
  1 +{
  2 + "System": {
  3 + "classeWMI": {
  4 + "Win32_BaseBoard": {
  5 + "label": "Win32_BaseBoard",
  6 + "classeAtributos": {
  7 + "Caption": "Placa Base",
  8 + "Description": "Placa Base",
  9 + "Manufacturer": "asus"
  10 + }
  11 + }
  12 + }
  13 + },
  14 + "data_coleta": "14/10/2013"
  15 +}
  16 +
  17 +Geral
  18 +Win32_ComputerSystem: principal
  19 + Caption;
  20 + Domain;
  21 + UserName?;
  22 +Win32_NetworkAdapterConfiguration
  23 + IPAddress;
  24 + MACAddress;
  25 +Win32_OperatingSystem
  26 + Caption;
  27 + CSDVersion;
  28 +
  29 +Hardware
  30 +
  31 +Win32_Keyboard
  32 + Manufacturer;
  33 + Name;
  34 +Win32_PointingDevice
  35 + Manufacturer;
  36 + Name;
  37 +Win32_PhysicalMedia
  38 + Name;
  39 + Status;
  40 + Manufacturer;
  41 + Capacity;
  42 +Win32_BaseBoard
  43 + Manufacturer;
  44 + Model;
  45 + Name;
  46 +Win32_PhysicalMemory
  47 + Capacity;
  48 + Manufacturer;
  49 +Win32_Processor
  50 + Architecture;
  51 + Manufacturer;
  52 + Name;
  53 + NumberOfCores?;
  54 +Win32_Printer
  55 + Name;
  56 + Network;
  57 + ServerName?;
  58 + Shared;
  59 +Win32_DesktopMonitor
  60 + DisplayType?;
  61 + MonitorManufacturer?;
  62 + MonitorType?;
  63 + Name;
  64 + ScreenHeight?;
  65 + ScreenWidth?;
0 66 \ No newline at end of file
... ...
development.ini 0 → 100644
  1 +++ a/development.ini
... ... @@ -0,0 +1,49 @@
  1 +[app:main]
  2 +use = egg:WSCServer
  3 +
  4 +pyramid.reload_templates = true
  5 +pyramid.debug_authorization = false
  6 +pyramid.debug_notfound = false
  7 +pyramid.debug_routematch = false
  8 +pyramid.default_locale_name = en
  9 +pyramid.includes =
  10 + pyramid_tm
  11 +
  12 +sqlalchemy.url = postgresql://rest:rest@10.209.8.39/cacic
  13 +
  14 +[server:main]
  15 +use = egg:waitress#main
  16 +host = 0.0.0.0
  17 +port = 6543
  18 +
  19 +[loggers]
  20 +keys = root, wscserver, sqlalchemy
  21 +
  22 +[handlers]
  23 +keys = console
  24 +
  25 +[formatters]
  26 +keys = generic
  27 +
  28 +[logger_root]
  29 +level = INFO
  30 +handlers = console
  31 +
  32 +[logger_wscserver]
  33 +level = DEBUG
  34 +handlers =
  35 +qualname = wscserver
  36 +
  37 +[logger_sqlalchemy]
  38 +level = INFO
  39 +handlers =
  40 +qualname = sqlalchemy.engine
  41 +
  42 +[handler_console]
  43 +class = StreamHandler
  44 +args = (sys.stderr,)
  45 +level = NOTSET
  46 +formatter = generic
  47 +
  48 +[formatter_generic]
  49 +format = %(asctime)s %(levelname)-5.5s [%(name)s][%(threadName)s] %(message)s
... ...
production.ini 0 → 100644
  1 +++ a/production.ini
... ... @@ -0,0 +1,49 @@
  1 +[app:main]
  2 +use = egg:WSCServer
  3 +
  4 +pyramid.reload_templates = false
  5 +pyramid.debug_authorization = false
  6 +pyramid.debug_notfound = false
  7 +pyramid.debug_routematch = false
  8 +pyramid.default_locale_name = en
  9 +pyramid.includes =
  10 + pyramid_tm
  11 +
  12 +sqlalchemy.url = postgresql://rest:rest@10.209.8.39/cacic
  13 +
  14 +[server:main]
  15 +use = egg:waitress#main
  16 +host = 0.0.0.0
  17 +port = 6543
  18 +
  19 +[loggers]
  20 +keys = root, wscserver, sqlalchemy
  21 +
  22 +[handlers]
  23 +keys = console
  24 +
  25 +[formatters]
  26 +keys = generic
  27 +
  28 +[logger_root]
  29 +level = WARN
  30 +handlers = console
  31 +
  32 +[logger_wscserver]
  33 +level = WARN
  34 +handlers =
  35 +qualname = wscserver
  36 +
  37 +[logger_sqlalchemy]
  38 +level = WARN
  39 +handlers =
  40 +qualname = sqlalchemy.engine
  41 +
  42 +[handler_console]
  43 +class = StreamHandler
  44 +args = (sys.stderr,)
  45 +level = NOTSET
  46 +formatter = generic
  47 +
  48 +[formatter_generic]
  49 +format = %(asctime)s %(levelname)-5.5s [%(name)s][%(threadName)s] %(message)s
... ...
setup.cfg 0 → 100644
  1 +++ a/setup.cfg
... ... @@ -0,0 +1,27 @@
  1 +[nosetests]
  2 +match=^test
  3 +nocapture=1
  4 +cover-package=wscserver
  5 +with-coverage=1
  6 +cover-erase=1
  7 +
  8 +[compile_catalog]
  9 +directory = wscserver/locale
  10 +domain = WSCServer
  11 +statistics = true
  12 +
  13 +[extract_messages]
  14 +add_comments = TRANSLATORS:
  15 +output_file = wscserver/locale/WSCServer.pot
  16 +width = 80
  17 +
  18 +[init_catalog]
  19 +domain = WSCServer
  20 +input_file = wscserver/locale/WSCServer.pot
  21 +output_dir = wscserver/locale
  22 +
  23 +[update_catalog]
  24 +domain = WSCServer
  25 +input_file = wscserver/locale/WSCServer.pot
  26 +output_dir = wscserver/locale
  27 +previous = true
... ...
setup.py 0 → 100644
  1 +++ a/setup.py
... ... @@ -0,0 +1,50 @@
  1 +import os
  2 +
  3 +from setuptools import setup, find_packages
  4 +
  5 +here = os.path.abspath(os.path.dirname(__file__))
  6 +README = open(os.path.join(here, 'README.txt')).read()
  7 +CHANGES = open(os.path.join(here, 'CHANGES.txt')).read()
  8 +
  9 +requires = [
  10 + 'pyramid',
  11 + 'SQLAlchemy',
  12 + 'transaction',
  13 + 'pyramid_tm',
  14 + 'pyramid_debugtoolbar',
  15 + 'zope.sqlalchemy',
  16 + 'waitress',
  17 + 'psycopg2',
  18 + 'pyramid_restler',
  19 + 'requests',
  20 + 'chameleon'
  21 +]
  22 +
  23 +setup(name='WSCServer',
  24 + version='0.1',
  25 + description='WSCServer',
  26 + long_description=README + '\n\n' + CHANGES,
  27 + classifiers=[
  28 + "Development Status :: 2 - Pre-Alpha",
  29 + "Programming Language :: Python :: 3.2",
  30 + "License :: OSI Approved :: GNU General Public License v2 (GPLv2)",
  31 + "Framework :: Pyramid",
  32 + "Topic :: Internet :: WWW/HTTP",
  33 + "Topic :: Internet :: WWW/HTTP :: WSGI :: Application",
  34 + ],
  35 + author='Lightbase',
  36 + author_email='pedro.ricardo@lighbase.com.br',
  37 + url='',
  38 + keywords='rest lightbase json cacic pyramid',
  39 + packages=find_packages(),
  40 + include_package_data=True,
  41 + zip_safe=False,
  42 + test_suite='wscserver',
  43 + install_requires=requires,
  44 + entry_points="""\
  45 + [paste.app_factory]
  46 + main = wscserver:main
  47 + [console_scripts]
  48 + initialize_WSCServer_db = wscserver.scripts.initializedb:main
  49 + """
  50 + )
0 51 \ No newline at end of file
... ...
wscserver/__init__.py 0 → 100644
  1 +++ a/wscserver/__init__.py
... ... @@ -0,0 +1,23 @@
  1 +from pyramid.config import Configurator
  2 +from pyramid_restler import includeme
  3 +
  4 +from sqlalchemy import engine_from_config, create_engine
  5 +from sqlalchemy.orm import sessionmaker
  6 +
  7 +from wscserver.config.routing import make_routes
  8 +from wscserver.model import initialize_sql, sqlalchemy_url
  9 +
  10 +
  11 +def main(global_config, **settings):
  12 + """
  13 + This function returns a Pyramid WSGI application.
  14 + """
  15 + config = Configurator(settings=settings)
  16 + config.scan('wscserver.model') # the "important" line
  17 + engine = create_engine(sqlalchemy_url)
  18 + initialize_sql(engine)
  19 + includeme(config)
  20 +
  21 + make_routes(config)
  22 + config.scan('wscserver')
  23 + return config.make_wsgi_app()
... ...
wscserver/config/__init__.py 0 → 100644
  1 +++ a/wscserver/config/__init__.py
... ...
wscserver/config/routing.py 0 → 100644
  1 +++ a/wscserver/config/routing.py
... ... @@ -0,0 +1,15 @@
  1 +from wscserver.model.Coleta import ColetaContextFactory
  2 +from wscserver.view.restfulview import CustomRESTfulView
  3 +from wscserver.model.So import SoContextFactory
  4 +
  5 +def make_routes(config):
  6 + """
  7 + Cria rotas
  8 + """
  9 + config.add_static_view('static', 'static', cache_max_age=3600)
  10 + config.add_restful_routes(
  11 + 'rest/coleta', ColetaContextFactory, view=CustomRESTfulView)
  12 + config.add_restful_routes('rest/coleta2', ColetaContextFactory)
  13 + config.add_route('download','zip/coleta')
  14 + config.add_restful_routes('rest/so', SoContextFactory)
  15 + config.enable_POST_tunneling()
... ...
wscserver/model/Acao.py 0 → 100644
  1 +++ a/wscserver/model/Acao.py
... ... @@ -0,0 +1,66 @@
  1 +from pyramid_restler.model import SQLAlchemyORMContext
  2 +
  3 +from sqlalchemy import Table
  4 +from sqlalchemy.orm import mapper
  5 +from sqlalchemy.schema import Column
  6 +from sqlalchemy.types import *
  7 +from wscserver.model import Base, session
  8 +
  9 +
  10 +class Acao():
  11 +
  12 + """
  13 + Classe que define a tabela 'acao'
  14 +
  15 + """
  16 +
  17 + __tablename__ = 'acao'
  18 + id_acao = Column(String(30), primary_key=True, nullable=False)
  19 + te_descricao_breve = Column(String(100))
  20 + te_descricao = Column(String)
  21 + te_nome_curto_modulo = Column(String(20))
  22 + dt_hr_alteracao = Column(DateTime(timezone=False))
  23 + cs_opcional = Column(String(1), nullable=False)
  24 +
  25 + def __init__(self, id_acao, te_descricao_breve, te_descricao,
  26 + te_nome_curto_modulo, dt_hr_alteracao, cs_opcional):
  27 + """
  28 + Metodo que chama as colunas
  29 + """
  30 + self.id_acao = id_acao
  31 + self.te_descricao_breve = te_descricao_breve
  32 + self.te_descricao = te_descricao
  33 + self.te_nome_curto_modulo = te_nome_curto_modulo
  34 + self.dt_hr_alteracao = dt_hr_alteracao
  35 + self.cs_opcional = cs_opcional
  36 +
  37 + def __repr__(self):
  38 + """
  39 + Metodo que passa a lista de parametros da classe
  40 + """
  41 + return "<Acao('%s, %s, %s, %s, %s, %s')>" % (self.id_acao,
  42 + self.te_descricao_breve,
  43 + self.te_descricao,
  44 + self.te_nome_curto_modulo,
  45 + self.dt_hr_alteracao,
  46 + self.cs_opcional
  47 + )
  48 +
  49 +
  50 +class AcaoContextFactory(SQLAlchemyORMContext):
  51 + entity = Acao
  52 +
  53 + def session_factory(self):
  54 + return session
  55 +
  56 +acao = Table('acao', Base.metadata,
  57 + Column('id_acao', String(30), primary_key=True, nullable=False),
  58 + Column('te_descricao_breve', String(100)),
  59 + Column('te_descricao', String),
  60 + Column('te_nome_curto_modulo', String(20)),
  61 + Column('dt_hr_alteracao', DateTime(timezone=False)),
  62 + Column('cs_opcional', String(1), nullable=False),
  63 + extend_existing=True
  64 + )
  65 +
  66 +mapper(Acao, acao)
... ...
wscserver/model/AcaoExcecao.py 0 → 100644
  1 +++ a/wscserver/model/AcaoExcecao.py
... ... @@ -0,0 +1,59 @@
  1 +from pyramid_restler.model import SQLAlchemyORMContext
  2 +
  3 +from sqlalchemy import Table, ForeignKey
  4 +from sqlalchemy.orm import mapper
  5 +from sqlalchemy.schema import Column
  6 +from sqlalchemy.types import *
  7 +from wscserver.model import Base, session
  8 +
  9 +
  10 +class AcaoExcecao():
  11 +
  12 + """
  13 + Classe que define a tabela 'acao_excecao'
  14 +
  15 + """
  16 +
  17 + __tablename__ = 'acao_excecao'
  18 + id_acao_excecao = Column(Integer, primary_key=True, nullable=False)
  19 + te_node_address = Column(String(17), nullable=False)
  20 + id_acao = Column(String(30), ForeignKey('acao.id_acao'))
  21 + id_rede = Column(Integer, ForeignKey('rede.id_rede'))
  22 +
  23 + def __init__(self, te_node_address, id_acao, id_rede):
  24 + """
  25 + Metodo que chama as colunas
  26 +
  27 + """
  28 +
  29 + self.te_node_address = te_node_address
  30 + self.id_acao = id_acao
  31 + self.id_rede = id_rede
  32 +
  33 + def __repr__(self):
  34 + """
  35 + Metodo que passa a lista de parametros da classe
  36 +
  37 + """
  38 + return "<AcaoExcecao('%s, %s, %s')>" % (self.te_node_address,
  39 + self.id_acao,
  40 + self.id_rede,
  41 + )
  42 +
  43 +
  44 +class AcaoExcecaoContextFactory(SQLAlchemyORMContext):
  45 + entity = AcaoExcecao
  46 +
  47 + def session_factory(self):
  48 + return session
  49 +
  50 +acao_excecao = Table('acaoExcecao', Base.metadata,
  51 + Column('id_acao_excecao', Integer, primary_key=True,
  52 + nullable=True),
  53 + Column('te_node_address', String(17), nullable=False),
  54 + Column('id_acao', String(30), ForeignKey('acao.id_acao')),
  55 + Column('id_rede', Integer, ForeignKey('rede.id_rede')),
  56 + extend_existing=True
  57 + )
  58 +
  59 +mapper(AcaoExcecao, acao_excecao)
... ...
wscserver/model/AcaoRede.py 0 → 100644
  1 +++ a/wscserver/model/AcaoRede.py
... ... @@ -0,0 +1,57 @@
  1 +from pyramid_restler.model import SQLAlchemyORMContext
  2 +from sqlalchemy import Table, ForeignKey
  3 +from sqlalchemy.orm import mapper, relationship, backref
  4 +from sqlalchemy.schema import Column
  5 +from sqlalchemy.types import *
  6 +from wscserver.model import Base, session
  7 +from sqlalchemy.ext.declarative import declarative_base
  8 +
  9 +
  10 +class AcaoRede():
  11 +
  12 + """
  13 + Classe que define a tabela 'acao_rede'
  14 + """
  15 +
  16 + __tablename__ = 'acao_rede'
  17 + id_acao_rede = Column(Integer, primary_key=True, nullable=False)
  18 + id_acao = Column(String(30), ForeignKey('acao.id_acao'))
  19 + id_rede = Column(Integer, ForeignKey('rede.id_rede'))
  20 + dt_hr_coleta_forcada = Column(DateTime(timezone=False))
  21 +
  22 + def __init__(self, id_acao, id_rede, dt_hr_coleta_forcada):
  23 + """
  24 + Metodo que chama as colunas
  25 + """
  26 + self.id_acao_rede = id_acao_rede
  27 + self.id_acao = id_acao
  28 + self.id_rede = id_rede
  29 + self.dt_hr_coleta_forcada = dt_hr_coleta_forcada
  30 +
  31 + def __repr__(self):
  32 + """
  33 + Metodo que passa a lista de parametros da classe
  34 + """
  35 + return "<AcaoRede('%s, %s, %s, %s')>" % (self.id_acao_rede,
  36 + self.id_acao,
  37 + self.id_rede,
  38 + self.dt_hr_coleta_forcada
  39 + )
  40 +
  41 +
  42 +class AcaoRedeContextFactory(SQLAlchemyORMContext):
  43 + entity = AcaoRede
  44 +
  45 + def session_factory(self):
  46 + return session
  47 +
  48 +acao_rede = Table('acao_rede', Base.metadata,
  49 + Column('id_acao_rede', Integer, primary_key=True,
  50 + nullable=False),
  51 + Column('id_acao', ForeignKey('acao.id_acao')),
  52 + Column('id_rede', ForeignKey('rede.id_rede')),
  53 + Column('dt_hr_coleta_forcada', DateTime(timezone=False)),
  54 + extend_existing=True
  55 + )
  56 +
  57 +mapper(AcaoRede, acao_rede)
... ...
wscserver/model/AcaoSo.py 0 → 100644
  1 +++ a/wscserver/model/AcaoSo.py
... ... @@ -0,0 +1,55 @@
  1 +from pyramid_restler.model import SQLAlchemyORMContext
  2 +from sqlalchemy import Table, ForeignKey
  3 +from sqlalchemy.orm import mapper, relationship, backref
  4 +from sqlalchemy.schema import Column
  5 +from sqlalchemy.types import *
  6 +from sqlalchemy.ext.declarative import declarative_base
  7 +from wscserver.model import Base, session
  8 +
  9 +
  10 +class AcaoSo():
  11 +
  12 + """
  13 + Classe que define a tabela 'acao_so'
  14 +
  15 + """
  16 + __tablename__ = 'acao_so'
  17 + id_acao_so = Column(Integer, primary_key=True, nullable=False)
  18 + id_acao = Column(String(30), ForeignKey('acao.id_acao'))
  19 + id_rede = Column(Integer, ForeignKey('rede.id_rede'))
  20 + id_so = Column(Integer, ForeignKey('so.id_so'))
  21 +
  22 + def __init__(self, id_acao_so, id_acao, id_rede, id_so):
  23 + """
  24 + Metodo que chama as colunas
  25 + """
  26 + self.id_acao_so = id_acao_so
  27 + self.id_acao = id_acao
  28 + self.id_rede = id_rede
  29 + self.id_so = id_so
  30 +
  31 + def __repr__(self):
  32 + """
  33 + Metodo que passa a lista de parametros da classe
  34 + """
  35 + return "<AcaoSo('%s, %s, %s, %s')>" % (self.id_acao_so,
  36 + self.id_acao,
  37 + self.id_rede,
  38 + self.id_so
  39 + )
  40 +
  41 +
  42 +class AcaoSoContextFactory(SQLAlchemyORMContext):
  43 + entity = AcaoSo
  44 +
  45 + def session_factory(self):
  46 + return session
  47 +
  48 +acao_so = Table('acao_so', Base.metadata,
  49 + Column('id_acao_so', Integer, primary_key=True,
  50 + nullable=False),
  51 + Column('id_acao', String(30), ForeignKey("acao.id_acao")),
  52 + Column('id_rede', Integer, ForeignKey("rede.id_rede")),
  53 + Column('id_so', Integer, ForeignKey("so.id_so")),
  54 + )
  55 +mapper(AcaoSo, acao_so)
... ...
wscserver/model/Aplicativo.py 0 → 100644
  1 +++ a/wscserver/model/Aplicativo.py
... ... @@ -0,0 +1,141 @@
  1 +from pyramid_restler.model import SQLAlchemyORMContext
  2 +
  3 +from sqlalchemy import Table, ForeignKey
  4 +from sqlalchemy.orm import mapper
  5 +from sqlalchemy.schema import Column
  6 +from sqlalchemy.types import *
  7 +from wscserver.model import Base, session
  8 +
  9 +
  10 +class Aplicativo():
  11 +
  12 + """
  13 + Classe que define a tabela 'aplicativo'
  14 +
  15 + """
  16 +
  17 + __tablename__ = 'aplicativo'
  18 + id_aplicativo = Column(Integer, primary_key=True, nullable=False)
  19 + id_so = Column(Integer, ForeignKey('so.id_so'))
  20 + nm_aplicativo = Column(String(100), nullable=False)
  21 + cs_car_inst_w9x = Column(String(2))
  22 + te_car_inst_w9x = Column(String(255))
  23 + cs_car_ver_w9x = Column(String(2))
  24 + te_car_ver_w9x = Column(String(255))
  25 + cs_car_inst_wnt = Column(String(2))
  26 + te_car_inst_wnt = Column(String(255))
  27 + cs_car_ver_wnt = Column(String(2))
  28 + te_car_ver_wnt = Column(String(255))
  29 + cs_ide_licenca = Column(String(2))
  30 + te_ide_licenca = Column(String(255))
  31 + dt_atualizacao = Column(DateTime(timezone=False))
  32 + te_arq_ver_eng_w9x = Column(String(100))
  33 + te_arq_ver_pat_w9x = Column(String(100))
  34 + te_arq_ver_eng_wnt = Column(String(100))
  35 + te_arq_ver_pat_wnt = Column(String(100))
  36 + te_dir_padrao_w9x = Column(String(100))
  37 + te_dir_padrao_wnt = Column(String(100))
  38 + te_descritivo = Column(String)
  39 + in_disponibiliza_info = Column(String(1), nullable=False)
  40 + in_disponibiliza_info_usuario_comum = Column(String(1), nullable=False)
  41 + dt_registro = Column(DateTime(timezone=False))
  42 +
  43 + def __init__(self,):
  44 + """
  45 + Metodo que chama as colunas
  46 + """
  47 + self.id_aplicativo = id_aplicativo
  48 + self.id_so = id_so
  49 + self.nm_aplicativo = nm_aplicativo
  50 + self.cs_car_inst_w9x = cs_car_inst_w9x
  51 + self.te_car_inst_w9x = te_car_inst_w9x
  52 + self.cs_car_ver_w9x = cs_car_ver_w9x
  53 + self.te_car_ver_w9x = te_car_ver_w9x
  54 + self.cs_car_inst_wnt = cs_car_inst_wnt
  55 + self.te_car_inst_wnt = te_car_inst_wnt
  56 + self.cs_car_ver_wnt = cs_car_ver_wnt
  57 + self.te_car_ver_wnt = te_car_ver_wnt
  58 + self.cs_ide_licenca = cs_ide_licenca
  59 + self.te_ide_licenca = te_ide_licenca
  60 + self.dt_atualizacao = dt_atualizacao
  61 + self.te_arq_ver_eng_w9x = te_arq_ver_eng_w9x
  62 + self.te_arq_ver_pat_w9x = te_arq_ver_pat_w9x
  63 + self.te_arq_ver_eng_wnt = te_arq_ver_eng_wnt
  64 + self.te_arq_ver_pat_wnt = te_arq_ver_pat_wnt
  65 + self.te_dir_padrao_w9x = te_dir_padrao_w9x
  66 + self.te_dir_padrao_wnt = te_dir_padrao_wnt
  67 + self.te_descritivo = te_descritivo
  68 + self.in_disponibiliza_info = in_disponibiliza_info
  69 + self.in_disponibiliza_info_usuario_comum = in_disponibiliza_info_usuario_comum
  70 + self.dt_registro = dt_registro
  71 +
  72 + def __repr__(self):
  73 + """
  74 + Metodo que passa a lista de parametros da classe
  75 + """
  76 + return "<Aplicativo('%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s,\
  77 + %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s')>"\
  78 + % (self.id_aplicativo,
  79 + self.id_so,
  80 + self.nm_aplicativo,
  81 + self.cs_car_inst_w9x,
  82 + self.te_car_inst_w9x,
  83 + self.cs_car_ver_w9x,
  84 + self.te_car_ver_w9x,
  85 + self.cs_car_inst_wnt,
  86 + self.te_car_inst_wnt,
  87 + self.cs_car_ver_wnt,
  88 + self.te_car_ver_wnt,
  89 + self.cs_ide_licenca,
  90 + self.te_ide_licenca,
  91 + self.dt_atualizacao,
  92 + self.te_arq_ver_eng_w9x,
  93 + self.te_arq_ver_pat_w9x,
  94 + self.te_arq_ver_eng_wnt,
  95 + self.te_arq_ver_pat_wnt,
  96 + self.te_dir_padrao_w9x,
  97 + self.te_dir_padrao_wnt,
  98 + self.te_descritivo,
  99 + self.in_disponibiliza_info,
  100 + self.in_disponibiliza_info_usuario_comum,
  101 + self.dt_registro
  102 + )
  103 +
  104 +
  105 +class AplicativoContextFactory(SQLAlchemyORMContext):
  106 + entity = Aplicativo
  107 +
  108 + def session_factory(self):
  109 + return session
  110 +
  111 +aplicativo = Table('aplicativo', Base.metadata,
  112 + Column('id_aplicativo', Integer, primary_key=True,
  113 + nullable=False),
  114 + Column('id_so', Integer, ForeignKey('so.id_so')),
  115 + Column('nm_aplicativo', String(100), nullable=False),
  116 + Column('cs_car_inst_w9x', String(2)),
  117 + Column('te_car_inst_w9x', String(255)),
  118 + Column('cs_car_ver_w9x', String(2)),
  119 + Column('te_car_ver_w9x', String(255)),
  120 + Column('cs_car_inst_wnt', String(2)),
  121 + Column('te_car_inst_wnt', String(255)),
  122 + Column('cs_car_ver_wnt', String(2)),
  123 + Column('te_car_ver_wnt', String(255)),
  124 + Column('cs_ide_licenca', String(2)),
  125 + Column('te_ide_licenca', String(255)),
  126 + Column('dt_atualizacao', DateTime(timezone=False)),
  127 + Column('te_arq_ver_eng_w9x', String(100)),
  128 + Column('te_arq_ver_pat_w9x', String(100)),
  129 + Column('te_arq_ver_eng_wnt', String(100)),
  130 + Column('te_arq_ver_pat_wnt', String(100)),
  131 + Column('te_dir_padrao_w9x', String(100)),
  132 + Column('te_dir_padrao_wnt', String(100)),
  133 + Column('te_descritivo', String),
  134 + Column('in_disponibiliza_info', String(1), nullable=False),
  135 + Column('in_disponibiliza_info_usuario_comum', String(1),
  136 + nullable=False),
  137 + Column('dt_registro', DateTime(timezone=False)),
  138 + extend_existing=True
  139 + )
  140 +
  141 +mapper(Aplicativo, aplicativo)
... ...
wscserver/model/AplicativoRede.py 0 → 100644
  1 +++ a/wscserver/model/AplicativoRede.py
... ... @@ -0,0 +1,53 @@
  1 +from pyramid_restler.model import SQLAlchemyORMContext
  2 +
  3 +from sqlalchemy import Table, ForeignKey
  4 +from sqlalchemy.orm import mapper
  5 +from sqlalchemy.schema import Column
  6 +from sqlalchemy.types import *
  7 +from wscserver.model import Base, session
  8 +
  9 +
  10 +class AplicativoRede():
  11 +
  12 + """
  13 + Classe que define a tabela 'aplicativo_rede'
  14 +
  15 + """
  16 +
  17 + __tablename__ = 'aplicativo_rede'
  18 + id_rede = Column(Integer, ForeignKey('rede.id_rede'), primary_key=True)
  19 + id_aplicativo = Column(Integer, ForeignKey('aplicativo.id_aplicativo'),
  20 + primary_key=True)
  21 +
  22 + def __init__(self, id_rede, id_aplicativo):
  23 + """
  24 + Metodo que chama as colunas
  25 + """
  26 + self.id_rede = id_rede
  27 + self.id_aplicativo = id_aplicativo
  28 +
  29 + def __repr__(self):
  30 + """
  31 + Metodo que passa a lista de parametros da classe
  32 + """
  33 + return "<AplicativoRede('%s, %s')>" % (self.id_rede,
  34 + self.id_aplicativo
  35 + )
  36 +
  37 +
  38 +class AplicativoRedeContextFactory(SQLAlchemyORMContext):
  39 + entity = AplicativoRede
  40 +
  41 + def session_factory(self):
  42 + return session
  43 +
  44 +aplicativo_rede = Table('aplicativoRede', Base.metadata,
  45 + Column('id_rede', Integer, ForeignKey('rede.id_rede'),
  46 + primary_key=True),
  47 + Column('id_aplicativo', Integer,
  48 + ForeignKey('aplicativo.id_aplicativo'),
  49 + primary_key=True),
  50 + extend_existing=True
  51 + )
  52 +
  53 +mapper(AplicativoRede, aplicativo_rede)
... ...
wscserver/model/Coleta.py 0 → 100644
  1 +++ a/wscserver/model/Coleta.py
... ... @@ -0,0 +1,91 @@
  1 +from pyramid_restler.model import SQLAlchemyORMContext
  2 +
  3 +from sqlalchemy.ext.declarative import declarative_base
  4 +from sqlalchemy.orm import column_property, mapper, join
  5 +from sqlalchemy.schema import ForeignKey, Column, Table
  6 +from sqlalchemy.types import *
  7 +
  8 +from wscserver.model import Base, session
  9 +
  10 +
  11 +computador_coleta_historico = Table(
  12 + 'computador_coleta_historico', Base.metadata,
  13 + Column('id_computador_coleta_historico',
  14 + Integer, primary_key=True, nullable=False),
  15 + Column('id_computador_coleta', Integer,
  16 + ForeignKey('computador_coleta.id_computador_coleta')),
  17 + Column('dt_hr_inclusao', DateTime(timezone=False), nullable=False)
  18 +)
  19 +
  20 +computador_coleta = Table('computador_coleta', Base.metadata,
  21 + Column('id_computador_coleta', Integer,
  22 + primary_key=True, nullable=False),
  23 + Column('id_computador', Integer),
  24 + Column('id_class_property', Integer,
  25 + ForeignKey(
  26 + 'class_property.id_class_property')),
  27 + Column('te_class_property_value',
  28 + String, nullable=False),
  29 + )
  30 +
  31 +class_property = Table('class_property', Base.metadata,
  32 + Column('id_class_property', Integer, nullable=False),
  33 + Column('id_class', Integer,
  34 + ForeignKey('classe.id_class')),
  35 + Column('nm_property_name', String, nullable=False),
  36 + )
  37 +
  38 +classe = Table('classe', Base.metadata,
  39 + Column('id_class', Integer, primary_key=True, nullable=False),
  40 + Column('nm_class_name', String, nullable=False),
  41 + )
  42 +
  43 +
  44 +classe_and_class_property = join(classe, class_property)
  45 +pc_coleta_and_classe_and_class_property = join(
  46 + computador_coleta, classe_and_class_property)
  47 +coleta = join(computador_coleta_historico,
  48 + pc_coleta_and_classe_and_class_property)
  49 +
  50 +
  51 +class ClasseAndClassProperty(Base):
  52 +
  53 + """Classe de join entre 'classe' e 'class_property'"""
  54 + __table__ = classe_and_class_property
  55 + id_class = column_property(classe.c.id_class, class_property.c.id_class)
  56 +
  57 +
  58 +class PcColetaAndClasseAndClassProperty(Base):
  59 +
  60 + """
  61 + Classe de join entre 'computador_coleta' e
  62 + 'classe_and_class_property'
  63 + """
  64 + __table__ = pc_coleta_and_classe_and_class_property
  65 + id_class = column_property(classe.c.id_class, class_property.c.id_class)
  66 + id_computador_coleta = column_property(
  67 + computador_coleta.c.id_computador_coleta,
  68 + computador_coleta_historico.c.id_computador_coleta)
  69 + id_class_property = column_property(class_property.c.id_class_property,
  70 + computador_coleta.c.id_class_property)
  71 +
  72 +
  73 +class Coleta(Base):
  74 +
  75 + """Classe de join entre as quatro tabelas"""
  76 + __table__ = coleta
  77 + id_class = column_property(classe.c.id_class, class_property.c.id_class)
  78 + id_class_property = column_property(class_property.c.id_class_property,
  79 + computador_coleta.c.id_class_property)
  80 + id_computador_coleta = column_property(
  81 + computador_coleta.c.id_computador_coleta,
  82 + computador_coleta_historico.c.id_computador_coleta)
  83 +
  84 +
  85 +class ColetaContextFactory(SQLAlchemyORMContext):
  86 + entity = Coleta
  87 +
  88 + def session_factory(self):
  89 + return session
  90 +
  91 +# mapper(Coleta, coleta)
... ...
wscserver/model/Computador.py 0 → 100644
  1 +++ a/wscserver/model/Computador.py
... ... @@ -0,0 +1,129 @@
  1 +from pyramid_restler.model import SQLAlchemyORMContext
  2 +
  3 +from sqlalchemy import Table, ForeignKey
  4 +from sqlalchemy.orm import mapper
  5 +from sqlalchemy.schema import Column
  6 +from sqlalchemy.types import *
  7 +from wscserver.model import Base, session
  8 +
  9 +
  10 +class Computador():
  11 +
  12 + """
  13 + Classe que define a tabela 'computador'
  14 +
  15 + """
  16 + __tablename__ = 'computador'
  17 + id_computador = Column(Integer, primary_key=True, nullable=False)
  18 + id_usuario_exclusao = Column(Integer)
  19 + id_so = Column(Integer, ForeignKey('so.id_so'))
  20 + id_rede = Column(Integer, ForeignKey('rede.id_rede'))
  21 + nm_computador = Column(String(50))
  22 + te_node_address = Column(String(17), nullable=False)
  23 + te_ip_computador = Column(String(15))
  24 + dt_hr_inclusao = Column(DateTime(timezone=False))
  25 + dt_hr_exclusao = Column(DateTime(timezone=False))
  26 + dt_hr_ult_acesso = Column(DateTime(timezone=False))
  27 + te_versao_cacic = Column(String(15))
  28 + te_versao_gercols = Column(String(15))
  29 + te_palavra_chave = Column(String(30), nullable=False)
  30 + dt_hr_coleta_forcada_estacao = Column(DateTime(timezone=False))
  31 + te_nomes_curtos_modulos = Column(String(255))
  32 + id_conta = Column(Integer)
  33 + te_debugging = Column(String)
  34 + te_ultimo_login = Column(String(100))
  35 + dt_debug = Column(String(8))
  36 +
  37 + def __init__(self, id_computador, id_usuario_exclusao, id_so, id_rede,
  38 + nm_computador, te_node_address, te_ip_computador,
  39 + dt_hr_inclusao, dt_hr_exclusao, dt_hr_ultimo_acesso,
  40 + te_versao_cacic, te_versao_gercols, te_palavra_chave,
  41 + dt_hr_coleta_forcada_estacao, te_nomes_curtos_modulos,
  42 + id_conta, te_debugging, te_ultimo_login, dt_debug):
  43 + """
  44 + Metodo que chama as colunas
  45 + """
  46 + self.id_computador = id_computador
  47 + self.id_usuario_exclusao = id_usuario_exclusao
  48 + self.id_so = id_so
  49 + self.id_rede = id_rede
  50 + self.nm_computador = nm_computador
  51 + self.te_node_address = te_node_address
  52 + self.te_ip_computador = te_ip_computador
  53 + self.dt_hr_inclusao = dt_hr_inclusao
  54 + self.dt_hr_exclusao = dt_hr_exclusao
  55 + self.dt_hr_ult_acesso = dt_hr_ult_acesso
  56 + self.te_versao_cacic = te_versao_cacic
  57 + self.te_versao_gercols = te_versao_gercols
  58 + self.te_palavra_chave = te_palavra_chave
  59 + self.dt_hr_coleta_forcada_estacao = dt_hr_coleta_forcada_estacao
  60 + self.te_nomes_curtos_modulos = te_nomes_curtos_modulos
  61 + self.id_conta = id_conta
  62 + self.te_debugging = te_debugging
  63 + self.te_ultimo_login = te_ultimo_login
  64 + self.dt_debug = dt_debug
  65 +
  66 + def __repr__(self, id_computador, id_usuario_exclusao, id_so, id_rede,
  67 + nm_computador, te_node_address, te_ip_computador,
  68 + dt_hr_inclusao, dt_hr_exclusao, dt_hr_ult_acesso,
  69 + te_versao_cacic, te_versao_gercols, te_palavra_chave,
  70 + dt_hr_coleta_forcada_estacao, te_nomes_curtos_modulos,
  71 + id_conta, te_debugging, te_ultimo_login, dt_debug):
  72 + """
  73 + Metodo que passa a lista de parametros da classe
  74 + """
  75 + return "<Computador('%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s,\
  76 + %s, %s, %s, %s, %s, %s, %s')>" %\
  77 + (self.id_computador,
  78 + self.id_usuario_exclusao,
  79 + self.id_so,
  80 + self.id_rede,
  81 + self.nm_computador,
  82 + self.te_node_address,
  83 + self.te_ip_computador,
  84 + self.dt_hr_inclusao,
  85 + self.dt_hr_exclusao,
  86 + self.dt_hr_ult_acesso,
  87 + self.te_versao_cacic,
  88 + self.te_versao_gercols,
  89 + self.te_palavra_chave,
  90 + self.dt_hr_coleta_forcada_estacao,
  91 + self.te_nomes_curtos_modulos,
  92 + self.id_conta,
  93 + self.te_debugging,
  94 + self.te_ultimo_login,
  95 + self.dt_debug
  96 + )
  97 +
  98 +
  99 +class ComputadorContextFactory(SQLAlchemyORMContext):
  100 + entity = Computador
  101 +
  102 + def session_factory(self):
  103 + return session
  104 +
  105 +computador = Table('computador', Base.metadata,
  106 + Column('id_computador', Integer, primary_key=True,
  107 + nullable=False),
  108 + Column('id_usuario_exclusao', Integer),
  109 + Column('id_so', Integer, ForeignKey('so.id_so')),
  110 + Column('id_rede', Integer, ForeignKey('rede.id_rede')),
  111 + Column('nm_computador', String(50)),
  112 + Column('te_node_address', String(17), nullable=False),
  113 + Column('te_ip_computador', String(15)),
  114 + Column('dt_hr_inclusao', DateTime(timezone=False)),
  115 + Column('dt_hr_exclusao', DateTime(timezone=False)),
  116 + Column('dt_hr_ult_acesso', DateTime(timezone=False)),
  117 + Column('te_versao_cacic', String(15)),
  118 + Column('te_versao_gercols', String(15)),
  119 + Column('te_palavra_chave', String(30), nullable=False),
  120 + Column('dt_hr_coleta_forcada_estacao',
  121 + DateTime(timezone=False)),
  122 + Column('te_nomes_curtos_modulos', String(255)),
  123 + Column('id_conta', Integer),
  124 + Column('te_debugging', String),
  125 + Column('te_ultimo_login', String(100)),
  126 + Column('dt_debug', String(8)),
  127 + extend_existing=True
  128 + )
  129 +mapper(Computador, computador)
... ...
wscserver/model/ComputadorColeta.py 0 → 100644
  1 +++ a/wscserver/model/ComputadorColeta.py
... ... @@ -0,0 +1,61 @@
  1 +from pyramid_restler.model import SQLAlchemyORMContext
  2 +
  3 +from sqlalchemy import Table, ForeignKey
  4 +from sqlalchemy.orm import mapper
  5 +from sqlalchemy.schema import Column
  6 +from sqlalchemy.types import *
  7 +from wscserver.model import Base, session
  8 +
  9 +
  10 +class ComputadorColeta():
  11 +
  12 + """
  13 + Classe que define a tabela 'computador_coleta'
  14 +
  15 + """
  16 +
  17 + __tablename__ = 'computador_coleta'
  18 + id_computador_coleta = Column(Integer, primary_key=True, nullable=False)
  19 + id_computador = Column(Integer, ForeignKey('computador.id_computador'))
  20 + id_class = Column(Integer)
  21 + te_class_values = Column(String, nullable=False)
  22 +
  23 + def __init__(self, id_computador_coleta, id_computador, id_class,
  24 + te_class_values, dt_hr_inclusao):
  25 + """
  26 + Metodo que chama as colunas
  27 + """
  28 + self.id_computador_coleta = id_computador_coleta
  29 + self.id_computador = id_computador
  30 + self.id_class = id_class
  31 + self.te_class_values = te_class_values
  32 +
  33 + def __repr__(self):
  34 + """
  35 + Metodo que passa a lista de parametros da classe
  36 + """
  37 + return "<ComputadorColeta('%s, %s, %s, %s')>" %\
  38 + (self.id_computador_coleta,
  39 + self.id_computador,
  40 + self.id_class,
  41 + self.te_class_values
  42 + )
  43 +
  44 +
  45 +class ComputadorColetaContextFactory(SQLAlchemyORMContext):
  46 + entity = ComputadorColeta
  47 +
  48 + def session_factory(self):
  49 + return session
  50 +
  51 +computador_coleta = Table('computador_coleta', Base.metadata,
  52 + Column('id_computador_coleta', Integer,
  53 + primary_key=True, nullable=False),
  54 + Column('id_computador', Integer,
  55 + ForeignKey('computador.id_computador')),
  56 + Column('id_class', Integer),
  57 + Column('te_class_values', String, nullable=False),
  58 + extend_existing=True
  59 + )
  60 +
  61 +mapper(ComputadorColeta, computador_coleta)
... ...
wscserver/model/ComputadorColetaHistorico.py 0 → 100644
  1 +++ a/wscserver/model/ComputadorColetaHistorico.py
... ... @@ -0,0 +1,72 @@
  1 +from pyramid_restler.model import SQLAlchemyORMContext
  2 +
  3 +from sqlalchemy import Table, ForeignKey
  4 +from sqlalchemy.orm import mapper
  5 +from sqlalchemy.schema import Column
  6 +from sqlalchemy.types import *
  7 +from wscserver.model import Base, session
  8 +
  9 +
  10 +class ComputadorColetaHistorico():
  11 +
  12 + """
  13 + Classe que define a tabela 'computador_coleta_historico'
  14 +
  15 + """
  16 + __tablename__ = 'computador_coleta_historico'
  17 + id_computador_coleta_historico = Column(Integer, primary_key=True,
  18 + nullable=False)
  19 + id_computador_coleta = Column(
  20 + Integer, ForeignKey('computador_coleta.id_computador_coleta'))
  21 + id_computador = Column(Integer, ForeignKey('computador.id_computador'))
  22 + id_class_property = Column(Integer)
  23 + te_class_property_value = Column(String, nullable=False)
  24 + dt_hr_inclusao = Column(DateTime(timezone=False))
  25 +
  26 + def __init__(self, id_computador_coleta_historico, id_computador_coleta,
  27 + id_computador, id_class_property, te_class_property_values,
  28 + dt_hr_inclusao):
  29 + """
  30 + Metodo que chama as colunas
  31 + """
  32 + self.id_computador_coleta_historico = id_computador_coleta_historico
  33 + self.id_computador_coleta = id_computador_coleta
  34 + self.id_computador = id_computador
  35 + self.id_class_property = id_class_property
  36 + self.te_class_property_value = te_class_property_value
  37 + self.dt_hr_inclusao = dt_hr_inclusao
  38 +
  39 + def __repr__(self):
  40 + """
  41 + Metodo que passa a lista de parametros da classe
  42 + """
  43 + return "<ComputadorColetaHistorico('%s, %s, %s, %s, %s, %s')>" %\
  44 + (self.id_computador_coleta_historico,
  45 + self.id_computador_coleta,
  46 + self.id_computador,
  47 + self.id_class_property,
  48 + self.te_class_property_value,
  49 + self.dt_hr_inclusao
  50 + )
  51 +
  52 +
  53 +class ComputadorColetaHistoricoContextFactory(SQLAlchemyORMContext):
  54 + entity = ComputadorColetaHistorico
  55 +
  56 + def session_factory(self):
  57 + return session
  58 +
  59 +computador_coleta_historico = Table(
  60 + 'computador_coleta_historico', Base.metadata,
  61 + Column('id_computador_coleta_historico', Integer, primary_key=True,
  62 + nullable=False),
  63 + Column('id_computador_coleta', Integer, ForeignKey(
  64 + 'computador_coleta.id_computador_coleta')),
  65 + Column('id_computador', Integer, ForeignKey('computador.id_computador')),
  66 + Column('id_class_property', Integer),
  67 + Column('te_class_property_value', String, nullable=False),
  68 + Column('dt_hr_inclusao', DateTime(timezone=False)),
  69 + extend_existing=True
  70 +)
  71 +
  72 +mapper(ComputadorColetaHistorico, computador_coleta_historico)
... ...
wscserver/model/DescricaoColunaComputador.py 0 → 100644
  1 +++ a/wscserver/model/DescricaoColunaComputador.py
... ... @@ -0,0 +1,63 @@
  1 +from pyramid_restler.model import SQLAlchemyORMContext
  2 +
  3 +from sqlalchemy import Table
  4 +from sqlalchemy.orm import mapper
  5 +from sqlalchemy.schema import Column
  6 +from sqlalchemy.types import *
  7 +from wscserver.model import Base, session
  8 +
  9 +
  10 +class DescricaoColunaComputador():
  11 +
  12 + """
  13 + Classe que define a tabela 'descricao_coluna_computador'
  14 +
  15 + """
  16 +
  17 + __tablename__ = 'descricao_coluna_computador'
  18 + te_source = Column(String(100), primary_key=True, nullable=False)
  19 + te_target = Column(String(100), primary_key=True, nullable=False)
  20 + te_description = Column(String(100), nullable=False)
  21 + cs_condicao_pesquisa = Column(String(1), nullable=False)
  22 +
  23 + def __init__(self, te_source, te_target, te_description,
  24 + cs_condicao_pesquisa):
  25 + """
  26 + Metodo que chama as colunas
  27 + """
  28 + self.te_source = te_source
  29 + self.te_target = te_target
  30 + self.te_description = te_description
  31 + self.cs_condicao_pesquisa = cs_condicao_pesquisa
  32 +
  33 + def __repr__(self):
  34 + """
  35 + Metodo que passa a lista de parametros da classe
  36 + """
  37 + return "<DescricaoColunaComputador('%s, %s, %s, %s')>" %\
  38 + (self.te_source,
  39 + self.te_target,
  40 + self.te_description,
  41 + self.cs_condicao_pesquisa
  42 + )
  43 +
  44 +
  45 +class DescricaoColunaComputadorContextFactory(SQLAlchemyORMContext):
  46 + entity = DescricaoColunaComputador
  47 +
  48 + def session_factory(self):
  49 + return session
  50 +
  51 +descricao_coluna_computador = Table(
  52 + 'descricao_coluna_computador', Base.metadata,
  53 + Column('te_source', String(100),
  54 + primary_key=True, nullable=False),
  55 + Column('te_target', String(100),
  56 + primary_key=True, nullable=False),
  57 + Column('te_description', String(100),
  58 + nullable=False),
  59 + Column('cs_condicao_pesquisa', String(1),
  60 + nullable=False),
  61 + extend_existing=True
  62 +)
  63 +mapper(DescricaoColunaComputador, descricao_coluna_computador)
... ...
wscserver/model/Patrimonio.py 0 → 100644
  1 +++ a/wscserver/model/Patrimonio.py
... ... @@ -0,0 +1,107 @@
  1 +from pyramid_restler.model import SQLAlchemyORMContext
  2 +
  3 +from sqlalchemy import Table, ForeignKey
  4 +from sqlalchemy.orm import mapper
  5 +from sqlalchemy.schema import Column
  6 +from sqlalchemy.types import *
  7 +from wscserver.model import Base, session
  8 +
  9 +
  10 +class Patrimonio():
  11 +
  12 + """
  13 + Classe que define a tabela 'patrimonio'
  14 +
  15 + """
  16 +
  17 + __tablename__ = 'patrimonio'
  18 + id_patrimonio = Column(Integer, primary_key=True, nullable=False)
  19 + id_usuario = Column(Integer)
  20 + id_unid_organizacional_nivel1a = Column(Integer)
  21 + id_computador = Column(Integer, ForeignKey('computador.id_computador'))
  22 + id_unid_organizacional_nivel2 = Column(Integer)
  23 + dt_hr_alteracao = Column(DateTime(timezone=False))
  24 + te_localizacao_complementar = Column(String(100))
  25 + te_info_patrimonio1 = Column(String(20))
  26 + te_info_patrimonio2 = Column(String(20))
  27 + te_info_patrimonio3 = Column(String(20))
  28 + te_info_patrimonio4 = Column(String(20))
  29 + te_info_patrimonio5 = Column(String(20))
  30 + te_info_patrimonio6 = Column(String(20))
  31 + id_unid_organizacional_nivel1 = Column(Integer, nullable=False)
  32 +
  33 + def __init__(self, id_patrimonio, id_usuario,
  34 + id_unid_organizacional_nivel1a, id_computador,
  35 + id_unid_organizacional_nivel2, dt_hr_alteracao,
  36 + te_localizacao_complementar, te_info_patrimonio1,
  37 + te_info_patrimonio2, te_info_patrimonio3,
  38 + te_info_patrimonio4, te_info_patrimonio5,
  39 + te_info_patrimonio6, id_unid_organizacional_nivel1):
  40 + """
  41 + Metodo que chama as colunas
  42 + """
  43 + self.id_patrimonio = id_patrimonio
  44 + self.id_usuario = id_usuario
  45 + self.id_unid_organizacional_nivel1a = id_unid_organizacional_nivel1a
  46 + self.id_computador = id_computador
  47 + self.id_unid_organizacional_nivel2 = id_unid_organizacional_nivel2
  48 + self.dt_hr_alteracao = dt_hr_alteracao
  49 + self.te_localizacao_complementar = te_localizacao_complementar
  50 + self.te_info_patrimonio1 = te_info_patrimonio1
  51 + self.te_info_patrimonio2 = te_info_patrimonio2
  52 + self.te_info_patrimonio3 = te_info_patrimonio3
  53 + self.te_info_patrimonio4 = te_info_patrimonio4
  54 + self.te_info_patrimonio5 = te_info_patrimonio5
  55 + self.te_info_patrimonio6 = te_info_patrimonio6
  56 + self.id_unid_organizacional_nivel1 = id_unid_organizacional_nivel1
  57 +
  58 + def __repr__(self):
  59 + """
  60 + Metodo que passa a lista de parametros da classe
  61 + """
  62 + return "<Patrimonio('%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s,\
  63 + %s, %s')>" % (self.id_patrimonio,
  64 + self.id_usuario,
  65 + self.id_unid_organizacional_nivel1a,
  66 + self.id_computador,
  67 + self.id_unid_organizacional_nivel2,
  68 + self.dt_hr_alteracao,
  69 + self.te_localizacao_complementar,
  70 + self.te_info_patrimonio1,
  71 + self.te_info_patrimonio2,
  72 + self.te_info_patrimonio3,
  73 + self.te_info_patrimonio4,
  74 + self.te_info_patrimonio5,
  75 + self.te_info_patrimonio6,
  76 + self.id_unid_organizacional_nivel1
  77 + )
  78 +
  79 +
  80 +class PatrimonioContextFactory(SQLAlchemyORMContext):
  81 + entity = Patrimonio
  82 +
  83 + def session_factory(self):
  84 + return session
  85 +
  86 +patrimonio = Table('patrimonio', Base.metadata,
  87 + Column('id_patrimonio', Integer, primary_key=True,
  88 + nullable=False),
  89 + Column('id_usuario', Integer),
  90 + Column('id_unid_organizacional_nivel1a', Integer),
  91 + Column('id_computador', Integer,
  92 + ForeignKey('computador.id_computador')),
  93 + Column('id_unid_organizacional_nivel2', Integer),
  94 + Column('dt_hr_alteracao', DateTime(timezone=False)),
  95 + Column('te_localizacao_complementar', String(100)),
  96 + Column('te_info_patrimonio1', String(20)),
  97 + Column('te_info_patrimonio2', String(20)),
  98 + Column('te_info_patrimonio3', String(20)),
  99 + Column('te_info_patrimonio4', String(20)),
  100 + Column('te_info_patrimonio5', String(20)),
  101 + Column('te_info_patrimonio6', String(20)),
  102 + Column('id_unid_organizacional_nivel1',
  103 + Integer, nullable=False),
  104 + extend_existing=True
  105 + )
  106 +
  107 +mapper(Patrimonio, patrimonio)
... ...
wscserver/model/Rede.py 0 → 100644
  1 +++ a/wscserver/model/Rede.py
... ... @@ -0,0 +1,159 @@
  1 +from pyramid_restler.model import SQLAlchemyORMContext
  2 +
  3 +from sqlalchemy import Table
  4 +from sqlalchemy.orm import mapper
  5 +from sqlalchemy.schema import Column
  6 +from sqlalchemy.types import *
  7 +from wscserver.model import Base, session
  8 +from sqlalchemy.orm import relationship, backref
  9 +from sqlalchemy.ext.declarative import declarative_base
  10 +
  11 +
  12 +class Rede():
  13 +
  14 + """
  15 + Classe que define a tabela 'rede'
  16 +
  17 + """
  18 +
  19 + __tablename__ = 'rede'
  20 + id_rede = Column(Integer, primary_key=True, nullable=False)
  21 + id_local = Column(Integer)
  22 + id_servidor_autenticacao = Column(Integer)
  23 + te_ip_rede = Column(String(15), nullable=False)
  24 + nm_rede = Column(String(100))
  25 + te_observacao = Column(String(100))
  26 + nm_pessoa_contato1 = Column(String(50))
  27 + nm_pessoa_contato2 = Column(String(50))
  28 + nu_telefone1 = Column(String(11))
  29 + te_email_contato2 = Column(String(50))
  30 + nu_telefone2 = Column(String(11))
  31 + te_email_contato1 = Column(String(50))
  32 + te_serv_cacic = Column(String(60), nullable=False)
  33 + te_serv_updates = Column(String(60), nullable=False)
  34 + te_path_serv_updates = Column(String(255))
  35 + nm_usuario_login_serv_updates = Column(String(20))
  36 + te_senha_login_serv_updates = Column(String(20))
  37 + nu_porta_serv_updates = Column(String(4))
  38 + te_mascara_rede = Column(String(15))
  39 + dt_verifica_updates = Column(DateTime)
  40 + nm_usuario_login_serv_updates_gerente = Column(String(20))
  41 + te_senha_login_serv_updates_gerente = Column(String(20))
  42 + nu_limite_ftp = Column(Integer, nullable=False)
  43 + cs_permitir_desativar_srcacic = Column(String(1), nullable=False)
  44 + te_debugging = Column(String)
  45 + dt_debug = Column(String(8))
  46 +
  47 + def __init__(self, id_rede, id_local, id_servidor_autenticacao,
  48 + te_ip_rede, nm_rede, te_observacao, nm_pessoa_contato1,
  49 + nm_pessoa_contato2, nu_telefone1, te_email_contato2,
  50 + nu_telefone2, te_email_contato1, te_serv_cacic,
  51 + te_serv_updates, te_path_serv_updates,
  52 + nm_usuario_login_serv_updates, te_senha_login_serv_updates,
  53 + nu_porta_serv_updates, te_mascara_rede, dt_verifica_updates,
  54 + nm_usuario_login_serv_updates_gerente,
  55 + te_senha_login_serv_updates_gerente,
  56 + nu_limite_ftp, cs_permitir_desativar_srcacic, te_debugging,
  57 + dt_debug):
  58 + """
  59 + Metodo que chama as colunas
  60 + """
  61 + self.id_rede = id_rede
  62 + self.id_local = id_local
  63 + self.id_servidor_autenticacao = id_servidor_autenticacao
  64 + self.te_ip_rede = te_ip_rede
  65 + self.nm_rede = nm_rede
  66 + self.te_observacao = te_observacao
  67 + self.nm_pessoa_contato1 = nm_pessoa_contato1
  68 + self.nm_pessoa_contato2 = nm_pessoa_contato2
  69 + self.nu_telefone1 = nu_telefone1
  70 + self.te_email_contato2 = te_email_contato2
  71 + self.nu_telefone2 = nu_telefone2
  72 + self.te_email_contato1 = te_email_contato1
  73 + self.te_serv_cacic = te_serv_cacic
  74 + self.te_serv_updates = te_serv_updates
  75 + self.te_path_serv_updates = te_path_serv_updates
  76 + self.nm_usuario_login_serv_updates = nm_usuario_login_serv_updates
  77 + self.te_senha_login_serv_updates = te_senha_login_serv_updates
  78 + self.nu_porta_serv_updates = nu_porta_serv_updates
  79 + self.te_mascara_rede = te_mascara_rede
  80 + self.dt_verifica_updates = dt_verifica_updates
  81 + self.nm_usuario_login_serv_updates_gerente = nm_usuario_login_serv_updates_gerente
  82 + self.te_senha_login_serv_updates_gerente = te_senha_login_serv_updates_gerente
  83 + self.nu_limite_ftp = nu_limite_ftp
  84 + self.cs_permitir_desativar_srcacic = cs_permitir_desativar_srcacic
  85 + self.te_debugging = te_debugging
  86 + self.dt_debug = dt_debug
  87 +
  88 + def __repr__(self):
  89 + """
  90 + Metodo que passa a lista de parametros da classe
  91 + """
  92 + return "<Rede('%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s,\
  93 + %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)>" %\
  94 + (self.id_rede,
  95 + self.id_local,
  96 + self.id_servidor_autenticacao,
  97 + self.te_ip_rede,
  98 + self.nm_rede,
  99 + self.te_observacao,
  100 + self.nm_pessoa_contato1,
  101 + self.nm_pessoa_contato2,
  102 + self.nu_telefone1,
  103 + self.te_email_contato2,
  104 + self.nu_telefone2,
  105 + self.te_email_contato1,
  106 + self.te_serv_cacic,
  107 + self.te_serv_updates,
  108 + self.te_path_serv_updates,
  109 + self.nm_usuario_login_serv_updates,
  110 + self.te_senha_login_serv_updates,
  111 + self.nu_porta_serv_updates,
  112 + self.te_mascara_rede,
  113 + self.dt_verifica_updates,
  114 + self.nm_usuario_login_serv_updates_gerente,
  115 + self.te_senha_login_serv_updates_gerente,
  116 + self.nu_limite_ftp,
  117 + self.cs_permitir_desativar_srcacic,
  118 + self.te_debugging,
  119 + self.dt_debug
  120 + )
  121 +
  122 +
  123 +class RedeContextFactory(SQLAlchemyORMContext):
  124 + entity = Rede
  125 +
  126 + def session_factory(self):
  127 + return session
  128 +
  129 +rede = Table('rede', Base.metadata,
  130 + Column('id_rede', Integer, primary_key=True, nullable=False),
  131 + Column('id_local', Integer),
  132 + Column('id_servidor_autenticacao', Integer),
  133 + Column('te_ip_rede', String(15), nullable=False),
  134 + Column('nm_rede', String(100)),
  135 + Column('te_observacao', String(100)),
  136 + Column('nm_pessoa_contato1', String(50)),
  137 + Column('nm_pessoa_contato2', String(50)),
  138 + Column('te_email_contato2', String(50)),
  139 + Column('nu_telefone2', String(11)),
  140 + Column('te_email_contato1', String(50)),
  141 + Column('te_serv_cacic', String(60), nullable=False),
  142 + Column('te_serv_updates', String(60), nullable=False),
  143 + Column('te_path_serv_updates', String(255)),
  144 + Column('nm_usuario_login_serv_updates', String(20)),
  145 + Column('te_senha_login_serv_updates', String(20)),
  146 + Column('nu_porta_serv_updates', String(4)),
  147 + Column('te_mascara_rede', String(15)),
  148 + Column('dt_verifica_updates', DateTime),
  149 + Column('nm_usuario_login_serv_updates_gerente', String(20)),
  150 + Column('te_senha_login_serv_updates_gerente', String(20)),
  151 + Column('nu_limite_ftp', Integer, nullable=False),
  152 + Column('cs_permitir_desativar_srcacic', String(1),
  153 + nullable=False),
  154 + Column('te_debugging', String),
  155 + Column('dt_debug', String(8)),
  156 + extend_existing=True
  157 + )
  158 +
  159 +mapper(Rede, rede)
... ...
wscserver/model/So.py 0 → 100644
  1 +++ a/wscserver/model/So.py
... ... @@ -0,0 +1,58 @@
  1 +from pyramid_restler.model import SQLAlchemyORMContext
  2 +
  3 +from sqlalchemy import Table
  4 +from sqlalchemy.orm import mapper
  5 +from sqlalchemy.schema import Column
  6 +from sqlalchemy.types import *
  7 +from wscserver.model import Base, session
  8 +
  9 +
  10 +class So():
  11 +
  12 + """
  13 + Classe que define a tabela 'so'
  14 +
  15 + """
  16 + __tablename__ = 'so'
  17 + id_so = Column(Integer, primary_key=True, nullable=False)
  18 + te_desc_so = Column(String(255))
  19 + sg_so = Column(String(20))
  20 + te_so = Column(String(50), nullable=False)
  21 + in_mswindows = Column(String(1), nullable=False)
  22 +
  23 + def __init__(self, id_so, te_desc_so, sg_so, te_so, in_mswindows):
  24 + """
  25 + Metodo que chama as colunas
  26 + """
  27 + self.id_so = id_so
  28 + self.te_desc_so = te_desc_so
  29 + self.sg_so = sg_so
  30 + self.te_so = te_so
  31 + self.in_mswindows = in_mswindows
  32 +
  33 + def __repr__(self):
  34 + """
  35 + Metodo que passa a lista de parametros da classe
  36 + """
  37 + return "<So('%s, %s, %s, %s, %s')>" % (self.id_so, self.te_desc_so,
  38 + self.sg_so, self.te_so,
  39 + self.in_mswindows
  40 + )
  41 +
  42 +
  43 +class SoContextFactory(SQLAlchemyORMContext):
  44 + entity = So
  45 +
  46 + def session_factory(self):
  47 + return session
  48 +
  49 +so = Table('so', Base.metadata,
  50 + Column('id_so', Integer, primary_key=True, nullable=False),
  51 + Column('te_desc_so', String(255)),
  52 + Column('sg_so', String(20)),
  53 + Column('te_so', String(50), nullable=False),
  54 + Column('in_mswindows', String(1), nullable=False),
  55 + extend_existing=True
  56 + )
  57 +
  58 +mapper(So, so)
... ...
wscserver/model/Software.py 0 → 100644
  1 +++ a/wscserver/model/Software.py
... ... @@ -0,0 +1,77 @@
  1 +from pyramid_restler.model import SQLAlchemyORMContext
  2 +
  3 +from sqlalchemy import Table
  4 +from sqlalchemy.orm import mapper
  5 +from sqlalchemy.schema import Column
  6 +from sqlalchemy.types import *
  7 +from wscserver.model import Base, session
  8 +
  9 +
  10 +class Software():
  11 +
  12 + """
  13 + Classe que define a tabela 'software'
  14 +
  15 + """
  16 +
  17 + __tablename__ = 'software'
  18 + id_software = Column(Integer, primary_key=True, nullable=False)
  19 + id_tipo_software = Column(Integer)
  20 + nm_software = Column(String(150), nullable=False)
  21 + te_descricao_software = Column(String(255))
  22 + qt_licenca = Column(Integer)
  23 + nr_midia = Column(String(10))
  24 + te_local_midia = Column(String(30))
  25 + te_obs = Column(String(200))
  26 +
  27 + def __init__(self, id_software, id_tipo_software, nm_software,
  28 + te_descricao_software, qt_licenca, nr_midia, te_local_midia,
  29 + te_obs):
  30 + """
  31 + Metodo que chama as colunas
  32 + """
  33 + self.id_software = id_software
  34 + self.id_tipo_software = id_tipo_software
  35 + self.nm_software = nm_software
  36 + self.te_descricao_software = te_descricao_software
  37 + self.qt_licenca = qt_licenca
  38 + self.nr_midia = nr_midia
  39 + self.te_local_midia = te_local_midia
  40 + self.te_obs = te_obs
  41 +
  42 + def __repr__(self):
  43 + """
  44 + Metodo que passa a lista de parametros da classe
  45 + """
  46 + return "<Software('%s, %s, %s, %s,\
  47 + %s, %s %s, %s,')>" % (self.id_software,
  48 + self.id_tipo_software,
  49 + self.nm_software,
  50 + self.te_descricao_software,
  51 + self.qt_licenca,
  52 + self.nr_midia,
  53 + self.te_local_midia,
  54 + self.te_obs
  55 + )
  56 +
  57 +
  58 +class SoftwareContextFactory(SQLAlchemyORMContext):
  59 + entity = Software
  60 +
  61 + def session_factory(self):
  62 + return session
  63 +
  64 +software = Table('software', Base.metadata,
  65 + Column('id_software', Integer, primary_key=True,
  66 + nullable=False),
  67 + Column('id_tipo_software', Integer),
  68 + Column('nm_software', String(150), nullable=False),
  69 + Column('te_descricao_software', String(255)),
  70 + Column('qt_licenca', Integer),
  71 + Column('nr_midia', String(10)),
  72 + Column('te_local_midia', String(30)),
  73 + Column('te_obs', String(200)),
  74 + extend_existing=True
  75 + )
  76 +
  77 +mapper(Software, software)
... ...
wscserver/model/SoftwareEstacao.py 0 → 100644
  1 +++ a/wscserver/model/SoftwareEstacao.py
... ... @@ -0,0 +1,88 @@
  1 +from pyramid_restler.model import SQLAlchemyORMContext
  2 +
  3 +from sqlalchemy import Table, ForeignKey
  4 +from sqlalchemy.orm import mapper
  5 +from sqlalchemy.schema import Column
  6 +from sqlalchemy.types import *
  7 +from wscserver.model import Base, session
  8 +
  9 +
  10 +class SoftwareEstacao():
  11 +
  12 + """
  13 + Classe que define a tabela 'software_estacao'
  14 +
  15 + """
  16 +
  17 + __tablename__ = 'software_estacao'
  18 + id_computador = Column(Integer, ForeignKey('computador.id_computador'))
  19 + id_software = Column(Integer, ForeignKey('software.id_software'))
  20 + id_aquisicao = Column(Integer)
  21 + nr_patrimonio = Column(String(20), primary_key=True, nullable=False)
  22 + dt_autorizacao = Column(DateTime)
  23 + dt_expiracao_instalacao = Column(DateTime)
  24 + id_aquisicao_particular = Column(Integer)
  25 + dt_desinstalacao = Column(DateTime)
  26 + te_observacao = Column(String(90))
  27 + nr_patr_destino = Column(String(20))
  28 +
  29 + def __init__(self, id_computador, id_software, id_aquisicao,
  30 + nr_patrimonio, dt_autorizacao, dt_expiracao_instalacao,
  31 + id_aquisicao_particular, dt_desinstalacao, te_observacao,
  32 + nr_patr_destino):
  33 + """
  34 + Metodo que chama as colunas
  35 + """
  36 + self.id_computador = id_computador
  37 + self.id_software = id_software
  38 + self.id_aquisicao = id_aquisicao
  39 + self.nr_patrimonio = nr_patrimonio
  40 + self.dt_autorizacao = dt_autorizacao
  41 + self.dt_expiracao_instalacao = dt_expiracao_instalacao
  42 + self.id_aquisicao_particular = id_aquisicao_particular
  43 + self.dt_desinstalacao = dt_desinstalacao
  44 + self.te_observacao = te_observacao
  45 + self.nr_patr_destino = nr_patr_destino
  46 +
  47 + def __repr__(self):
  48 + """
  49 + Metodo que passa a lista de parametros da classe
  50 + """
  51 + return "<SoftwareEstacao('%s, %s, %s, %s, %s, %s, %s, %s, %s,\
  52 + %s')>" % (self.id_computador,
  53 + self.id_software,
  54 + self.id_aquisicao,
  55 + self.nr_patrimonio,
  56 + self.dt_autorizacao,
  57 + self.dt_expiracao_instalacao,
  58 + self.id_aquisicao_particular,
  59 + self.dt_desinstalacao,
  60 + self.te_observacao,
  61 + self.nr_patr_destino
  62 + )
  63 +
  64 +
  65 +class SoftwareEstacaoContextFactory(SQLAlchemyORMContext):
  66 + entity = SoftwareEstacao
  67 +
  68 + def session_factory(self):
  69 + return session
  70 +
  71 +software_estacao = Table('software_estacao', Base.metadata,
  72 + Column('id_computador', Integer,
  73 + ForeignKey('computador.id_computador')),
  74 + Column('id_software', Integer,
  75 + ForeignKey('software.id_software')),
  76 + Column('id_aquisicao', Integer),
  77 + Column('nr_patrimonio', String(20),
  78 + primary_key=True, nullable=False),
  79 + Column('dt_autorizacao', Date),
  80 + Column('dt_expiracao_instalacao', Date),
  81 + Column('id_aquisicao_particular', Integer),
  82 + Column('dt_desinstalacao', Date),
  83 + Column('te_observacao', String(90)),
  84 + Column('nr_patr_destino', String(20)),
  85 + extend_existing=True
  86 + )
  87 +
  88 +mapper(SoftwareEstacao, software_estacao)
... ...
wscserver/model/TipoSoftware.py 0 → 100644
  1 +++ a/wscserver/model/TipoSoftware.py
... ... @@ -0,0 +1,50 @@
  1 +from pyramid_restler.model import SQLAlchemyORMContext
  2 +
  3 +from sqlalchemy import Table
  4 +from sqlalchemy.orm import mapper
  5 +from sqlalchemy.schema import Column
  6 +from sqlalchemy.types import *
  7 +from wscserver.model import Base, session
  8 +
  9 +
  10 +class TipoSoftware():
  11 +
  12 + """
  13 + Classe que define a tabela 'tipo_software'
  14 +
  15 + """
  16 + __tablename__ = 'tipo_software'
  17 + id_tipo_software = Column(Integer, primary_key=True, nullable=False)
  18 + te_descricao_tipo_software = Column(String(30), nullable=False)
  19 +
  20 + def __init__(self, id_tipo_software, te_descricao_tipo_software):
  21 + """
  22 + Metodo que chama as colunas
  23 + """
  24 + self.id_tipo_software = id_tipo_software
  25 + self.te_descricao_tipo_software = te_descricao_tipo_software
  26 +
  27 + def __repr__(self):
  28 + """
  29 + Metodo que passa a lista de parametros da classe
  30 + """
  31 + return "<TipoSoftware('%s, %s')>" % (self.id_tipo_software,
  32 + self.te_descricao_tipo_software
  33 + )
  34 +
  35 +
  36 +class TipoSoftwareContextFactory(SQLAlchemyORMContext):
  37 + entity = TipoSoftware
  38 +
  39 + def session_factory(self):
  40 + return session
  41 +
  42 +tipo_software = Table('tipo_software', Base.metadata,
  43 + Column('id_tipo_software', Integer, primary_key=True,
  44 + nullable=False),
  45 + Column('te_descricao_tipo_software', String(30),
  46 + nullable=False),
  47 + extend_existing=True
  48 + )
  49 +
  50 +mapper(TipoSoftware, tipo_software)
... ...
wscserver/model/__init__.py 0 → 100644
  1 +++ a/wscserver/model/__init__.py
... ... @@ -0,0 +1,19 @@
  1 +# from sqlalchemy import engine_from_config
  2 +from sqlalchemy.ext.declarative import declarative_base
  3 +from sqlalchemy.orm import scoped_session, sessionmaker
  4 +from sqlalchemy.engine import create_engine
  5 +from pyramid import config
  6 +from paste.deploy.loadwsgi import appconfig
  7 +
  8 +sqlalchemy_url = 'postgresql://rest:rest@localhost/cacic'
  9 +DBSession = scoped_session(sessionmaker())
  10 +Base = declarative_base()
  11 +engine = create_engine(sqlalchemy_url)
  12 +Session = sessionmaker(bind=engine)
  13 +session = Session()
  14 +
  15 +
  16 +def initialize_sql(engine):
  17 + DBSession.configure(bind=engine)
  18 + Base.metadata.bind = engine
  19 + # Base.metadata.create_all(engine)
... ...
wscserver/scripts/__init__.py 0 → 100644
  1 +++ a/wscserver/scripts/__init__.py
... ...
wscserver/scripts/createzip.py 0 → 100644
  1 +++ a/wscserver/scripts/createzip.py
... ... @@ -0,0 +1,20 @@
  1 +import zipfile
  2 +import tempfile
  3 +import requests
  4 +import os
  5 +
  6 +def zipcoleta():
  7 + """Recebe o json da coleta em um arquivo e zipa"""
  8 + coleta = requests.get('http://localhost/wscserver/rest/coleta')
  9 +
  10 + path = tempfile.gettempdir()
  11 + os.chdir(path)
  12 + f = open('coleta.json','w')
  13 + f.write(coleta.text)
  14 + arquivozip = 'coleta.zip'
  15 + with zipfile.ZipFile(arquivozip, 'w') as myzip:
  16 + myzip.write(f.name)
  17 + f.close()
  18 + os.remove('coleta.json')
  19 + filepath = os.path.abspath(arquivozip)
  20 + return filepath
... ...
wscserver/static/favicon.ico 0 → 100644
No preview for this file type
wscserver/static/footerbg.png 0 → 100644

333 Bytes

wscserver/static/headerbg.png 0 → 100644

203 Bytes

wscserver/static/ie6.css 0 → 100644
  1 +++ a/wscserver/static/ie6.css
... ... @@ -0,0 +1,8 @@
  1 +* html img,
  2 +* html .png{position:relative;behavior:expression((this.runtimeStyle.behavior="none")&&(this.pngSet?this.pngSet=true:(this.nodeName == "IMG" && this.src.toLowerCase().indexOf('.png')>-1?(this.runtimeStyle.backgroundImage = "none",
  3 +this.runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + this.src + "',sizingMethod='image')",
  4 +this.src = "static/transparent.gif"):(this.origBg = this.origBg? this.origBg :this.currentStyle.backgroundImage.toString().replace('url("','').replace('")',''),
  5 +this.runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + this.origBg + "',sizingMethod='crop')",
  6 +this.runtimeStyle.backgroundImage = "none")),this.pngSet=true)
  7 +);}
  8 +#wrap{display:table;height:100%}
... ...
wscserver/static/json_base.json 0 → 100644
  1 +++ a/wscserver/static/json_base.json
... ... @@ -0,0 +1,2047 @@
  1 +{
  2 + "metadata":{
  3 + "doc_extract":false,
  4 + "index_export":false,
  5 + "index_url":"",
  6 + "index_time":"0",
  7 + "extract_time":"0",
  8 + "name":"wmi",
  9 + "description":"Classes de coleta WMI do cacic",
  10 + "password":"w1f1t1d1",
  11 + "color":"#2d2d2d"
  12 + },
  13 + "content":[
  14 + {
  15 + "group":{
  16 + "metadata":{
  17 + "name":"Win32_BaseBoard",
  18 + "alias":"Win32_BaseBoard",
  19 + "description":"Win32_BaseBoard",
  20 + "multivalued":false
  21 + },
  22 + "content":[
  23 + {
  24 + "field":{
  25 + "name":"ConfigOptions",
  26 + "alias":"ConfigOptions",
  27 + "description":"ConfigOptions",
  28 + "datatype":"Text",
  29 + "required":false,
  30 + "multivalued":false,
  31 + "indices":[
  32 + "Textual"
  33 + ]
  34 + }
  35 + },
  36 + {
  37 + "field":{
  38 + "name":"Description",
  39 + "alias":"Description",
  40 + "description":"Description",
  41 + "datatype":"Text",
  42 + "required":false,
  43 + "multivalued":false,
  44 + "indices":[
  45 + "Textual"
  46 + ]
  47 + }
  48 + },
  49 + {
  50 + "field":{
  51 + "name":"HostingBoard",
  52 + "alias":"HostingBoard",
  53 + "description":"HostingBoard",
  54 + "datatype":"Text",
  55 + "required":false,
  56 + "multivalued":false,
  57 + "indices":[
  58 + "Textual"
  59 + ]
  60 + }
  61 + },
  62 + {
  63 + "field":{
  64 + "name":"Manufacturer",
  65 + "alias":"Manufacturer",
  66 + "description":"Manufacturer",
  67 + "datatype":"Text",
  68 + "required":false,
  69 + "multivalued":false,
  70 + "indices":[
  71 + "Textual"
  72 + ]
  73 + }
  74 + },
  75 + {
  76 + "field":{
  77 + "name":"Name",
  78 + "alias":"Name",
  79 + "description":"Name",
  80 + "datatype":"Text",
  81 + "required":false,
  82 + "multivalued":false,
  83 + "indices":[
  84 + "Textual"
  85 + ]
  86 + }
  87 + },
  88 + {
  89 + "field":{
  90 + "name":"Product",
  91 + "alias":"Product",
  92 + "description":"Product",
  93 + "datatype":"Text",
  94 + "required":false,
  95 + "multivalued":false,
  96 + "indices":[
  97 + "Textual"
  98 + ]
  99 + }
  100 + },
  101 + {
  102 + "field":{
  103 + "name":"SerialNumber",
  104 + "alias":"SerialNumber",
  105 + "description":"SerialNumber",
  106 + "datatype":"Text",
  107 + "required":false,
  108 + "multivalued":false,
  109 + "indices":[
  110 + "Textual"
  111 + ]
  112 + }
  113 + },
  114 + {
  115 + "field":{
  116 + "name":"Tag",
  117 + "alias":"Tag",
  118 + "description":"Tag",
  119 + "datatype":"Text",
  120 + "required":false,
  121 + "multivalued":false,
  122 + "indices":[
  123 + "Textual"
  124 + ]
  125 + }
  126 + },
  127 + {
  128 + "field":{
  129 + "name":"Version",
  130 + "alias":"Version",
  131 + "description":"Version",
  132 + "datatype":"Text",
  133 + "required":false,
  134 + "multivalued":false,
  135 + "indices":[
  136 + "Textual"
  137 + ]
  138 + }
  139 + }
  140 + ]
  141 + }
  142 + },
  143 + {
  144 + "group":{
  145 + "metadata":{
  146 + "name":"Win32_BIOS",
  147 + "alias":"Win32_BIOS",
  148 + "description":"Win32_BIOS",
  149 + "multivalued":false
  150 + },
  151 + "content":[
  152 + {
  153 + "field":{
  154 + "name":"BiosCharacteristics",
  155 + "alias":"BiosCharacteristics",
  156 + "description":"BiosCharacteristics",
  157 + "datatype":"Text",
  158 + "required":false,
  159 + "multivalued":false,
  160 + "indices":[
  161 + "Textual"
  162 + ]
  163 + }
  164 + },
  165 + {
  166 + "field":{
  167 + "name":"BIOSVersion",
  168 + "alias":"BIOSVersion",
  169 + "description":"BIOSVersion",
  170 + "datatype":"Text",
  171 + "required":false,
  172 + "multivalued":false,
  173 + "indices":[
  174 + "Textual"
  175 + ]
  176 + }
  177 + },
  178 + {
  179 + "field":{
  180 + "name":"Caption",
  181 + "alias":"Caption",
  182 + "description":"Caption",
  183 + "datatype":"Text",
  184 + "required":false,
  185 + "multivalued":false,
  186 + "indices":[
  187 + "Textual"
  188 + ]
  189 + }
  190 + },
  191 + {
  192 + "field":{
  193 + "name":"Description",
  194 + "alias":"Description",
  195 + "description":"Description",
  196 + "datatype":"Text",
  197 + "required":false,
  198 + "multivalued":false,
  199 + "indices":[
  200 + "Textual"
  201 + ]
  202 + }
  203 + },
  204 + {
  205 + "field":{
  206 + "name":"Manufacturer",
  207 + "alias":"Manufacturer",
  208 + "description":"Manufacturer",
  209 + "datatype":"Text",
  210 + "required":false,
  211 + "multivalued":false,
  212 + "indices":[
  213 + "Textual"
  214 + ]
  215 + }
  216 + },
  217 + {
  218 + "field":{
  219 + "name":"Name",
  220 + "alias":"Name",
  221 + "description":"Name",
  222 + "datatype":"Text",
  223 + "required":false,
  224 + "multivalued":false,
  225 + "indices":[
  226 + "Textual"
  227 + ]
  228 + }
  229 + },
  230 + {
  231 + "field":{
  232 + "name":"PrimaryBIOS",
  233 + "alias":"PrimaryBIOS",
  234 + "description":"PrimaryBIOS",
  235 + "datatype":"Text",
  236 + "required":false,
  237 + "multivalued":false,
  238 + "indices":[
  239 + "Textual"
  240 + ]
  241 + }
  242 + },
  243 + {
  244 + "field":{
  245 + "name":"ReleaseDate",
  246 + "alias":"ReleaseDate",
  247 + "description":"ReleaseDate",
  248 + "datatype":"Text",
  249 + "required":false,
  250 + "multivalued":false,
  251 + "indices":[
  252 + "Textual"
  253 + ]
  254 + }
  255 + },
  256 + {
  257 + "field":{
  258 + "name":"SerialNumber",
  259 + "alias":"SerialNumber",
  260 + "description":"SerialNumber",
  261 + "datatype":"Text",
  262 + "required":false,
  263 + "multivalued":false,
  264 + "indices":[
  265 + "Textual"
  266 + ]
  267 + }
  268 + },
  269 + {
  270 + "field":{
  271 + "name":"SMBIOSBIOSVersion",
  272 + "alias":"SMBIOSBIOSVersion",
  273 + "description":"SMBIOSBIOSVersion",
  274 + "datatype":"Text",
  275 + "required":false,
  276 + "multivalued":false,
  277 + "indices":[
  278 + "Textual"
  279 + ]
  280 + }
  281 + },
  282 + {
  283 + "field":{
  284 + "name":"SMBIOSMajorVersion",
  285 + "alias":"SMBIOSMajorVersion",
  286 + "description":"SMBIOSMajorVersion",
  287 + "datatype":"Text",
  288 + "required":false,
  289 + "multivalued":false,
  290 + "indices":[
  291 + "Textual"
  292 + ]
  293 + }
  294 + },
  295 + {
  296 + "field":{
  297 + "name":"SMBIOSMinorVersion",
  298 + "alias":"SMBIOSMinorVersion",
  299 + "description":"SMBIOSMinorVersion",
  300 + "datatype":"Text",
  301 + "required":false,
  302 + "multivalued":false,
  303 + "indices":[
  304 + "Textual"
  305 + ]
  306 + }
  307 + },
  308 + {
  309 + "field":{
  310 + "name":"SoftwareElementID",
  311 + "alias":"SoftwareElementID",
  312 + "description":"SoftwareElementID",
  313 + "datatype":"Text",
  314 + "required":false,
  315 + "multivalued":false,
  316 + "indices":[
  317 + "Textual"
  318 + ]
  319 + }
  320 + },
  321 + {
  322 + "field":{
  323 + "name":"Version",
  324 + "alias":"Version",
  325 + "description":"Version",
  326 + "datatype":"Text",
  327 + "required":false,
  328 + "multivalued":false,
  329 + "indices":[
  330 + "Textual"
  331 + ]
  332 + }
  333 + }
  334 + ]
  335 + }
  336 + },
  337 + {
  338 + "group":{
  339 + "metadata":{
  340 + "name":"Win32_KeyBoard",
  341 + "alias":"Win32_KeyBoard",
  342 + "description":"Win32_KeyBoard",
  343 + "multivalued":false
  344 + },
  345 + "content":[
  346 + {
  347 + "field":{
  348 + "name":"Caption",
  349 + "alias":"Caption",
  350 + "description":"Caption",
  351 + "datatype":"Text",
  352 + "required":false,
  353 + "multivalued":false,
  354 + "indices":[
  355 + "Textual"
  356 + ]
  357 + }
  358 + },
  359 + {
  360 + "field":{
  361 + "name":"Description",
  362 + "alias":"Description",
  363 + "description":"Description",
  364 + "datatype":"Text",
  365 + "required":false,
  366 + "multivalued":false,
  367 + "indices":[
  368 + "Textual"
  369 + ]
  370 + }
  371 + },
  372 + {
  373 + "field":{
  374 + "name":"Name",
  375 + "alias":"Name",
  376 + "description":"Name",
  377 + "datatype":"Text",
  378 + "required":false,
  379 + "multivalued":false,
  380 + "indices":[
  381 + "Textual"
  382 + ]
  383 + }
  384 + }
  385 + ]
  386 + }
  387 + },
  388 + {
  389 + "group":{
  390 + "metadata":{
  391 + "name":"Win32_MemoryDevice",
  392 + "alias":"Win32_MemoryDevice",
  393 + "description":"Win32_MemoryDevice",
  394 + "multivalued":false
  395 + },
  396 + "content":[
  397 + {
  398 + "field":{
  399 + "name":"Access",
  400 + "alias":"Access",
  401 + "description":"Access",
  402 + "datatype":"Text",
  403 + "required":false,
  404 + "multivalued":false,
  405 + "indices":[
  406 + "Textual"
  407 + ]
  408 + }
  409 + },
  410 + {
  411 + "field":{
  412 + "name":"Availability",
  413 + "alias":"Availability",
  414 + "description":"Availability",
  415 + "datatype":"Text",
  416 + "required":false,
  417 + "multivalued":false,
  418 + "indices":[
  419 + "Textual"
  420 + ]
  421 + }
  422 + },
  423 + {
  424 + "field":{
  425 + "name":"BlockSize",
  426 + "alias":"BlockSize",
  427 + "description":"BlockSize",
  428 + "datatype":"Text",
  429 + "required":false,
  430 + "multivalued":false,
  431 + "indices":[
  432 + "Textual"
  433 + ]
  434 + }
  435 + },
  436 + {
  437 + "field":{
  438 + "name":"Caption",
  439 + "alias":"Caption",
  440 + "description":"Caption",
  441 + "datatype":"Text",
  442 + "required":false,
  443 + "multivalued":false,
  444 + "indices":[
  445 + "Textual"
  446 + ]
  447 + }
  448 + },
  449 + {
  450 + "field":{
  451 + "name":"Description",
  452 + "alias":"Description",
  453 + "description":"Description",
  454 + "datatype":"Text",
  455 + "required":false,
  456 + "multivalued":false,
  457 + "indices":[
  458 + "Textual"
  459 + ]
  460 + }
  461 + },
  462 + {
  463 + "field":{
  464 + "name":"DeviceID",
  465 + "alias":"DeviceID",
  466 + "description":"DeviceID",
  467 + "datatype":"Text",
  468 + "required":false,
  469 + "multivalued":false,
  470 + "indices":[
  471 + "Textual"
  472 + ]
  473 + }
  474 + },
  475 + {
  476 + "field":{
  477 + "name":"EndingAddress",
  478 + "alias":"EndingAddress",
  479 + "description":"EndingAddress",
  480 + "datatype":"Text",
  481 + "required":false,
  482 + "multivalued":false,
  483 + "indices":[
  484 + "Textual"
  485 + ]
  486 + }
  487 + },
  488 + {
  489 + "field":{
  490 + "name":"InstallDate",
  491 + "alias":"InstallDate",
  492 + "description":"InstallDate",
  493 + "datatype":"Text",
  494 + "required":false,
  495 + "multivalued":false,
  496 + "indices":[
  497 + "Textual"
  498 + ]
  499 + }
  500 + },
  501 + {
  502 + "field":{
  503 + "name":"Name",
  504 + "alias":"Name",
  505 + "description":"Name",
  506 + "datatype":"Text",
  507 + "required":false,
  508 + "multivalued":false,
  509 + "indices":[
  510 + "Textual"
  511 + ]
  512 + }
  513 + },
  514 + {
  515 + "field":{
  516 + "name":"NumberOfBlocks",
  517 + "alias":"NumberOfBlocks",
  518 + "description":"NumberOfBlocks",
  519 + "datatype":"Text",
  520 + "required":false,
  521 + "multivalued":false,
  522 + "indices":[
  523 + "Textual"
  524 + ]
  525 + }
  526 + },
  527 + {
  528 + "field":{
  529 + "name":"PNPDeviceID",
  530 + "alias":"PNPDeviceID",
  531 + "description":"PNPDeviceID",
  532 + "datatype":"Text",
  533 + "required":false,
  534 + "multivalued":false,
  535 + "indices":[
  536 + "Textual"
  537 + ]
  538 + }
  539 + },
  540 + {
  541 + "field":{
  542 + "name":"Purpose",
  543 + "alias":"Purpose",
  544 + "description":"Purpose",
  545 + "datatype":"Text",
  546 + "required":false,
  547 + "multivalued":false,
  548 + "indices":[
  549 + "Textual"
  550 + ]
  551 + }
  552 + },
  553 + {
  554 + "field":{
  555 + "name":"SystemLevelAddress",
  556 + "alias":"SystemLevelAddress",
  557 + "description":"SystemLevelAddress",
  558 + "datatype":"Text",
  559 + "required":false,
  560 + "multivalued":false,
  561 + "indices":[
  562 + "Textual"
  563 + ]
  564 + }
  565 + },
  566 + {
  567 + "field":{
  568 + "name":"SystemName",
  569 + "alias":"SystemName",
  570 + "description":"SystemName",
  571 + "datatype":"Text",
  572 + "required":false,
  573 + "multivalued":false,
  574 + "indices":[
  575 + "Textual"
  576 + ]
  577 + }
  578 + }
  579 + ]
  580 + }
  581 + },
  582 + {
  583 + "group":{
  584 + "metadata":{
  585 + "name":"Win32_PhysicalMedia",
  586 + "alias":"Win32_PhysicalMedia",
  587 + "description":"Win32_PhysicalMedia",
  588 + "multivalued":false
  589 + },
  590 + "content":[
  591 + {
  592 + "field":{
  593 + "name":"Capacity",
  594 + "alias":"Capacity",
  595 + "description":"Capacity",
  596 + "datatype":"Text",
  597 + "required":false,
  598 + "multivalued":false,
  599 + "indices":[
  600 + "Textual"
  601 + ]
  602 + }
  603 + },
  604 + {
  605 + "field":{
  606 + "name":"Caption",
  607 + "alias":"Caption",
  608 + "description":"Caption",
  609 + "datatype":"Text",
  610 + "required":false,
  611 + "multivalued":false,
  612 + "indices":[
  613 + "Textual"
  614 + ]
  615 + }
  616 + },
  617 + {
  618 + "field":{
  619 + "name":"Description",
  620 + "alias":"Description",
  621 + "description":"Description",
  622 + "datatype":"Text",
  623 + "required":false,
  624 + "multivalued":false,
  625 + "indices":[
  626 + "Textual"
  627 + ]
  628 + }
  629 + },
  630 + {
  631 + "field":{
  632 + "name":"InstallDate",
  633 + "alias":"InstallDate",
  634 + "description":"InstallDate",
  635 + "datatype":"Text",
  636 + "required":false,
  637 + "multivalued":false,
  638 + "indices":[
  639 + "Textual"
  640 + ]
  641 + }
  642 + },
  643 + {
  644 + "field":{
  645 + "name":"Manufacturer",
  646 + "alias":"Manufacturer",
  647 + "description":"Manufacturer",
  648 + "datatype":"Text",
  649 + "required":false,
  650 + "multivalued":false,
  651 + "indices":[
  652 + "Textual"
  653 + ]
  654 + }
  655 + },
  656 + {
  657 + "field":{
  658 + "name":"MediaDescription",
  659 + "alias":"MediaDescription",
  660 + "description":"MediaDescription",
  661 + "datatype":"Text",
  662 + "required":false,
  663 + "multivalued":false,
  664 + "indices":[
  665 + "Textual"
  666 + ]
  667 + }
  668 + },
  669 + {
  670 + "field":{
  671 + "name":"MediaType",
  672 + "alias":"MediaType",
  673 + "description":"MediaType",
  674 + "datatype":"Text",
  675 + "required":false,
  676 + "multivalued":false,
  677 + "indices":[
  678 + "Textual"
  679 + ]
  680 + }
  681 + },
  682 + {
  683 + "field":{
  684 + "name":"Model",
  685 + "alias":"Model",
  686 + "description":"Model",
  687 + "datatype":"Text",
  688 + "required":false,
  689 + "multivalued":false,
  690 + "indices":[
  691 + "Textual"
  692 + ]
  693 + }
  694 + },
  695 + {
  696 + "field":{
  697 + "name":"Name",
  698 + "alias":"Name",
  699 + "description":"Name",
  700 + "datatype":"Text",
  701 + "required":false,
  702 + "multivalued":false,
  703 + "indices":[
  704 + "Textual"
  705 + ]
  706 + }
  707 + },
  708 + {
  709 + "field":{
  710 + "name":"OtherIdentifyingInfo",
  711 + "alias":"OtherIdentifyingInfo",
  712 + "description":"OtherIdentifyingInfo",
  713 + "datatype":"Text",
  714 + "required":false,
  715 + "multivalued":false,
  716 + "indices":[
  717 + "Textual"
  718 + ]
  719 + }
  720 + },
  721 + {
  722 + "field":{
  723 + "name":"PartNumber",
  724 + "alias":"PartNumber",
  725 + "description":"PartNumber",
  726 + "datatype":"Text",
  727 + "required":false,
  728 + "multivalued":false,
  729 + "indices":[
  730 + "Textual"
  731 + ]
  732 + }
  733 + },
  734 + {
  735 + "field":{
  736 + "name":"SerialNumber",
  737 + "alias":"SerialNumber",
  738 + "description":"SerialNumber",
  739 + "datatype":"Text",
  740 + "required":false,
  741 + "multivalued":false,
  742 + "indices":[
  743 + "Textual"
  744 + ]
  745 + }
  746 + },
  747 + {
  748 + "field":{
  749 + "name":"SKU",
  750 + "alias":"SKU",
  751 + "description":"SKU",
  752 + "datatype":"Text",
  753 + "required":false,
  754 + "multivalued":false,
  755 + "indices":[
  756 + "Textual"
  757 + ]
  758 + }
  759 + },
  760 + {
  761 + "field":{
  762 + "name":"Tag",
  763 + "alias":"Tag",
  764 + "description":"Tag",
  765 + "datatype":"Text",
  766 + "required":false,
  767 + "multivalued":false,
  768 + "indices":[
  769 + "Textual"
  770 + ]
  771 + }
  772 + },
  773 + {
  774 + "field":{
  775 + "name":"Version",
  776 + "alias":"Version",
  777 + "description":"Version",
  778 + "datatype":"Text",
  779 + "required":false,
  780 + "multivalued":false,
  781 + "indices":[
  782 + "Textual"
  783 + ]
  784 + }
  785 + }
  786 + ]
  787 + }
  788 + },
  789 + {
  790 + "group":{
  791 + "metadata":{
  792 + "name":"Win32_PhysicalMemory",
  793 + "alias":"Win32_PhysicalMemory",
  794 + "description":"Win32_PhysicalMemory",
  795 + "multivalued":false
  796 + },
  797 + "content":[
  798 + {
  799 + "field":{
  800 + "name":"BankLabel",
  801 + "alias":"BankLabel",
  802 + "description":"BankLabel",
  803 + "datatype":"Text",
  804 + "required":false,
  805 + "multivalued":false,
  806 + "indices":[
  807 + "Textual"
  808 + ]
  809 + }
  810 + },
  811 + {
  812 + "field":{
  813 + "name":"Capacity",
  814 + "alias":"Capacity",
  815 + "description":"Capacity",
  816 + "datatype":"Text",
  817 + "required":false,
  818 + "multivalued":false,
  819 + "indices":[
  820 + "Textual"
  821 + ]
  822 + }
  823 + },
  824 + {
  825 + "field":{
  826 + "name":"Caption",
  827 + "alias":"Caption",
  828 + "description":"Caption",
  829 + "datatype":"Text",
  830 + "required":false,
  831 + "multivalued":false,
  832 + "indices":[
  833 + "Textual"
  834 + ]
  835 + }
  836 + },
  837 + {
  838 + "field":{
  839 + "name":"DataWidth",
  840 + "alias":"DataWidth",
  841 + "description":"DataWidth",
  842 + "datatype":"Text",
  843 + "required":false,
  844 + "multivalued":false,
  845 + "indices":[
  846 + "Textual"
  847 + ]
  848 + }
  849 + },
  850 + {
  851 + "field":{
  852 + "name":"Description",
  853 + "alias":"Description",
  854 + "description":"Description",
  855 + "datatype":"Text",
  856 + "required":false,
  857 + "multivalued":false,
  858 + "indices":[
  859 + "Textual"
  860 + ]
  861 + }
  862 + },
  863 + {
  864 + "field":{
  865 + "name":"DeviceLocator",
  866 + "alias":"DeviceLocator",
  867 + "description":"DeviceLocator",
  868 + "datatype":"Text",
  869 + "required":false,
  870 + "multivalued":false,
  871 + "indices":[
  872 + "Textual"
  873 + ]
  874 + }
  875 + },
  876 + {
  877 + "field":{
  878 + "name":"FormFactor",
  879 + "alias":"FormFactor",
  880 + "description":"FormFactor",
  881 + "datatype":"Text",
  882 + "required":false,
  883 + "multivalued":false,
  884 + "indices":[
  885 + "Textual"
  886 + ]
  887 + }
  888 + },
  889 + {
  890 + "field":{
  891 + "name":"InstallDate",
  892 + "alias":"InstallDate",
  893 + "description":"InstallDate",
  894 + "datatype":"Text",
  895 + "required":false,
  896 + "multivalued":false,
  897 + "indices":[
  898 + "Textual"
  899 + ]
  900 + }
  901 + },
  902 + {
  903 + "field":{
  904 + "name":"InterleaveDataDepth",
  905 + "alias":"InterleaveDataDepth",
  906 + "description":"InterleaveDataDepth",
  907 + "datatype":"Text",
  908 + "required":false,
  909 + "multivalued":false,
  910 + "indices":[
  911 + "Textual"
  912 + ]
  913 + }
  914 + },
  915 + {
  916 + "field":{
  917 + "name":"InterleavePosition",
  918 + "alias":"InterleavePosition",
  919 + "description":"InterleavePosition",
  920 + "datatype":"Text",
  921 + "required":false,
  922 + "multivalued":false,
  923 + "indices":[
  924 + "Textual"
  925 + ]
  926 + }
  927 + },
  928 + {
  929 + "field":{
  930 + "name":"Manufacturer",
  931 + "alias":"Manufacturer",
  932 + "description":"Manufacturer",
  933 + "datatype":"Text",
  934 + "required":false,
  935 + "multivalued":false,
  936 + "indices":[
  937 + "Textual"
  938 + ]
  939 + }
  940 + },
  941 + {
  942 + "field":{
  943 + "name":"MemoryType",
  944 + "alias":"MemoryType",
  945 + "description":"MemoryType",
  946 + "datatype":"Text",
  947 + "required":false,
  948 + "multivalued":false,
  949 + "indices":[
  950 + "Textual"
  951 + ]
  952 + }
  953 + },
  954 + {
  955 + "field":{
  956 + "name":"Model",
  957 + "alias":"Model",
  958 + "description":"Model",
  959 + "datatype":"Text",
  960 + "required":false,
  961 + "multivalued":false,
  962 + "indices":[
  963 + "Textual"
  964 + ]
  965 + }
  966 + },
  967 + {
  968 + "field":{
  969 + "name":"Name",
  970 + "alias":"Name",
  971 + "description":"Name",
  972 + "datatype":"Text",
  973 + "required":false,
  974 + "multivalued":false,
  975 + "indices":[
  976 + "Textual"
  977 + ]
  978 + }
  979 + },
  980 + {
  981 + "field":{
  982 + "name":"OtherIdentifyingInfo",
  983 + "alias":"OtherIdentifyingInfo",
  984 + "description":"OtherIdentifyingInfo",
  985 + "datatype":"Text",
  986 + "required":false,
  987 + "multivalued":false,
  988 + "indices":[
  989 + "Textual"
  990 + ]
  991 + }
  992 + },
  993 + {
  994 + "field":{
  995 + "name":"PartNumber",
  996 + "alias":"PartNumber",
  997 + "description":"PartNumber",
  998 + "datatype":"Text",
  999 + "required":false,
  1000 + "multivalued":false,
  1001 + "indices":[
  1002 + "Textual"
  1003 + ]
  1004 + }
  1005 + },
  1006 + {
  1007 + "field":{
  1008 + "name":"PositionInRow",
  1009 + "alias":"PositionInRow",
  1010 + "description":"PositionInRow",
  1011 + "datatype":"Text",
  1012 + "required":false,
  1013 + "multivalued":false,
  1014 + "indices":[
  1015 + "Textual"
  1016 + ]
  1017 + }
  1018 + },
  1019 + {
  1020 + "field":{
  1021 + "name":"SerialNumber",
  1022 + "alias":"SerialNumber",
  1023 + "description":"SerialNumber",
  1024 + "datatype":"Text",
  1025 + "required":false,
  1026 + "multivalued":false,
  1027 + "indices":[
  1028 + "Textual"
  1029 + ]
  1030 + }
  1031 + },
  1032 + {
  1033 + "field":{
  1034 + "name":"SKU",
  1035 + "alias":"SKU",
  1036 + "description":"SKU",
  1037 + "datatype":"Text",
  1038 + "required":false,
  1039 + "multivalued":false,
  1040 + "indices":[
  1041 + "Textual"
  1042 + ]
  1043 + }
  1044 + },
  1045 + {
  1046 + "field":{
  1047 + "name":"Speed",
  1048 + "alias":"Speed",
  1049 + "description":"Speed",
  1050 + "datatype":"Text",
  1051 + "required":false,
  1052 + "multivalued":false,
  1053 + "indices":[
  1054 + "Textual"
  1055 + ]
  1056 + }
  1057 + },
  1058 + {
  1059 + "field":{
  1060 + "name":"Tag",
  1061 + "alias":"Tag",
  1062 + "description":"Tag",
  1063 + "datatype":"Text",
  1064 + "required":false,
  1065 + "multivalued":false,
  1066 + "indices":[
  1067 + "Textual"
  1068 + ]
  1069 + }
  1070 + },
  1071 + {
  1072 + "field":{
  1073 + "name":"TotalWidth",
  1074 + "alias":"TotalWidth",
  1075 + "description":"TotalWidth",
  1076 + "datatype":"Text",
  1077 + "required":false,
  1078 + "multivalued":false,
  1079 + "indices":[
  1080 + "Textual"
  1081 + ]
  1082 + }
  1083 + },
  1084 + {
  1085 + "field":{
  1086 + "name":"TypeDetail",
  1087 + "alias":"TypeDetail",
  1088 + "description":"TypeDetail",
  1089 + "datatype":"Text",
  1090 + "required":false,
  1091 + "multivalued":false,
  1092 + "indices":[
  1093 + "Textual"
  1094 + ]
  1095 + }
  1096 + },
  1097 + {
  1098 + "field":{
  1099 + "name":"Version",
  1100 + "alias":"Version",
  1101 + "description":"Version",
  1102 + "datatype":"Text",
  1103 + "required":false,
  1104 + "multivalued":false,
  1105 + "indices":[
  1106 + "Textual"
  1107 + ]
  1108 + }
  1109 + }
  1110 + ]
  1111 + }
  1112 + },
  1113 + {
  1114 + "group":{
  1115 + "metadata":{
  1116 + "name":"Win32_PointingDevice",
  1117 + "alias":"Win32_PointingDevice",
  1118 + "description":"Win32_PointingDevice",
  1119 + "multivalued":false
  1120 + },
  1121 + "content":[
  1122 + {
  1123 + "field":{
  1124 + "name":"Availability",
  1125 + "alias":"Availability",
  1126 + "description":"Availability",
  1127 + "datatype":"Text",
  1128 + "required":false,
  1129 + "multivalued":false,
  1130 + "indices":[
  1131 + "Textual"
  1132 + ]
  1133 + }
  1134 + },
  1135 + {
  1136 + "field":{
  1137 + "name":"Caption",
  1138 + "alias":"Caption",
  1139 + "description":"Caption",
  1140 + "datatype":"Text",
  1141 + "required":false,
  1142 + "multivalued":false,
  1143 + "indices":[
  1144 + "Textual"
  1145 + ]
  1146 + }
  1147 + },
  1148 + {
  1149 + "field":{
  1150 + "name":"Description",
  1151 + "alias":"Description",
  1152 + "description":"Description",
  1153 + "datatype":"Text",
  1154 + "required":false,
  1155 + "multivalued":false,
  1156 + "indices":[
  1157 + "Textual"
  1158 + ]
  1159 + }
  1160 + },
  1161 + {
  1162 + "field":{
  1163 + "name":"InstallDate",
  1164 + "alias":"InstallDate",
  1165 + "description":"InstallDate",
  1166 + "datatype":"Text",
  1167 + "required":false,
  1168 + "multivalued":false,
  1169 + "indices":[
  1170 + "Textual"
  1171 + ]
  1172 + }
  1173 + },
  1174 + {
  1175 + "field":{
  1176 + "name":"Manufacturer",
  1177 + "alias":"Manufacturer",
  1178 + "description":"Manufacturer",
  1179 + "datatype":"Text",
  1180 + "required":false,
  1181 + "multivalued":false,
  1182 + "indices":[
  1183 + "Textual"
  1184 + ]
  1185 + }
  1186 + },
  1187 + {
  1188 + "field":{
  1189 + "name":"Name",
  1190 + "alias":"Name",
  1191 + "description":"Name",
  1192 + "datatype":"Text",
  1193 + "required":false,
  1194 + "multivalued":false,
  1195 + "indices":[
  1196 + "Textual"
  1197 + ]
  1198 + }
  1199 + }
  1200 + ]
  1201 + }
  1202 + },
  1203 + {
  1204 + "group":{
  1205 + "metadata":{
  1206 + "name":"Win32_Printer",
  1207 + "alias":"Win32_Printer",
  1208 + "description":"Win32_Printer",
  1209 + "multivalued":false
  1210 + },
  1211 + "content":[
  1212 + {
  1213 + "field":{
  1214 + "name":"Attributes",
  1215 + "alias":"Attributes",
  1216 + "description":"Attributes",
  1217 + "datatype":"Text",
  1218 + "required":false,
  1219 + "multivalued":false,
  1220 + "indices":[
  1221 + "Textual"
  1222 + ]
  1223 + }
  1224 + },
  1225 + {
  1226 + "field":{
  1227 + "name":"Availability",
  1228 + "alias":"Availability",
  1229 + "description":"Availability",
  1230 + "datatype":"Text",
  1231 + "required":false,
  1232 + "multivalued":false,
  1233 + "indices":[
  1234 + "Textual"
  1235 + ]
  1236 + }
  1237 + },
  1238 + {
  1239 + "field":{
  1240 + "name":"Caption",
  1241 + "alias":"Caption",
  1242 + "description":"Caption",
  1243 + "datatype":"Text",
  1244 + "required":false,
  1245 + "multivalued":false,
  1246 + "indices":[
  1247 + "Textual"
  1248 + ]
  1249 + }
  1250 + },
  1251 + {
  1252 + "field":{
  1253 + "name":"CharSetsSupported",
  1254 + "alias":"CharSetsSupported",
  1255 + "description":"CharSetsSupported",
  1256 + "datatype":"Text",
  1257 + "required":false,
  1258 + "multivalued":false,
  1259 + "indices":[
  1260 + "Textual"
  1261 + ]
  1262 + }
  1263 + },
  1264 + {
  1265 + "field":{
  1266 + "name":"Comment",
  1267 + "alias":"Comment",
  1268 + "description":"Comment",
  1269 + "datatype":"Text",
  1270 + "required":false,
  1271 + "multivalued":false,
  1272 + "indices":[
  1273 + "Textual"
  1274 + ]
  1275 + }
  1276 + },
  1277 + {
  1278 + "field":{
  1279 + "name":"CurrentCharSet",
  1280 + "alias":"CurrentCharSet",
  1281 + "description":"CurrentCharSet",
  1282 + "datatype":"Text",
  1283 + "required":false,
  1284 + "multivalued":false,
  1285 + "indices":[
  1286 + "Textual"
  1287 + ]
  1288 + }
  1289 + },
  1290 + {
  1291 + "field":{
  1292 + "name":"Default",
  1293 + "alias":"Default",
  1294 + "description":"Default",
  1295 + "datatype":"Text",
  1296 + "required":false,
  1297 + "multivalued":false,
  1298 + "indices":[
  1299 + "Textual"
  1300 + ]
  1301 + }
  1302 + },
  1303 + {
  1304 + "field":{
  1305 + "name":"Description",
  1306 + "alias":"Description",
  1307 + "description":"Description",
  1308 + "datatype":"Text",
  1309 + "required":false,
  1310 + "multivalued":false,
  1311 + "indices":[
  1312 + "Textual"
  1313 + ]
  1314 + }
  1315 + },
  1316 + {
  1317 + "field":{
  1318 + "name":"DeviceID",
  1319 + "alias":"DeviceID",
  1320 + "description":"DeviceID",
  1321 + "datatype":"Text",
  1322 + "required":false,
  1323 + "multivalued":false,
  1324 + "indices":[
  1325 + "Textual"
  1326 + ]
  1327 + }
  1328 + },
  1329 + {
  1330 + "field":{
  1331 + "name":"Direct",
  1332 + "alias":"Direct",
  1333 + "description":"Direct",
  1334 + "datatype":"Text",
  1335 + "required":false,
  1336 + "multivalued":false,
  1337 + "indices":[
  1338 + "Textual"
  1339 + ]
  1340 + }
  1341 + },
  1342 + {
  1343 + "field":{
  1344 + "name":"DriverName",
  1345 + "alias":"DriverName",
  1346 + "description":"DriverName",
  1347 + "datatype":"Text",
  1348 + "required":false,
  1349 + "multivalued":false,
  1350 + "indices":[
  1351 + "Textual"
  1352 + ]
  1353 + }
  1354 + },
  1355 + {
  1356 + "field":{
  1357 + "name":"HorizontalResolution",
  1358 + "alias":"HorizontalResolution",
  1359 + "description":"HorizontalResolution",
  1360 + "datatype":"Text",
  1361 + "required":false,
  1362 + "multivalued":false,
  1363 + "indices":[
  1364 + "Textual"
  1365 + ]
  1366 + }
  1367 + },
  1368 + {
  1369 + "field":{
  1370 + "name":"InstallDate",
  1371 + "alias":"InstallDate",
  1372 + "description":"InstallDate",
  1373 + "datatype":"Text",
  1374 + "required":false,
  1375 + "multivalued":false,
  1376 + "indices":[
  1377 + "Textual"
  1378 + ]
  1379 + }
  1380 + },
  1381 + {
  1382 + "field":{
  1383 + "name":"JobCountSinceLastReset",
  1384 + "alias":"JobCountSinceLastReset",
  1385 + "description":"JobCountSinceLastReset",
  1386 + "datatype":"Text",
  1387 + "required":false,
  1388 + "multivalued":false,
  1389 + "indices":[
  1390 + "Textual"
  1391 + ]
  1392 + }
  1393 + },
  1394 + {
  1395 + "field":{
  1396 + "name":"KeepPrintedJobs",
  1397 + "alias":"KeepPrintedJobs",
  1398 + "description":"KeepPrintedJobs",
  1399 + "datatype":"Text",
  1400 + "required":false,
  1401 + "multivalued":false,
  1402 + "indices":[
  1403 + "Textual"
  1404 + ]
  1405 + }
  1406 + },
  1407 + {
  1408 + "field":{
  1409 + "name":"LanguagesSupported",
  1410 + "alias":"LanguagesSupported",
  1411 + "description":"LanguagesSupported",
  1412 + "datatype":"Text",
  1413 + "required":false,
  1414 + "multivalued":false,
  1415 + "indices":[
  1416 + "Textual"
  1417 + ]
  1418 + }
  1419 + },
  1420 + {
  1421 + "field":{
  1422 + "name":"Local",
  1423 + "alias":"Local",
  1424 + "description":"Local",
  1425 + "datatype":"Text",
  1426 + "required":false,
  1427 + "multivalued":false,
  1428 + "indices":[
  1429 + "Textual"
  1430 + ]
  1431 + }
  1432 + },
  1433 + {
  1434 + "field":{
  1435 + "name":"Location",
  1436 + "alias":"Location",
  1437 + "description":"Location",
  1438 + "datatype":"Text",
  1439 + "required":false,
  1440 + "multivalued":false,
  1441 + "indices":[
  1442 + "Textual"
  1443 + ]
  1444 + }
  1445 + },
  1446 + {
  1447 + "field":{
  1448 + "name":"MarkingTechnology",
  1449 + "alias":"MarkingTechnology",
  1450 + "description":"MarkingTechnology",
  1451 + "datatype":"Text",
  1452 + "required":false,
  1453 + "multivalued":false,
  1454 + "indices":[
  1455 + "Textual"
  1456 + ]
  1457 + }
  1458 + },
  1459 + {
  1460 + "field":{
  1461 + "name":"MaxCopies",
  1462 + "alias":"MaxCopies",
  1463 + "description":"MaxCopies",
  1464 + "datatype":"Text",
  1465 + "required":false,
  1466 + "multivalued":false,
  1467 + "indices":[
  1468 + "Textual"
  1469 + ]
  1470 + }
  1471 + },
  1472 + {
  1473 + "field":{
  1474 + "name":"MaxNumberUp",
  1475 + "alias":"MaxNumberUp",
  1476 + "description":"MaxNumberUp",
  1477 + "datatype":"Text",
  1478 + "required":false,
  1479 + "multivalued":false,
  1480 + "indices":[
  1481 + "Textual"
  1482 + ]
  1483 + }
  1484 + },
  1485 + {
  1486 + "field":{
  1487 + "name":"MaxSizeSupported",
  1488 + "alias":"MaxSizeSupported",
  1489 + "description":"MaxSizeSupported",
  1490 + "datatype":"Text",
  1491 + "required":false,
  1492 + "multivalued":false,
  1493 + "indices":[
  1494 + "Textual"
  1495 + ]
  1496 + }
  1497 + },
  1498 + {
  1499 + "field":{
  1500 + "name":"MimeTypesSupported",
  1501 + "alias":"MimeTypesSupported",
  1502 + "description":"MimeTypesSupported",
  1503 + "datatype":"Text",
  1504 + "required":false,
  1505 + "multivalued":false,
  1506 + "indices":[
  1507 + "Textual"
  1508 + ]
  1509 + }
  1510 + },
  1511 + {
  1512 + "field":{
  1513 + "name":"Name",
  1514 + "alias":"Name",
  1515 + "description":"Name",
  1516 + "datatype":"Text",
  1517 + "required":false,
  1518 + "multivalued":false,
  1519 + "indices":[
  1520 + "Textual"
  1521 + ]
  1522 + }
  1523 + },
  1524 + {
  1525 + "field":{
  1526 + "name":"Network",
  1527 + "alias":"Network",
  1528 + "description":"Network",
  1529 + "datatype":"Text",
  1530 + "required":false,
  1531 + "multivalued":false,
  1532 + "indices":[
  1533 + "Textual"
  1534 + ]
  1535 + }
  1536 + },
  1537 + {
  1538 + "field":{
  1539 + "name":"PaperSizesSupported",
  1540 + "alias":"PaperSizesSupported",
  1541 + "description":"PaperSizesSupported",
  1542 + "datatype":"Text",
  1543 + "required":false,
  1544 + "multivalued":false,
  1545 + "indices":[
  1546 + "Textual"
  1547 + ]
  1548 + }
  1549 + },
  1550 + {
  1551 + "field":{
  1552 + "name":"PaperTypesAvailable",
  1553 + "alias":"PaperTypesAvailable",
  1554 + "description":"PaperTypesAvailable",
  1555 + "datatype":"Text",
  1556 + "required":false,
  1557 + "multivalued":false,
  1558 + "indices":[
  1559 + "Textual"
  1560 + ]
  1561 + }
  1562 + },
  1563 + {
  1564 + "field":{
  1565 + "name":"Parameters",
  1566 + "alias":"Parameters",
  1567 + "description":"Parameters",
  1568 + "datatype":"Text",
  1569 + "required":false,
  1570 + "multivalued":false,
  1571 + "indices":[
  1572 + "Textual"
  1573 + ]
  1574 + }
  1575 + },
  1576 + {
  1577 + "field":{
  1578 + "name":"PNPDeviceID",
  1579 + "alias":"PNPDeviceID",
  1580 + "description":"PNPDeviceID",
  1581 + "datatype":"Text",
  1582 + "required":false,
  1583 + "multivalued":false,
  1584 + "indices":[
  1585 + "Textual"
  1586 + ]
  1587 + }
  1588 + },
  1589 + {
  1590 + "field":{
  1591 + "name":"PortName",
  1592 + "alias":"PortName",
  1593 + "description":"PortName",
  1594 + "datatype":"Text",
  1595 + "required":false,
  1596 + "multivalued":false,
  1597 + "indices":[
  1598 + "Textual"
  1599 + ]
  1600 + }
  1601 + },
  1602 + {
  1603 + "field":{
  1604 + "name":"PrintProcessor",
  1605 + "alias":"PrintProcessor",
  1606 + "description":"PrintProcessor",
  1607 + "datatype":"Text",
  1608 + "required":false,
  1609 + "multivalued":false,
  1610 + "indices":[
  1611 + "Textual"
  1612 + ]
  1613 + }
  1614 + },
  1615 + {
  1616 + "field":{
  1617 + "name":"ServerName",
  1618 + "alias":"ServerName",
  1619 + "description":"ServerName",
  1620 + "datatype":"Text",
  1621 + "required":false,
  1622 + "multivalued":false,
  1623 + "indices":[
  1624 + "Textual"
  1625 + ]
  1626 + }
  1627 + },
  1628 + {
  1629 + "field":{
  1630 + "name":"Shared",
  1631 + "alias":"Shared",
  1632 + "description":"Shared",
  1633 + "datatype":"Text",
  1634 + "required":false,
  1635 + "multivalued":false,
  1636 + "indices":[
  1637 + "Textual"
  1638 + ]
  1639 + }
  1640 + },
  1641 + {
  1642 + "field":{
  1643 + "name":"ShareName",
  1644 + "alias":"ShareName",
  1645 + "description":"ShareName",
  1646 + "datatype":"Text",
  1647 + "required":false,
  1648 + "multivalued":false,
  1649 + "indices":[
  1650 + "Textual"
  1651 + ]
  1652 + }
  1653 + },
  1654 + {
  1655 + "field":{
  1656 + "name":"SpoolEnabled",
  1657 + "alias":"SpoolEnabled",
  1658 + "description":"SpoolEnabled",
  1659 + "datatype":"Text",
  1660 + "required":false,
  1661 + "multivalued":false,
  1662 + "indices":[
  1663 + "Textual"
  1664 + ]
  1665 + }
  1666 + },
  1667 + {
  1668 + "field":{
  1669 + "name":"SystemName",
  1670 + "alias":"SystemName",
  1671 + "description":"SystemName",
  1672 + "datatype":"Text",
  1673 + "required":false,
  1674 + "multivalued":false,
  1675 + "indices":[
  1676 + "Textual"
  1677 + ]
  1678 + }
  1679 + },
  1680 + {
  1681 + "field":{
  1682 + "name":"VerticalResolution",
  1683 + "alias":"VerticalResolution",
  1684 + "description":"VerticalResolution",
  1685 + "datatype":"Text",
  1686 + "required":false,
  1687 + "multivalued":false,
  1688 + "indices":[
  1689 + "Textual"
  1690 + ]
  1691 + }
  1692 + },
  1693 + {
  1694 + "field":{
  1695 + "name":"WorkOffline",
  1696 + "alias":"WorkOffline",
  1697 + "description":"WorkOffline",
  1698 + "datatype":"Text",
  1699 + "required":false,
  1700 + "multivalued":false,
  1701 + "indices":[
  1702 + "Textual"
  1703 + ]
  1704 + }
  1705 + }
  1706 + ]
  1707 + }
  1708 + },
  1709 + {
  1710 + "group":{
  1711 + "metadata":{
  1712 + "name":"Win32_Processor",
  1713 + "alias":"Win32_Processor",
  1714 + "description":"Win32_Processorr",
  1715 + "multivalued":false
  1716 + },
  1717 + "content":[
  1718 + {
  1719 + "field":{
  1720 + "name":"AddressWidth",
  1721 + "alias":"AddressWidth",
  1722 + "description":"AddressWidth",
  1723 + "datatype":"Text",
  1724 + "required":false,
  1725 + "multivalued":false,
  1726 + "indices":[
  1727 + "Textual"
  1728 + ]
  1729 + }
  1730 + },
  1731 + {
  1732 + "field":{
  1733 + "name":"Availability",
  1734 + "alias":"Availability",
  1735 + "description":"Availability",
  1736 + "datatype":"Text",
  1737 + "required":false,
  1738 + "multivalued":false,
  1739 + "indices":[
  1740 + "Textual"
  1741 + ]
  1742 + }
  1743 + },
  1744 + {
  1745 + "field":{
  1746 + "name":"Architecture",
  1747 + "alias":"Architecture",
  1748 + "description":"Architecture",
  1749 + "datatype":"Text",
  1750 + "required":false,
  1751 + "multivalued":false,
  1752 + "indices":[
  1753 + "Textual"
  1754 + ]
  1755 + }
  1756 + },
  1757 + {
  1758 + "field":{
  1759 + "name":"Caption",
  1760 + "alias":"Caption",
  1761 + "description":"Caption",
  1762 + "datatype":"Text",
  1763 + "required":false,
  1764 + "multivalued":false,
  1765 + "indices":[
  1766 + "Textual"
  1767 + ]
  1768 + }
  1769 + },
  1770 + {
  1771 + "field":{
  1772 + "name":"DataWidth",
  1773 + "alias":"DataWidth",
  1774 + "description":"DataWidth",
  1775 + "datatype":"Text",
  1776 + "required":false,
  1777 + "multivalued":false,
  1778 + "indices":[
  1779 + "Textual"
  1780 + ]
  1781 + }
  1782 + },
  1783 + {
  1784 + "field":{
  1785 + "name":"Description",
  1786 + "alias":"Description",
  1787 + "description":"Description",
  1788 + "datatype":"Text",
  1789 + "required":false,
  1790 + "multivalued":false,
  1791 + "indices":[
  1792 + "Textual"
  1793 + ]
  1794 + }
  1795 + },
  1796 + {
  1797 + "field":{
  1798 + "name":"DeviceID",
  1799 + "alias":"DeviceID",
  1800 + "description":"DeviceID",
  1801 + "datatype":"Text",
  1802 + "required":false,
  1803 + "multivalued":false,
  1804 + "indices":[
  1805 + "Textual"
  1806 + ]
  1807 + }
  1808 + },
  1809 + {
  1810 + "field":{
  1811 + "name":"ExtClock",
  1812 + "alias":"ExtClock",
  1813 + "description":"ExtClock",
  1814 + "datatype":"Text",
  1815 + "required":false,
  1816 + "multivalued":false,
  1817 + "indices":[
  1818 + "Textual"
  1819 + ]
  1820 + }
  1821 + },
  1822 + {
  1823 + "field":{
  1824 + "name":"Family",
  1825 + "alias":"Family",
  1826 + "description":"Family",
  1827 + "datatype":"Text",
  1828 + "required":false,
  1829 + "multivalued":false,
  1830 + "indices":[
  1831 + "Textual"
  1832 + ]
  1833 + }
  1834 + },
  1835 + {
  1836 + "field":{
  1837 + "name":"L2CacheSize",
  1838 + "alias":"L2CacheSize",
  1839 + "description":"L2CacheSize",
  1840 + "datatype":"Text",
  1841 + "required":false,
  1842 + "multivalued":false,
  1843 + "indices":[
  1844 + "Textual"
  1845 + ]
  1846 + }
  1847 + },
  1848 + {
  1849 + "field":{
  1850 + "name":"L2CacheSpeed",
  1851 + "alias":"L2CacheSpeed",
  1852 + "description":"L2CacheSpeed",
  1853 + "datatype":"Text",
  1854 + "required":false,
  1855 + "multivalued":false,
  1856 + "indices":[
  1857 + "Textual"
  1858 + ]
  1859 + }
  1860 + },
  1861 + {
  1862 + "field":{
  1863 + "name":"Level",
  1864 + "alias":"Level",
  1865 + "description":"Level",
  1866 + "datatype":"Text",
  1867 + "required":false,
  1868 + "multivalued":false,
  1869 + "indices":[
  1870 + "Textual"
  1871 + ]
  1872 + }
  1873 + },
  1874 + {
  1875 + "field":{
  1876 + "name":"Manufacturer",
  1877 + "alias":"Manufacturer",
  1878 + "description":"Manufacturer",
  1879 + "datatype":"Text",
  1880 + "required":false,
  1881 + "multivalued":false,
  1882 + "indices":[
  1883 + "Textual"
  1884 + ]
  1885 + }
  1886 + },
  1887 + {
  1888 + "field":{
  1889 + "name":"MaxClockSpeed",
  1890 + "alias":"MaxClockSpeed",
  1891 + "description":"MaxClockSpeed",
  1892 + "datatype":"Text",
  1893 + "required":false,
  1894 + "multivalued":false,
  1895 + "indices":[
  1896 + "Textual"
  1897 + ]
  1898 + }
  1899 + },
  1900 + {
  1901 + "field":{
  1902 + "name":"Name",
  1903 + "alias":"Name",
  1904 + "description":"Name",
  1905 + "datatype":"Text",
  1906 + "required":false,
  1907 + "multivalued":false,
  1908 + "indices":[
  1909 + "Textual"
  1910 + ]
  1911 + }
  1912 + },
  1913 + {
  1914 + "field":{
  1915 + "name":"NumberOfCores",
  1916 + "alias":"NumberOfCores",
  1917 + "description":"NumberOfCores",
  1918 + "datatype":"Text",
  1919 + "required":false,
  1920 + "multivalued":false,
  1921 + "indices":[
  1922 + "Textual"
  1923 + ]
  1924 + }
  1925 + },
  1926 + {
  1927 + "field":{
  1928 + "name":"NumberOfLogicalProcessors",
  1929 + "alias":"NumberOfLogicalProcessors",
  1930 + "description":"NumberOfLogicalProcessors",
  1931 + "datatype":"Text",
  1932 + "required":false,
  1933 + "multivalued":false,
  1934 + "indices":[
  1935 + "Textual"
  1936 + ]
  1937 + }
  1938 + },
  1939 + {
  1940 + "field":{
  1941 + "name":"ProcessorId",
  1942 + "alias":"ProcessorId",
  1943 + "description":"ProcessorId",
  1944 + "datatype":"Text",
  1945 + "required":false,
  1946 + "multivalued":false,
  1947 + "indices":[
  1948 + "Textual"
  1949 + ]
  1950 + }
  1951 + },
  1952 + {
  1953 + "field":{
  1954 + "name":"ProcessorType",
  1955 + "alias":"ProcessorType",
  1956 + "description":"ProcessorType",
  1957 + "datatype":"Text",
  1958 + "required":false,
  1959 + "multivalued":false,
  1960 + "indices":[
  1961 + "Textual"
  1962 + ]
  1963 + }
  1964 + },
  1965 + {
  1966 + "field":{
  1967 + "name":"Revision",
  1968 + "alias":"Revision",
  1969 + "description":"Revision",
  1970 + "datatype":"Text",
  1971 + "required":false,
  1972 + "multivalued":false,
  1973 + "indices":[
  1974 + "Textual"
  1975 + ]
  1976 + }
  1977 + },
  1978 + {
  1979 + "field":{
  1980 + "name":"Role",
  1981 + "alias":"Role",
  1982 + "description":"Role",
  1983 + "datatype":"Text",
  1984 + "required":false,
  1985 + "multivalued":false,
  1986 + "indices":[
  1987 + "Textual"
  1988 + ]
  1989 + }
  1990 + },
  1991 + {
  1992 + "field":{
  1993 + "name":"SocketDesignation",
  1994 + "alias":"SocketDesignation",
  1995 + "description":"SocketDesignation",
  1996 + "datatype":"Text",
  1997 + "required":false,
  1998 + "multivalued":false,
  1999 + "indices":[
  2000 + "Textual"
  2001 + ]
  2002 + }
  2003 + },
  2004 + {
  2005 + "field":{
  2006 + "name":"SystemName",
  2007 + "alias":"SystemName",
  2008 + "description":"SystemName",
  2009 + "datatype":"Text",
  2010 + "required":false,
  2011 + "multivalued":false,
  2012 + "indices":[
  2013 + "Textual"
  2014 + ]
  2015 + }
  2016 + },
  2017 + {
  2018 + "field":{
  2019 + "name":"UpgradeMethod",
  2020 + "alias":"UpgradeMethod",
  2021 + "description":"UpgradeMethod",
  2022 + "datatype":"Text",
  2023 + "required":false,
  2024 + "multivalued":false,
  2025 + "indices":[
  2026 + "Textual"
  2027 + ]
  2028 + }
  2029 + },
  2030 + {
  2031 + "field":{
  2032 + "name":"Version",
  2033 + "alias":"Version",
  2034 + "description":"Version",
  2035 + "datatype":"Text",
  2036 + "required":false,
  2037 + "multivalued":false,
  2038 + "indices":[
  2039 + "Textual"
  2040 + ]
  2041 + }
  2042 + }
  2043 + ]
  2044 + }
  2045 + }
  2046 + ]
  2047 +}
0 2048 \ No newline at end of file
... ...
wscserver/static/middlebg.png 0 → 100644

2.73 KB

wscserver/static/pylons.css 0 → 100644
  1 +++ a/wscserver/static/pylons.css
... ... @@ -0,0 +1,372 @@
  1 +html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, font, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td
  2 +{
  3 + margin: 0;
  4 + padding: 0;
  5 + border: 0;
  6 + outline: 0;
  7 + font-size: 100%; /* 16px */
  8 + vertical-align: baseline;
  9 + background: transparent;
  10 +}
  11 +
  12 +body
  13 +{
  14 + line-height: 1;
  15 +}
  16 +
  17 +ol, ul
  18 +{
  19 + list-style: none;
  20 +}
  21 +
  22 +blockquote, q
  23 +{
  24 + quotes: none;
  25 +}
  26 +
  27 +blockquote:before, blockquote:after, q:before, q:after
  28 +{
  29 + content: '';
  30 + content: none;
  31 +}
  32 +
  33 +:focus
  34 +{
  35 + outline: 0;
  36 +}
  37 +
  38 +ins
  39 +{
  40 + text-decoration: none;
  41 +}
  42 +
  43 +del
  44 +{
  45 + text-decoration: line-through;
  46 +}
  47 +
  48 +table
  49 +{
  50 + border-collapse: collapse;
  51 + border-spacing: 0;
  52 +}
  53 +
  54 +sub
  55 +{
  56 + vertical-align: sub;
  57 + font-size: smaller;
  58 + line-height: normal;
  59 +}
  60 +
  61 +sup
  62 +{
  63 + vertical-align: super;
  64 + font-size: smaller;
  65 + line-height: normal;
  66 +}
  67 +
  68 +ul, menu, dir
  69 +{
  70 + display: block;
  71 + list-style-type: disc;
  72 + margin: 1em 0;
  73 + padding-left: 40px;
  74 +}
  75 +
  76 +ol
  77 +{
  78 + display: block;
  79 + list-style-type: decimal-leading-zero;
  80 + margin: 1em 0;
  81 + padding-left: 40px;
  82 +}
  83 +
  84 +li
  85 +{
  86 + display: list-item;
  87 +}
  88 +
  89 +ul ul, ul ol, ul dir, ul menu, ul dl, ol ul, ol ol, ol dir, ol menu, ol dl, dir ul, dir ol, dir dir, dir menu, dir dl, menu ul, menu ol, menu dir, menu menu, menu dl, dl ul, dl ol, dl dir, dl menu, dl dl
  90 +{
  91 + margin-top: 0;
  92 + margin-bottom: 0;
  93 +}
  94 +
  95 +ol ul, ul ul, menu ul, dir ul, ol menu, ul menu, menu menu, dir menu, ol dir, ul dir, menu dir, dir dir
  96 +{
  97 + list-style-type: circle;
  98 +}
  99 +
  100 +ol ol ul, ol ul ul, ol menu ul, ol dir ul, ol ol menu, ol ul menu, ol menu menu, ol dir menu, ol ol dir, ol ul dir, ol menu dir, ol dir dir, ul ol ul, ul ul ul, ul menu ul, ul dir ul, ul ol menu, ul ul menu, ul menu menu, ul dir menu, ul ol dir, ul ul dir, ul menu dir, ul dir dir, menu ol ul, menu ul ul, menu menu ul, menu dir ul, menu ol menu, menu ul menu, menu menu menu, menu dir menu, menu ol dir, menu ul dir, menu menu dir, menu dir dir, dir ol ul, dir ul ul, dir menu ul, dir dir ul, dir ol menu, dir ul menu, dir menu menu, dir dir menu, dir ol dir, dir ul dir, dir menu dir, dir dir dir
  101 +{
  102 + list-style-type: square;
  103 +}
  104 +
  105 +.hidden
  106 +{
  107 + display: none;
  108 +}
  109 +
  110 +p
  111 +{
  112 + line-height: 1.5em;
  113 +}
  114 +
  115 +h1
  116 +{
  117 + font-size: 1.75em;
  118 + line-height: 1.7em;
  119 + font-family: helvetica, verdana;
  120 +}
  121 +
  122 +h2
  123 +{
  124 + font-size: 1.5em;
  125 + line-height: 1.7em;
  126 + font-family: helvetica, verdana;
  127 +}
  128 +
  129 +h3
  130 +{
  131 + font-size: 1.25em;
  132 + line-height: 1.7em;
  133 + font-family: helvetica, verdana;
  134 +}
  135 +
  136 +h4
  137 +{
  138 + font-size: 1em;
  139 + line-height: 1.7em;
  140 + font-family: helvetica, verdana;
  141 +}
  142 +
  143 +html, body
  144 +{
  145 + width: 100%;
  146 + height: 100%;
  147 +}
  148 +
  149 +body
  150 +{
  151 + margin: 0;
  152 + padding: 0;
  153 + background-color: #fff;
  154 + position: relative;
  155 + font: 16px/24px NobileRegular, "Lucida Grande", Lucida, Verdana, sans-serif;
  156 +}
  157 +
  158 +a
  159 +{
  160 + color: #1b61d6;
  161 + text-decoration: none;
  162 +}
  163 +
  164 +a:hover
  165 +{
  166 + color: #e88f00;
  167 + text-decoration: underline;
  168 +}
  169 +
  170 +body h1, body h2, body h3, body h4, body h5, body h6
  171 +{
  172 + font-family: NeutonRegular, "Lucida Grande", Lucida, Verdana, sans-serif;
  173 + font-weight: 400;
  174 + color: #373839;
  175 + font-style: normal;
  176 +}
  177 +
  178 +#wrap
  179 +{
  180 + min-height: 100%;
  181 +}
  182 +
  183 +#header, #footer
  184 +{
  185 + width: 100%;
  186 + color: #fff;
  187 + height: 40px;
  188 + position: absolute;
  189 + text-align: center;
  190 + line-height: 40px;
  191 + overflow: hidden;
  192 + font-size: 12px;
  193 + vertical-align: middle;
  194 +}
  195 +
  196 +#header
  197 +{
  198 + background: #000;
  199 + top: 0;
  200 + font-size: 14px;
  201 +}
  202 +
  203 +#footer
  204 +{
  205 + bottom: 0;
  206 + background: #000 url(footerbg.png) repeat-x 0 top;
  207 + position: relative;
  208 + margin-top: -40px;
  209 + clear: both;
  210 +}
  211 +
  212 +.header, .footer
  213 +{
  214 + width: 750px;
  215 + margin-right: auto;
  216 + margin-left: auto;
  217 +}
  218 +
  219 +.wrapper
  220 +{
  221 + width: 100%;
  222 +}
  223 +
  224 +#top, #top-small, #bottom
  225 +{
  226 + width: 100%;
  227 +}
  228 +
  229 +#top
  230 +{
  231 + color: #000;
  232 + height: 230px;
  233 + background: #fff url(headerbg.png) repeat-x 0 top;
  234 + position: relative;
  235 +}
  236 +
  237 +#top-small
  238 +{
  239 + color: #000;
  240 + height: 60px;
  241 + background: #fff url(headerbg.png) repeat-x 0 top;
  242 + position: relative;
  243 +}
  244 +
  245 +#bottom
  246 +{
  247 + color: #222;
  248 + background-color: #fff;
  249 +}
  250 +
  251 +.top, .top-small, .middle, .bottom
  252 +{
  253 + width: 750px;
  254 + margin-right: auto;
  255 + margin-left: auto;
  256 +}
  257 +
  258 +.top
  259 +{
  260 + padding-top: 40px;
  261 +}
  262 +
  263 +.top-small
  264 +{
  265 + padding-top: 10px;
  266 +}
  267 +
  268 +#middle
  269 +{
  270 + width: 100%;
  271 + height: 100px;
  272 + background: url(middlebg.png) repeat-x;
  273 + border-top: 2px solid #fff;
  274 + border-bottom: 2px solid #b2b2b2;
  275 +}
  276 +
  277 +.app-welcome
  278 +{
  279 + margin-top: 25px;
  280 +}
  281 +
  282 +.app-name
  283 +{
  284 + color: #000;
  285 + font-weight: 700;
  286 +}
  287 +
  288 +.bottom
  289 +{
  290 + padding-top: 50px;
  291 +}
  292 +
  293 +#left
  294 +{
  295 + width: 350px;
  296 + float: left;
  297 + padding-right: 25px;
  298 +}
  299 +
  300 +#right
  301 +{
  302 + width: 350px;
  303 + float: right;
  304 + padding-left: 25px;
  305 +}
  306 +
  307 +.align-left
  308 +{
  309 + text-align: left;
  310 +}
  311 +
  312 +.align-right
  313 +{
  314 + text-align: right;
  315 +}
  316 +
  317 +.align-center
  318 +{
  319 + text-align: center;
  320 +}
  321 +
  322 +ul.links
  323 +{
  324 + margin: 0;
  325 + padding: 0;
  326 +}
  327 +
  328 +ul.links li
  329 +{
  330 + list-style-type: none;
  331 + font-size: 14px;
  332 +}
  333 +
  334 +form
  335 +{
  336 + border-style: none;
  337 +}
  338 +
  339 +fieldset
  340 +{
  341 + border-style: none;
  342 +}
  343 +
  344 +input
  345 +{
  346 + color: #222;
  347 + border: 1px solid #ccc;
  348 + font-family: sans-serif;
  349 + font-size: 12px;
  350 + line-height: 16px;
  351 +}
  352 +
  353 +input[type=text], input[type=password]
  354 +{
  355 + width: 205px;
  356 +}
  357 +
  358 +input[type=submit]
  359 +{
  360 + background-color: #ddd;
  361 + font-weight: 700;
  362 +}
  363 +
  364 +/*Opera Fix*/
  365 +body:before
  366 +{
  367 + content: "";
  368 + height: 100%;
  369 + float: left;
  370 + width: 0;
  371 + margin-top: -32767px;
  372 +}
... ...
wscserver/static/pyramid-small.png 0 → 100644

6.88 KB

wscserver/static/pyramid.png 0 → 100644

32.3 KB

wscserver/static/transparent.gif 0 → 100644

49 Bytes

wscserver/view/__init__.py 0 → 100644
  1 +++ a/wscserver/view/__init__.py
... ... @@ -0,0 +1 @@
  1 +# package
0 2 \ No newline at end of file
... ...
wscserver/view/restfulview.py 0 → 100755
  1 +++ a/wscserver/view/restfulview.py
... ... @@ -0,0 +1,82 @@
  1 +from pyramid_restler.view import RESTfulView
  2 +from collections import defaultdict
  3 +import json
  4 +import hashlib
  5 +
  6 +class CustomRESTfulView(RESTfulView):
  7 +
  8 + """
  9 + Classe com parametros personalizados de view dos registros
  10 + para as classes WMI
  11 + """
  12 +
  13 + def check_empty(self, classes, nome_classe):
  14 + # Ensure variable is defined
  15 + try:
  16 + classe = classes[nome_classe]
  17 + except KeyError:
  18 + classe = {}
  19 + return classe
  20 +
  21 + def render_json(self, value):
  22 +
  23 + dados_banco = json.loads(self.context.to_json(value, self.fields,
  24 + wrap=False))
  25 +
  26 + saida = {}
  27 + for computador in dados_banco:
  28 + # Cria as chaves dos computadores
  29 + saida[computador['id_computador']] = {}
  30 +
  31 + for x in dados_banco:
  32 + # Cria as chaves de classes nos computadores
  33 + saida[x['id_computador']][x['nm_class_name']] = {}
  34 +
  35 + for x in dados_banco:
  36 + # cria as chaves de propriedades nas classes
  37 + saida[x['id_computador']]['data_coleta'] = x['dt_hr_inclusao']
  38 + saida[x['id_computador']][x['nm_class_name']][
  39 + x['nm_property_name']] = x['te_class_property_value']
  40 +
  41 + results = []
  42 + # Ordena os objetos json
  43 + for computador in saida:
  44 + # data_coleta = computador['dt_hr_inclusao'] <TODO>
  45 + classes = {}
  46 + for classe in saida[computador]:
  47 + if classe != 'data_coleta':
  48 + # Aqui estou nas classes
  49 + classes[classe] = saida[computador][classe]
  50 +
  51 + # Gera um hash para o id_computador
  52 + h = hashlib.sha256()
  53 + h.update(str(computador).encode('utf-8'))
  54 + computador = h.hexdigest()
  55 +
  56 +
  57 + results.append({
  58 + 'id_reg': computador,
  59 + 'Win32_PhysicalMedia': [self.check_empty(classes, 'Win32_PhysicalMedia')],
  60 + 'Win32_ComputerSystem': [self.check_empty(classes, 'Win32_ComputerSystem')],
  61 + 'Win32_Keyboard': [self.check_empty(classes, 'Win32_Keyboard')],
  62 + 'Win32_NetworkAdapter': [self.check_empty(classes, 'Win32_NetworkAdapter')],
  63 + 'Win32_PointingDevice': [self.check_empty(classes, 'Win32_PointingDevice')],
  64 + 'Win32_MemoryDevice': [self.check_empty(classes, 'Win32_MemoryDevice')],
  65 + 'Win32_PhysicalMemory': [self.check_empty(classes, 'Win32_PhysicalMemory')],
  66 + 'Win32_BaseBoard': [self.check_empty(classes, 'Win32_BaseBoard')],
  67 + 'Win32_Printer': [self.check_empty(classes, 'Win32_Printer')],
  68 + 'Win32_Processor': [self.check_empty(classes, 'Win32_Processor')],
  69 + 'Win32_DesktopMonitor': [self.check_empty(classes, 'Win32_DesktopMonitor')],
  70 + 'Win32_BIOS': [self.check_empty(classes, 'Win32_BIOS')],
  71 + })
  72 +
  73 + valores = {
  74 + 'results': results,
  75 + 'result_count': len(results)
  76 + }
  77 +
  78 + response_data = dict(
  79 + body=json.dumps(valores),
  80 + content_type='application/json'
  81 + )
  82 + return response_data
... ...
wscserver/views.py 0 → 100644
  1 +++ a/wscserver/views.py
... ... @@ -0,0 +1,12 @@
  1 +from pyramid.view import view_config
  2 +from pyramid.response import FileResponse
  3 +from wscserver.scripts.createzip import zipcoleta
  4 +import os
  5 +
  6 +@view_config(route_name='download')
  7 +def download(request):
  8 + filepath = zipcoleta()
  9 + # filesize = str(os.path.getsize(filepath))
  10 + response = FileResponse(filepath,request=request,
  11 + content_type='application/zip')
  12 + return response
0 13 \ No newline at end of file
... ...