Commit 042b876846297ce1a1f32149c97782b1b17932ad
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
Showing
45 changed files
with
4246 additions
and
0 deletions
Show diff stats
1 | +++ a/README.txt | ||
@@ -0,0 +1,14 @@ | @@ -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 | + |
1 | +++ a/coleta.txt | ||
@@ -0,0 +1,65 @@ | @@ -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 | \ No newline at end of file | 66 | \ No newline at end of file |
1 | +++ a/development.ini | ||
@@ -0,0 +1,49 @@ | @@ -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 |
1 | +++ a/production.ini | ||
@@ -0,0 +1,49 @@ | @@ -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 |
1 | +++ a/setup.cfg | ||
@@ -0,0 +1,27 @@ | @@ -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 |
1 | +++ a/setup.py | ||
@@ -0,0 +1,50 @@ | @@ -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 | \ No newline at end of file | 51 | \ No newline at end of file |
1 | +++ a/wscserver/__init__.py | ||
@@ -0,0 +1,23 @@ | @@ -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() |
1 | +++ a/wscserver/config/__init__.py |
1 | +++ a/wscserver/config/routing.py | ||
@@ -0,0 +1,15 @@ | @@ -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() |
1 | +++ a/wscserver/model/Acao.py | ||
@@ -0,0 +1,66 @@ | @@ -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) |
1 | +++ a/wscserver/model/AcaoExcecao.py | ||
@@ -0,0 +1,59 @@ | @@ -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) |
1 | +++ a/wscserver/model/AcaoRede.py | ||
@@ -0,0 +1,57 @@ | @@ -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) |
1 | +++ a/wscserver/model/AcaoSo.py | ||
@@ -0,0 +1,55 @@ | @@ -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) |
1 | +++ a/wscserver/model/Aplicativo.py | ||
@@ -0,0 +1,141 @@ | @@ -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) |
1 | +++ a/wscserver/model/AplicativoRede.py | ||
@@ -0,0 +1,53 @@ | @@ -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) |
1 | +++ a/wscserver/model/Coleta.py | ||
@@ -0,0 +1,91 @@ | @@ -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) |
1 | +++ a/wscserver/model/Computador.py | ||
@@ -0,0 +1,129 @@ | @@ -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) |
1 | +++ a/wscserver/model/ComputadorColeta.py | ||
@@ -0,0 +1,61 @@ | @@ -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) |
1 | +++ a/wscserver/model/ComputadorColetaHistorico.py | ||
@@ -0,0 +1,72 @@ | @@ -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) |
1 | +++ a/wscserver/model/DescricaoColunaComputador.py | ||
@@ -0,0 +1,63 @@ | @@ -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) |
1 | +++ a/wscserver/model/Patrimonio.py | ||
@@ -0,0 +1,107 @@ | @@ -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) |
1 | +++ a/wscserver/model/Rede.py | ||
@@ -0,0 +1,159 @@ | @@ -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) |
1 | +++ a/wscserver/model/So.py | ||
@@ -0,0 +1,58 @@ | @@ -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) |
1 | +++ a/wscserver/model/Software.py | ||
@@ -0,0 +1,77 @@ | @@ -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) |
1 | +++ a/wscserver/model/SoftwareEstacao.py | ||
@@ -0,0 +1,88 @@ | @@ -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) |
1 | +++ a/wscserver/model/TipoSoftware.py | ||
@@ -0,0 +1,50 @@ | @@ -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) |
1 | +++ a/wscserver/model/__init__.py | ||
@@ -0,0 +1,19 @@ | @@ -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) |
1 | +++ a/wscserver/scripts/__init__.py |
1 | +++ a/wscserver/scripts/createzip.py | ||
@@ -0,0 +1,20 @@ | @@ -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 |
No preview for this file type
333 Bytes
203 Bytes
1 | +++ a/wscserver/static/ie6.css | ||
@@ -0,0 +1,8 @@ | @@ -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%} |
1 | +++ a/wscserver/static/json_base.json | ||
@@ -0,0 +1,2047 @@ | @@ -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 | \ No newline at end of file | 2048 | \ No newline at end of file |
2.73 KB
1 | +++ a/wscserver/static/pylons.css | ||
@@ -0,0 +1,372 @@ | @@ -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 | +} |
6.88 KB
32.3 KB
49 Bytes
1 | +++ a/wscserver/view/restfulview.py | ||
@@ -0,0 +1,82 @@ | @@ -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 |
1 | +++ a/wscserver/views.py | ||
@@ -0,0 +1,12 @@ | @@ -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 | \ No newline at end of file | 13 | \ No newline at end of file |