Exemple #1
0
    def atualizar_dados(self, widget):
        print('atualizar_dados', widget)
        nome = self.nome_completo.get_text()
        email = self.email.get_text()
        for retries in range(self.politica_tentativas_conexao):
            try:
                self.coll_usuarios.update(
                    {'usuario': self.usuario_logado},
                    {'$set': {
                        'nome': nome,
                        'e-mail': email
                    }})

                msg = 'Dados atualizados com sucesso!'
                self.statusbar_meu_usuario.push(
                    self.statusbar_meu_usuario.get_context_id('info'),
                    aux.statusbar(self.usuario_logado, msg))
                break
            except errors.AutoReconnect:
                print('Tentando reconectar ao banco de dados.')
        else:
            msg = 'Não foi possível estabelecer uma conexão com o banco de dados.'
            self.statusbar_meu_usuario.push(
                self.statusbar_meu_usuario.get_context_id('info'),
                aux.statusbar(self.usuario_logado, msg))
    def desautorizar(self, widget):
        print('desautorizar', widget)
        selecao = self.lista_autorizados.get_selection()
        modelo, iteracao = selecao.get_selected()
        valor = modelo.get_value(iteracao, 0)
        for retries in range(self.politica_tentativas_conexao):
            try:
                desautorizados = self.coll_usuarios.update_one(
                    {'usuario': valor}, {'$set': {
                        'autorizado': False
                    }})
                print('desautorizados', desautorizados)
                self.carregar_desautorizados()
                self.carregar_autorizados()

                msg = 'O usuário "{0}" foi desautorizado com sucesso.'.format(
                    valor)
                self.statusbar_gerenciamento_permissoes.push(
                    self.statusbar_gerenciamento_permissoes.get_context_id(
                        'info'), aux.statusbar(self.usuario, msg))
                break
            except errors.AutoReconnect:
                print('Tentando reconectar ao banco de dados.')
        else:
            print('conexão com o banco de dados não foi estabelecida')
            msg = 'Não foi possível estabelecer uma conexão com o banco de dados.'
            self.statusbar_gerenciamento_permissoes.push(
                self.statusbar_gerenciamento_permissoes.get_context_id('info'),
                aux.statusbar(self.usuario, msg))
Exemple #3
0
    def detalhar_dados(self, widget):
        print('detalhar_dados', widget)

        try:
            selecao = self.lista_moradores.get_selection()
            modelo, iteracao = selecao.get_selected()
            obj_id = modelo.get_value(iteracao, 0)
        except TypeError:
            return

        for retries in range(self.politica_tentativas_conexao):
            try:
                morador = self.coll_moradores.find_one(
                    {'_id': ObjectId(obj_id)})
                print('morador', morador)

                self.atualizar_nome.set_text(morador['nome'])
                data_nascimento = str('{:%d/%m/%Y}').format(
                    morador['data_nascimento'])
                self.atualizar_nascimento.set_text(data_nascimento)

                self.atualizar_calendario.select_month(
                    int(data_nascimento[3:5]) - 1, int(data_nascimento[6:]))
                self.atualizar_calendario.select_day(int(data_nascimento[:2]))

                if morador['sexo'] == 'F':
                    self.atualizar_feminino.set_active(True)
                else:
                    self.atualizar_masculino.set_active(True)

                self.atualizar_lar.set_text(morador['lar'])

                peso = str('{:>7.6}').format(morador['peso']).replace('.', ',')
                self.atualizar_peso.set_text(peso)

                self.atualizar_textbuffer.set_text(morador['observacoes'], -1)

                if morador['ativo'] is True:
                    self.atualizar_ativo.set_active(True)
                else:
                    self.atualizar_ativo.set_active(False)

                msg = 'Detalhes do morador "{0}" carregado com sucesso.'.format(
                    morador['nome'])
                self.statusbar_cadastro_moradores.push(
                    self.statusbar_cadastro_moradores.get_context_id('info'),
                    aux.statusbar(self.usuario, msg))
                break
            except errors.AutoReconnect:
                print('Tentando reconectar ao banco de dados.')
        else:
            print('conexão com o banco de dados não foi estabelecida')
            msg = 'Não foi possível estabelecer uma conexão com o banco de dados.'
            self.statusbar_cadastro_moradores.push(
                self.statusbar_cadastro_moradores.get_context_id('info'),
                aux.statusbar(self.usuario, msg))
Exemple #4
0
    def carregar_lista(self):
        print('carregar_lista')
        for retries in range(self.politica_tentativas_conexao):
            try:
                self.armazenamento_moradores.clear()
                valores = self.coll_moradores.find().sort(
                    'nome', pymongo.ASCENDING)
                for valor in valores:
                    valor['data_nascimento'] = str('{:%d/%m/%Y}').format(
                        valor['data_nascimento'])
                    valor['peso'] = str('{:0>5.5} Kgs').format(valor['peso'])
                    if valor['ativo'] is True:
                        valor['ativo'] = 'Sim'
                    else:
                        valor['ativo'] = 'Não'

                    self.armazenamento_moradores.append([
                        str(valor['_id']), valor['nome'],
                        valor['data_nascimento'], valor['sexo'], valor['lar'],
                        valor['peso'], valor['ativo']
                    ])
                break
            except errors.AutoReconnect:
                print('Tentando reconectar ao banco de dados.')
        else:
            msg = 'Não foi possível estabelecer uma conexão com o banco de dados.'
            self.statusbar_cadastro_moradores.push(
                self.statusbar_cadastro_moradores.get_context_id('info'),
                aux.statusbar(self.usuario, msg))
Exemple #5
0
    def carregar_definicoes(self):
        for retries in range(self.politica_tentativas_conexao):
            try:

                item = self.coll_usuarios.find_one(
                    {'usuario': self.usuario_logado})

                self.usuario.set_text(item['usuario'])
                self.nome_completo.set_text(item['nome'])
                self.email.set_text(item['e-mail'])

                data_solicitacao = item['data_solicitacao']
                data_solicitacao = str('{:%d/%m/%Y às %H:%M:%S}').format(
                    data_solicitacao)
                self.data_criacao.set_text(data_solicitacao)

                lista_permissoes = item['permissoes']

                for item in lista_permissoes:
                    if lista_permissoes[item] is True:
                        self.armazenamento_com_permissao.append([item])
                    elif lista_permissoes[item] is False:
                        self.armazenamento_sem_permissao.append([item])

                self.atualizar_senha_botao.set_sensitive(False)

                break
            except errors.AutoReconnect:
                print('Tentando reconectar ao banco de dados.')
        else:
            msg = 'Não foi possível estabelecer uma conexão com o banco de dados.'
            self.statusbar_meu_usuario.push(
                self.statusbar_meu_usuario.get_context_id('info'),
                aux.statusbar(self.usuario_logado, msg))
Exemple #6
0
    def carregar_definicoes(self):
        for retries in range(self.politica_tentativas_conexao_num):
            try:

                item = self.coll_definicoes_aplicativo.find_one({'_id': 0})
                farmaceutico_responsavel = item['farmaceutico_responsavel']
                politica_nome_farmaceutico = item['politica_nome_farmaceutico']
                politica_modulos_sem_permissao = item[
                    'politica_modulos_sem_permissao']
                politica_acesso_inicial = item['politica_acesso_inicial']
                politica_tentativas_conexao = item[
                    'politica_tentativas_conexao']

                self.farmaceutico_responsavel.set_text(
                    farmaceutico_responsavel)

                if politica_nome_farmaceutico == 'definido':
                    self.politica_nome_do_farmaceutico_definido.set_active(
                        True)
                elif politica_nome_farmaceutico == 'manual':
                    self.politica_nome_do_farmaceutico_manual.set_active(True)

                if politica_modulos_sem_permissao == 'desabilitados':
                    self.politica_modulos_sem_permissao_desabilitado.set_active(
                        True)
                elif politica_modulos_sem_permissao == 'removidos':
                    self.politica_modulos_sem_permissao_removido.set_active(
                        True)

                if politica_acesso_inicial == 'todos':
                    self.politica_acesso_inicial_todos.set_active(True)
                elif politica_acesso_inicial == 'nenhum':
                    self.politica_acesso_inicial_nenhum.set_active(True)

                self.politica_tentativas_conexao.set_text(
                    str(politica_tentativas_conexao))

                self.carregar_valores(self.armazenamento_intervencao,
                                      self.coll_valores_intervencao)
                self.carregar_valores(self.armazenamento_prescritor,
                                      self.coll_valores_prescritor)
                self.carregar_valores(self.armazenamento_evolucao,
                                      self.coll_valores_evolucao)
                self.carregar_valores(self.armazenamento_alvo_intervencao,
                                      self.coll_valores_alvo_intervencao)
                self.carregar_valores(self.armazenamento_ponto_critico,
                                      self.coll_valores_ponto_critico)
                self.carregar_valores(self.armazenamento_acatamento,
                                      self.coll_valores_acatamento)
                break
            except errors.AutoReconnect:
                print('Tentando reconectar ao banco de dados.')
        else:
            self.salvar_e_fechar.set_sensitive(False)

            msg = 'Não foi possível estabelecer uma conexão com o banco de dados.'
            self.statusbar_definicoes_aplicativo.push(
                self.statusbar_definicoes_aplicativo.get_context_id('info'),
                aux.statusbar(self.usuario, msg))
Exemple #7
0
    def adicionar_valores(self, widget, entrada, colecao, armazenamento,
                          nome_tabela_formatado):
        print('adicionar_valores', nome_tabela_formatado, widget)
        if len(str(entrada.get_text()).strip()) > 0:
            valor = entrada.get_text()
            for retries in range(self.politica_tentativas_conexao_num):
                try:
                    objectid_id = colecao.insert_one({
                        'valor': valor
                    }).inserted_id
                    entrada.set_text('')
                    encontrado = None  # para testar abaixo a adição no banco de dados
                    tentativas = 0
                    while encontrado is None and tentativas < self.timeout:
                        print('executado1')
                        encontrado = colecao.find_one(
                            {'_id': objectid.ObjectId(objectid_id)})
                        print('executado2')
                        print(encontrado)
                        time.sleep(1)
                        tentativas += 1
                    self.carregar_valores(armazenamento, colecao)

                    msg = 'O item "{0}" foi adicionado à tabela {1} com sucesso.'.format(
                        valor, nome_tabela_formatado)
                    self.statusbar_definicoes_aplicativo.push(
                        self.statusbar_definicoes_aplicativo.get_context_id(
                            'info'), aux.statusbar(self.usuario, msg))
                    break
                except errors.AutoReconnect:
                    print('Tentando reconectar ao banco de dados.')
            else:
                print('conexão com o banco de dados não foi estabelecida')
                msg = 'Não foi possível estabelecer uma conexão com o banco de dados.'
                self.statusbar_definicoes_aplicativo.push(
                    self.statusbar_definicoes_aplicativo.get_context_id(
                        'info'), aux.statusbar(self.usuario, msg))
        else:
            msg = 'O campo de entrada da tabela "{0}" deve ser preenchido antes de ser adicionado à tabela.'.format(
                nome_tabela_formatado)
            self.statusbar_definicoes_aplicativo.push(
                self.statusbar_definicoes_aplicativo.get_context_id('info'),
                aux.statusbar(self.usuario, msg))
Exemple #8
0
    def salvar_definicoes_e_fechar(self, widget):
        print('salvar_definicoes_e_fechar', widget)

        politica_nome_farmaceutico = None
        politica_modulos_sem_permissao = None
        politica_acesso_inicial = None

        farmaceutico_responsavel = self.farmaceutico_responsavel.get_text()

        if self.politica_nome_do_farmaceutico_definido.get_active():
            politica_nome_farmaceutico = 'definido'
        elif self.politica_nome_do_farmaceutico_manual.get_active():
            politica_nome_farmaceutico = 'manual'

        if self.politica_modulos_sem_permissao_desabilitado.get_active():
            politica_modulos_sem_permissao = 'desabilitados'
        elif self.politica_modulos_sem_permissao_removido.get_active():
            politica_modulos_sem_permissao = 'removidos'

        if self.politica_acesso_inicial_todos.get_active():
            politica_acesso_inicial = 'todos'
        elif self.politica_acesso_inicial_nenhum.get_active():
            politica_acesso_inicial = 'nenhum'

        politica_tentativas_conexao = self.politica_tentativas_conexao.get_text(
        )

        for retries in range(self.politica_tentativas_conexao_num):
            try:
                self.coll_definicoes_aplicativo.update_one({'_id': 0}, {
                    '$set': {
                        'farmaceutico_responsavel':
                        farmaceutico_responsavel,
                        'politica_nome_farmaceutico':
                        politica_nome_farmaceutico,
                        'politica_modulos_sem_permissao':
                        politica_modulos_sem_permissao,
                        'politica_acesso_inicial':
                        politica_acesso_inicial,
                        'politica_tentativas_conexao':
                        int(politica_tentativas_conexao)
                    }
                })
                self.tela_definicoes_aplicativo.close()
                break
            except errors.AutoReconnect:
                print('Tentando reconectar ao banco de dados.')
        else:
            msg = 'Não foi possível estabelecer uma conexão com o banco de dados.'
            self.statusbar_definicoes_aplicativo.push(
                self.statusbar_definicoes_aplicativo.get_context_id('info'),
                aux.statusbar(self.usuario, msg))
Exemple #9
0
    def remover_valores(self, widget, lista, colecao, armazenamento,
                        nome_tabela_formatado):
        print('remover_valores', nome_tabela_formatado, widget)
        selecao = lista.get_selection()
        modelo, iteracao = selecao.get_selected()
        if iteracao is not None:
            valor = modelo.get_value(iteracao, 0)
            for retries in range(self.politica_tentativas_conexao_num):
                try:
                    deletados = colecao.delete_one({
                        'valor': valor
                    }).deleted_count
                    tentativas = 0
                    while deletados != 1 and tentativas < self.timeout:
                        time.sleep(1)
                        tentativas += 1
                    self.carregar_valores(armazenamento, colecao)

                    msg = 'O item "{0}" foi removido da tabela "{1}" com sucesso.'.format(
                        valor, nome_tabela_formatado)
                    self.statusbar_definicoes_aplicativo.push(
                        self.statusbar_definicoes_aplicativo.get_context_id(
                            'info'), aux.statusbar(self.usuario, msg))
                    break
                except errors.AutoReconnect:
                    print('Tentando reconectar ao banco de dados.')
            else:
                print('conexão com o banco de dados não foi estabelecida')
                msg = 'Não foi possível estabelecer uma conexão com o banco de dados.'
                self.statusbar_definicoes_aplicativo.push(
                    self.statusbar_definicoes_aplicativo.get_context_id(
                        'info'), aux.statusbar(self.usuario, msg))
        else:
            msg = 'Um item da tabela "{0}" deve ser selecionado antes de ser removido.'.format(
                nome_tabela_formatado)
            self.statusbar_definicoes_aplicativo.push(
                self.statusbar_definicoes_aplicativo.get_context_id('info'),
                aux.statusbar(self.usuario, msg))
Exemple #10
0
 def corrigir_calendario(self, widget, focus, campo_data, calendario):
     print('corrigir_calendatio', widget, focus, campo_data, calendario)
     data = campo_data.get_text()
     try:
         calendario.select_month(int(data[3:5]) - 1, int(data[6:]))
         calendario.select_day(int(data[:2]))
     except Exception as e:
         print(type(e), e)
         msg = 'Conteúdo do campo "Data de Nascimento" não é valido. Formato esperado é DD/MM/AAAA.'
         self.statusbar_cadastro_moradores.push(
             self.statusbar_cadastro_moradores.get_context_id('info'),
             aux.statusbar(self.usuario, msg))
         self.tela_cadastro_morador.error_bell()
         return
 def carregar_usuarios(self):
     for retries in range(self.politica_tentativas_conexao):
         try:
             self.armazenamento_usuarios.clear()
             valores = self.coll_usuarios.find({})
             for valor in valores:
                 self.armazenamento_usuarios.append([valor['usuario']])
             break
         except errors.AutoReconnect:
             print('Tentando reconectar ao banco de dados.')
     else:
         msg = 'Não foi possível estabelecer uma conexão com o banco de dados.'
         self.statusbar_gerenciamento_permissoes.push(
             self.statusbar_gerenciamento_permissoes.get_context_id('info'),
             aux.statusbar(self.usuario, msg))
Exemple #12
0
 def carregar_valores(self, armazenamento, colecao):
     for retries in range(self.politica_tentativas_conexao_num):
         try:
             armazenamento.clear()
             valores = colecao.find({})
             for valor in valores:
                 armazenamento.append([valor['valor']])
             break
         except errors.AutoReconnect:
             print('Tentando reconectar ao banco de dados.')
     else:
         msg = 'Não foi possível estabelecer uma conexão com o banco de dados.'
         self.statusbar_definicoes_aplicativo.push(
             self.statusbar_definicoes_aplicativo.get_context_id('info'),
             aux.statusbar(self.usuario, msg))
Exemple #13
0
    def atualizar_senha(self, widget):
        print('atualizar_senha', widget)
        for retries in range(self.politica_tentativas_conexao):
            try:
                senha_atual = CriarUsuario.hash_password(
                    self.senha_atual.get_text())
                senha_nova = CriarUsuario.hash_password(
                    self.nova_senha_repetir.get_text())

                item = self.coll_usuarios.find_one(
                    {'usuario': self.usuario_logado})
                senha_atual_db = item['senha']

                if senha_atual == senha_atual_db:
                    self.coll_usuarios.update({'usuario': self.usuario_logado},
                                              {'$set': {
                                                  'senha': senha_nova
                                              }})

                    msg = 'Sua senha foi atualizada com sucesso! Não a esqueça.'
                    self.statusbar_meu_usuario.push(
                        self.statusbar_meu_usuario.get_context_id('info'),
                        aux.statusbar(self.usuario_logado, msg))
                else:
                    msg = 'A senha atual não é a mesma cadastrada no banco de dados.'
                    self.statusbar_meu_usuario.push(
                        self.statusbar_meu_usuario.get_context_id('info'),
                        aux.statusbar(self.usuario_logado, msg))
                break
            except errors.AutoReconnect:
                print('Tentando reconectar ao banco de dados.')
        else:
            msg = 'Não foi possível estabelecer uma conexão com o banco de dados.'
            self.statusbar_meu_usuario.push(
                self.statusbar_meu_usuario.get_context_id('info'),
                aux.statusbar(self.usuario_logado, msg))
 def carregar_desautorizados(self):
     for retries in range(self.politica_tentativas_conexao):
         try:
             self.armazenamento_desautorizados.clear()
             valores = self.coll_usuarios.find({'autorizado': False})
             for valor in valores:
                 valor['data_solicitacao'] = str(
                     '{:%d/%m/%Y às %H:%M:%S}').format(
                         valor['data_solicitacao'])
                 self.armazenamento_desautorizados.append([
                     valor['usuario'], valor['nome'], valor['e-mail'],
                     valor['data_solicitacao']
                 ])
             break
         except errors.AutoReconnect:
             print('Tentando reconectar ao banco de dados.')
     else:
         msg = 'Não foi possível estabelecer uma conexão com o banco de dados.'
         self.statusbar_gerenciamento_permissoes.push(
             self.statusbar_gerenciamento_permissoes.get_context_id('info'),
             aux.statusbar(self.usuario, msg))
Exemple #15
0
    def atualizar_dados(self, widget):
        print('atualizar_dados', widget)

        selecao = self.lista_moradores.get_selection()
        modelo, iteracao = selecao.get_selected()
        obj_id = modelo.get_value(iteracao, 0)

        nome = self.atualizar_nome.get_text()
        nascimento = self.atualizar_nascimento.get_text()
        lar = self.atualizar_lar.get_text()
        peso = self.atualizar_peso.get_text()
        observacoes = self.atualizar_textbuffer.get_text(
            self.atualizar_textbuffer.get_start_iter(),
            self.atualizar_textbuffer.get_end_iter(), True)
        ativo = self.atualizar_ativo.get_active()

        if self.atualizar_feminino.get_active():
            sexo = 'F'
        else:
            sexo = 'M'

        if len(nome) > 0:
            pass
        else:
            msg = 'Campo "Nome" não pode estar vazio.'
            self.statusbar_cadastro_moradores.push(
                self.statusbar_cadastro_moradores.get_context_id('info'),
                aux.statusbar(self.usuario, msg))
            self.tela_cadastro_morador.error_bell()
            return

        if len(nascimento) > 9:
            try:
                nascimento = dt.datetime(int(nascimento[6:]),
                                         int(nascimento[3:5]),
                                         int(nascimento[0:2]),
                                         0,
                                         0,
                                         0,
                                         0,
                                         tzinfo=dt.timezone.utc)
            except Exception as e:
                print(Exception, e)
                msg = 'Conteúdo do campo "Data de Nascimento" não é valido. Formato esperado é DD/MM/AAAA.'
                self.statusbar_cadastro_moradores.push(
                    self.statusbar_cadastro_moradores.get_context_id('info'),
                    aux.statusbar(self.usuario, msg))
                self.tela_cadastro_morador.error_bell()
                return
        else:
            msg = 'Campo "Data de Nascimento" não pode estar vazio.'
            self.statusbar_cadastro_moradores.push(
                self.statusbar_cadastro_moradores.get_context_id('info'),
                aux.statusbar(self.usuario, msg))
            self.tela_cadastro_morador.error_bell()
            return

        if len(lar) > 0:
            pass
        else:
            msg = 'Campo "Lar" não pode estar vazio.'
            self.statusbar_cadastro_moradores.push(
                self.statusbar_cadastro_moradores.get_context_id('info'),
                aux.statusbar(self.usuario, msg))
            self.tela_cadastro_morador.error_bell()
            return

        peso = str(peso).replace(',', '.')

        if float(peso) > 0:
            peso = float(peso)
        else:
            msg = 'Campo "Peso" não pode ser zero.'
            self.statusbar_cadastro_moradores.push(
                self.statusbar_cadastro_moradores.get_context_id('info'),
                aux.statusbar(self.usuario, msg))
            self.tela_cadastro_morador.error_bell()
            return

        for retries in range(self.politica_tentativas_conexao):
            try:
                objectid_id = self.coll_moradores.update_one(
                    {'_id': ObjectId(obj_id)}, {
                        '$set': {
                            'nome': nome,
                            'data_nascimento': nascimento,
                            'sexo': sexo,
                            'lar': lar,
                            'peso': peso,
                            'observacoes': observacoes,
                            'ativo': ativo
                        }
                    })
                print('Atualização realizada para object_id:', objectid_id)

                path = modelo.get_path(
                    iteracao)  # o número da linha na lista de moradores
                self.carregar_lista()  # refresh na lista de moradores
                self.lista_moradores.set_cursor(
                    path)  # selecionamos a mesma linha antes do refresh

                msg = 'O cadastro do morador "{0}" foi atualizado com sucesso.'.format(
                    nome)
                self.statusbar_cadastro_moradores.push(
                    self.statusbar_cadastro_moradores.get_context_id('info'),
                    aux.statusbar(self.usuario, msg))
                break
            except errors.AutoReconnect:
                print('Tentando reconectar ao banco de dados.')
        else:
            print('conexão com o banco de dados não foi estabelecida')
            msg = 'Não foi possível estabelecer uma conexão com o banco de dados.'
            self.statusbar_cadastro_moradores.push(
                self.statusbar_cadastro_moradores.get_context_id('info'),
                aux.statusbar(self.usuario, msg))
            self.tela_cadastro_morador.error_bell()
Exemple #16
0
    def __init__(self, usuario, banco_dados, politica_tentativas_conexao, pai):

        self.usuario_logado = usuario
        self.banco_dados = banco_dados
        self.politica_tentativas_conexao = politica_tentativas_conexao
        self.pai = pai
        self.coll_usuarios = self.banco_dados['db'].usuarios

        builder = Gtk.Builder()
        builder.add_from_file('glade/tela_meu_usuario.glade')
        self.tela_meu_usuario = builder.get_object('tela_meu_usuario')
        self.usuario = builder.get_object('usuario')
        self.nome_completo = builder.get_object('nome_completo')
        self.email = builder.get_object('email')
        self.senha_atual = builder.get_object('senha_atual')
        self.nova_senha = builder.get_object('nova_senha')
        self.nova_senha_repetir = builder.get_object('nova_senha_repetir')
        self.atualizar_senha_botao = builder.get_object('atualizar_senha')
        self.data_criacao = builder.get_object('data_criacao')

        self.tela_meu_usuario.set_transient_for(self.pai)

        self.lista_com_permissao = builder.get_object('lista_com_permissao')
        self.armazenamento_com_permissao = builder.get_object(
            'armazenamento_com_permissao')
        self.coluna_com_permissao = Gtk.TreeViewColumn('Módulos com Permissão',
                                                       Gtk.CellRendererText(),
                                                       text=0)
        self.coluna_com_permissao.set_sort_column_id(0)
        self.lista_com_permissao.append_column(self.coluna_com_permissao)

        self.lista_sem_permissao = builder.get_object('lista_sem_permissao')
        self.armazenamento_sem_permissao = builder.get_object(
            'armazenamento_sem_permissao')
        self.coluna_sem_permissao = Gtk.TreeViewColumn('Módulos sem Permissão',
                                                       Gtk.CellRendererText(),
                                                       text=0)
        self.coluna_sem_permissao.set_sort_column_id(0)
        self.lista_sem_permissao.append_column(self.coluna_sem_permissao)

        self.statusbar_meu_usuario = builder.get_object(
            'statusbar_meu_usuario')

        builder.connect_signals({
            'on_atualizar_dados_clicked':
            self.atualizar_dados,
            'on_atualizar_senha_clicked':
            self.atualizar_senha,
            'on_senha_atual_key_release_event':
            self.validar_troca_senha,
            'on_nova_senha_key_release_event':
            self.validar_troca_senha,
            'on_nova_senha_repetir_key_release_event':
            self.validar_troca_senha,
            'on_fechar_clicked':
            self.fechar
        })

        msg = 'Caso altere a senha, tome nota, pois será requisitada no próximo login.'
        self.statusbar_meu_usuario.push(
            self.statusbar_meu_usuario.get_context_id('info'),
            aux.statusbar(self.usuario_logado, msg))

        self.carregar_definicoes()

        self.tela_meu_usuario.show_all()
    def salvar(self, widget):
        print('salvar', widget)
        selecao = self.lista_usuarios.get_selection()
        modelo, iteracao = selecao.get_selected()
        valor = modelo.get_value(iteracao, 0)

        checkbutton_nova_analise_prescricao = self.checkbutton_nova_analise_prescricao.get_active(
        )
        checkbutton_abrir_analise_prescricao = self.checkbutton_abrir_analise_prescricao.get_active(
        )
        checkbutton_abrir_intervencoes = self.checkbutton_abrir_intervencoes.get_active(
        )
        checkbutton_abrir_esclarecimentos = self.checkbutton_abrir_esclarecimentos.get_active(
        )
        checkbutton_dados_por_lar = self.checkbutton_dados_por_lar.get_active()
        checkbutton_dados_totais = self.checkbutton_dados_totais.get_active()
        checkbutton_cadastro_morador = self.checkbutton_cadastro_morador.get_active(
        )
        checkbutton_cadastro_medicamento = self.checkbutton_cadastro_medicamento.get_active(
        )
        checkbutton_opcoes_definicoes = self.checkbutton_opcoes_definicoes.get_active(
        )
        checkbutton_opcoes_meu_usuario = self.checkbutton_opcoes_meu_usuario.get_active(
        )
        checkbutton_historico_analise_prescricao = self.checkbutton_historico_analise_prescricao.get_active(
        )
        checkbutton_historico_cadastro_morador = self.checkbutton_historico_cadastro_morador.get_active(
        )
        checkbutton_historico_cadastro_medicamento = self.checkbutton_historico_cadastro_medicamento.get_active(
        )
        checkbutton_historico_opcoes_definicoes = self.checkbutton_historico_opcoes_definicoes.get_active(
        )
        checkbutton_historico_opcoes_usuario = self.checkbutton_historico_opcoes_usuario.get_active(
        )
        checkbutton_historico_gerenciamento_permissoes = \
            self.checkbutton_historico_gerenciamento_permissoes.get_active()
        checkbutton_historico_intervencoes = self.checkbutton_historico_intervencoes.get_active(
        )
        checkbutton_historico_esclarecimentos = self.checkbutton_historico_esclarecimentos.get_active(
        )
        checkbutton_opcoes_gerenciamento_permissoes = self.checkbutton_opcoes_gerenciamento_permissoes.get_active(
        )

        for retries in range(self.politica_tentativas_conexao):
            try:
                permissoes = self.coll_usuarios.update_one(
                    {'usuario': valor}, {
                        '$set': {
                            'permissoes.nova_analise_prescricao':
                            checkbutton_nova_analise_prescricao,
                            'permissoes.abrir_analise_prescricao':
                            checkbutton_abrir_analise_prescricao,
                            'permissoes.abrir_intervencoes':
                            checkbutton_abrir_intervencoes,
                            'permissoes.abrir_esclarecimentos':
                            checkbutton_abrir_esclarecimentos,
                            'permissoes.dados_por_lar':
                            checkbutton_dados_por_lar,
                            'permissoes.dados_totais':
                            checkbutton_dados_totais,
                            'permissoes.cadastro_morador':
                            checkbutton_cadastro_morador,
                            'permissoes.cadastro_medicamento':
                            checkbutton_cadastro_medicamento,
                            'permissoes.opcoes_definicoes':
                            checkbutton_opcoes_definicoes,
                            'permissoes.opcoes_meu_usuario':
                            checkbutton_opcoes_meu_usuario,
                            'permissoes.historico_analise_prescricao':
                            checkbutton_historico_analise_prescricao,
                            'permissoes.historico_cadastro_morador':
                            checkbutton_historico_cadastro_morador,
                            'permissoes.historico_cadastro_medicamento':
                            checkbutton_historico_cadastro_medicamento,
                            'permissoes.historico_opcoes_definicoes':
                            checkbutton_historico_opcoes_definicoes,
                            'permissoes.historico_opcoes_usuario':
                            checkbutton_historico_opcoes_usuario,
                            'permissoes.historico_gerenciamento_permissoes':
                            checkbutton_historico_gerenciamento_permissoes,
                            'permissoes.historico_intervencoes':
                            checkbutton_historico_intervencoes,
                            'permissoes.historico_esclarecimentos':
                            checkbutton_historico_esclarecimentos,
                            'permissoes.opcoes_gerenciamento_permissoes':
                            checkbutton_opcoes_gerenciamento_permissoes
                        }
                    })
                print('permissões concedidas', permissoes)

                msg = 'Lista de permissões para o usuário "{0}" atualizada com sucesso.'.format(
                    valor)
                self.statusbar_gerenciamento_permissoes.push(
                    self.statusbar_gerenciamento_permissoes.get_context_id(
                        'info'), aux.statusbar(self.usuario, msg))
                break
            except errors.AutoReconnect:
                print('Tentando reconectar ao banco de dados.')
        else:
            print('conexão com o banco de dados não foi estabelecida')
            msg = 'Não foi possível estabelecer uma conexão com o banco de dados.'
            self.statusbar_gerenciamento_permissoes.push(
                self.statusbar_gerenciamento_permissoes.get_context_id('info'),
                aux.statusbar(self.usuario, msg))
Exemple #18
0
    def incluir_morador(self, widget):
        print('incluir_morador', widget)

        nome = self.novo_nome.get_text()
        nascimento = self.novo_data_nascimento.get_text()
        lar = self.novo_lar.get_text()
        peso = self.novo_peso.get_text()
        observacoes = self.novo_textbuffer.get_text(
            self.novo_textbuffer.get_start_iter(),
            self.novo_textbuffer.get_end_iter(), True)
        ativo = True

        if self.novo_feminino.get_active():
            sexo = 'F'
        else:
            sexo = 'M'

        if len(nome) > 0:
            pass
        else:
            msg = 'Campo "Nome" não pode estar vazio.'
            self.statusbar_cadastro_moradores.push(
                self.statusbar_cadastro_moradores.get_context_id('info'),
                aux.statusbar(self.usuario, msg))
            self.tela_cadastro_morador.error_bell()
            return

        if len(nascimento) > 9:
            try:
                nascimento = dt.datetime(int(nascimento[6:]),
                                         int(nascimento[3:5]),
                                         int(nascimento[0:2]),
                                         0,
                                         0,
                                         0,
                                         0,
                                         tzinfo=dt.timezone.utc)
            except Exception as e:
                print(Exception, e)
                msg = 'Conteúdo do campo "Data de Nascimento" não é valido. Formato esperado é DD/MM/AAAA.'
                self.statusbar_cadastro_moradores.push(
                    self.statusbar_cadastro_moradores.get_context_id('info'),
                    aux.statusbar(self.usuario, msg))
                self.tela_cadastro_morador.error_bell()
                return
        else:
            msg = 'Campo "Data de Nascimento" não pode estar vazio.'
            self.statusbar_cadastro_moradores.push(
                self.statusbar_cadastro_moradores.get_context_id('info'),
                aux.statusbar(self.usuario, msg))
            self.tela_cadastro_morador.error_bell()
            return

        if len(lar) > 0:
            pass
        else:
            msg = 'Campo "Lar" não pode estar vazio.'
            self.statusbar_cadastro_moradores.push(
                self.statusbar_cadastro_moradores.get_context_id('info'),
                aux.statusbar(self.usuario, msg))
            self.tela_cadastro_morador.error_bell()
            return

        peso = str(peso).replace(',', '.')

        if float(peso) > 0:
            peso = float(peso)
        else:
            msg = 'Campo "Peso" não pode ser zero.'
            self.statusbar_cadastro_moradores.push(
                self.statusbar_cadastro_moradores.get_context_id('info'),
                aux.statusbar(self.usuario, msg))
            self.tela_cadastro_morador.error_bell()
            return

        for retries in range(self.politica_tentativas_conexao):
            try:
                objectid_id = self.coll_moradores.insert_one({
                    'nome':
                    nome,
                    'data_nascimento':
                    nascimento,
                    'sexo':
                    sexo,
                    'lar':
                    lar,
                    'peso':
                    peso,
                    'observacoes':
                    observacoes,
                    'ativo':
                    ativo
                }).inserted_id

                encontrado = None  # para testar abaixo a adição no banco de dados
                tentativas = 0
                while encontrado is None and tentativas < self.timeout:
                    print('executado1')
                    encontrado = self.coll_moradores.find_one(
                        {'_id': ObjectId(objectid_id)})
                    print('executado2')
                    print(encontrado)
                    time.sleep(1)
                    tentativas += 1
                self.carregar_lista()
                self.novo_nome.set_text('')
                self.novo_data_nascimento.set_text('')
                self.novo_lar.set_text('')
                self.novo_peso.set_text('')
                self.novo_textbuffer.set_text('', -1)

                msg = 'O morador \'{0}\' foi adicionado ao cadastro com sucesso.'.format(
                    nome)
                self.statusbar_cadastro_moradores.push(
                    self.statusbar_cadastro_moradores.get_context_id('info'),
                    aux.statusbar(self.usuario, msg))
                break
            except errors.AutoReconnect:
                print('Tentando reconectar ao banco de dados.')
        else:
            msg = 'Não foi possível estabelecer uma conexão com o banco de dados.'
            print('conexão com o banco de dados não foi estabelecida')
            self.statusbar_cadastro_moradores.push(
                self.statusbar_cadastro_moradores.get_context_id('info'),
                aux.statusbar(self.usuario, msg))
            self.tela_cadastro_morador.error_bell()
    def carregar_checkboxes(self, widget):
        print('carregar_checkboxes', widget)
        selecao = self.lista_usuarios.get_selection()
        modelo, iteracao = selecao.get_selected()
        valor = modelo.get_value(iteracao, 0)
        for retries in range(self.politica_tentativas_conexao):
            try:
                permissoes = self.coll_usuarios.find_one({'usuario': valor}, {
                    '_id': 0,
                    'permissoes': 1
                })
                print('desautorizados', permissoes)

                if permissoes['permissoes']['nova_analise_prescricao'] is True:
                    self.checkbutton_nova_analise_prescricao.set_active(True)
                else:
                    self.checkbutton_nova_analise_prescricao.set_active(False)

                if permissoes['permissoes']['abrir_analise_prescricao'] is True:
                    self.checkbutton_abrir_analise_prescricao.set_active(True)
                else:
                    self.checkbutton_abrir_analise_prescricao.set_active(False)

                if permissoes['permissoes']['abrir_intervencoes'] is True:
                    self.checkbutton_abrir_intervencoes.set_active(True)
                else:
                    self.checkbutton_abrir_intervencoes.set_active(False)

                if permissoes['permissoes']['abrir_esclarecimentos'] is True:
                    self.checkbutton_abrir_esclarecimentos.set_active(True)
                else:
                    self.checkbutton_abrir_esclarecimentos.set_active(False)

                if permissoes['permissoes']['dados_por_lar'] is True:
                    self.checkbutton_dados_por_lar.set_active(True)
                else:
                    self.checkbutton_dados_por_lar.set_active(False)

                if permissoes['permissoes']['dados_totais'] is True:
                    self.checkbutton_dados_totais.set_active(True)
                else:
                    self.checkbutton_dados_totais.set_active(False)

                if permissoes['permissoes']['cadastro_morador'] is True:
                    self.checkbutton_cadastro_morador.set_active(True)
                else:
                    self.checkbutton_cadastro_morador.set_active(False)

                if permissoes['permissoes']['cadastro_medicamento'] is True:
                    self.checkbutton_cadastro_medicamento.set_active(True)
                else:
                    self.checkbutton_cadastro_medicamento.set_active(False)

                if permissoes['permissoes']['opcoes_definicoes'] is True:
                    self.checkbutton_opcoes_definicoes.set_active(True)
                else:
                    self.checkbutton_opcoes_definicoes.set_active(False)

                if permissoes['permissoes']['opcoes_meu_usuario'] is True:
                    self.checkbutton_opcoes_meu_usuario.set_active(True)
                else:
                    self.checkbutton_opcoes_meu_usuario.set_active(False)

                if permissoes['permissoes'][
                        'historico_analise_prescricao'] is True:
                    self.checkbutton_historico_analise_prescricao.set_active(
                        True)
                else:
                    self.checkbutton_historico_analise_prescricao.set_active(
                        False)

                if permissoes['permissoes'][
                        'historico_cadastro_morador'] is True:
                    self.checkbutton_historico_cadastro_morador.set_active(
                        True)
                else:
                    self.checkbutton_historico_cadastro_morador.set_active(
                        False)

                if permissoes['permissoes'][
                        'historico_cadastro_medicamento'] is True:
                    self.checkbutton_historico_cadastro_medicamento.set_active(
                        True)
                else:
                    self.checkbutton_historico_cadastro_medicamento.set_active(
                        False)

                if permissoes['permissoes'][
                        'historico_opcoes_definicoes'] is True:
                    self.checkbutton_historico_opcoes_definicoes.set_active(
                        True)
                else:
                    self.checkbutton_historico_opcoes_definicoes.set_active(
                        False)

                if permissoes['permissoes']['historico_opcoes_usuario'] is True:
                    self.checkbutton_historico_opcoes_usuario.set_active(True)
                else:
                    self.checkbutton_historico_opcoes_usuario.set_active(False)

                if permissoes['permissoes'][
                        'historico_gerenciamento_permissoes'] is True:
                    self.checkbutton_historico_gerenciamento_permissoes.set_active(
                        True)
                else:
                    self.checkbutton_historico_gerenciamento_permissoes.set_active(
                        False)

                if permissoes['permissoes']['historico_intervencoes'] is True:
                    self.checkbutton_historico_intervencoes.set_active(True)
                else:
                    self.checkbutton_historico_intervencoes.set_active(False)

                if permissoes['permissoes'][
                        'historico_esclarecimentos'] is True:
                    self.checkbutton_historico_esclarecimentos.set_active(True)
                else:
                    self.checkbutton_historico_esclarecimentos.set_active(
                        False)

                if permissoes['permissoes'][
                        'opcoes_gerenciamento_permissoes'] is True:
                    self.checkbutton_opcoes_gerenciamento_permissoes.set_active(
                        True)
                else:
                    self.checkbutton_opcoes_gerenciamento_permissoes.set_active(
                        False)

                msg = 'Lista de permissões para o usuário "{0}" carregado com sucesso.'.format(
                    valor)
                self.statusbar_gerenciamento_permissoes.push(
                    self.statusbar_gerenciamento_permissoes.get_context_id(
                        'info'), aux.statusbar(self.usuario, msg))
                break
            except errors.AutoReconnect:
                print('Tentando reconectar ao banco de dados.')
        else:
            print('conexão com o banco de dados não foi estabelecida')
            msg = 'Não foi possível estabelecer uma conexão com o banco de dados.'
            self.statusbar_gerenciamento_permissoes.push(
                self.statusbar_gerenciamento_permissoes.get_context_id('info'),
                aux.statusbar(self.usuario, msg))
Exemple #20
0
    def __init__(self, banco_dados, politica_tentativas_conexao, usuario, pai):

        self.banco_dados = banco_dados
        self.politica_tentativas_conexao_num = politica_tentativas_conexao
        self.usuario = usuario
        self.pai = pai
        self.timeout = 10
        self.coll_definicoes_aplicativo = self.banco_dados[
            'db'].definicoes_aplicativo
        self.coll_valores_intervencao = self.banco_dados[
            'db'].valores_intervencao
        self.coll_valores_prescritor = self.banco_dados[
            'db'].valores_prescritor
        self.coll_valores_evolucao = self.banco_dados['db'].valores_evolucao
        self.coll_valores_alvo_intervencao = self.banco_dados[
            'db'].valores_alvo_intervencao
        self.coll_valores_ponto_critico = self.banco_dados[
            'db'].valores_ponto_critico
        self.coll_valores_acatamento = self.banco_dados[
            'db'].valores_acatamento

        builder = Gtk.Builder()
        builder.add_from_file('glade/tela_definicoes_aplicativo.glade')
        self.tela_definicoes_aplicativo = builder.get_object(
            'tela_definicoes_aplicativo')
        self.farmaceutico_responsavel = builder.get_object(
            'farmaceutico_responsavel')
        self.politica_nome_do_farmaceutico_manual = builder.get_object(
            'politica_nome_do_farmaceutico1')
        self.politica_nome_do_farmaceutico_definido = builder.get_object(
            'politica_nome_do_farmaceutico2')
        self.politica_modulos_sem_permissao_desabilitado = builder.get_object(
            'politica_modulos_sem_permissao1')
        self.politica_modulos_sem_permissao_removido = builder.get_object(
            'politica_modulos_sem_permissao2')
        self.politica_acesso_inicial_todos = builder.get_object(
            'politica_acesso_inicial1')
        self.politica_acesso_inicial_nenhum = builder.get_object(
            'politica_acesso_inicial2')
        self.politica_tentativas_conexao = builder.get_object(
            'politica_tentativas_conexao_bd_spin')

        self.tela_definicoes_aplicativo.set_transient_for(self.pai)

        self.entrada_intervencao = builder.get_object('entrada_intervencao')
        self.lista_intervencao = builder.get_object('lista_intervencao')
        self.armazenamento_intervencao = builder.get_object(
            'armazenamento_intervencao')
        self.coluna_intervencao = Gtk.TreeViewColumn('Intervenção',
                                                     Gtk.CellRendererText(),
                                                     text=0)
        self.coluna_intervencao.set_sort_column_id(0)
        self.lista_intervencao.append_column(self.coluna_intervencao)

        self.entrada_prescritor = builder.get_object('entrada_prescritor')
        self.lista_prescritor = builder.get_object('lista_prescritor')
        self.armazenamento_prescritor = builder.get_object(
            'armazenamento_prescritor')
        self.coluna_prescritor = Gtk.TreeViewColumn('Prescritor',
                                                    Gtk.CellRendererText(),
                                                    text=0)
        self.coluna_prescritor.set_sort_column_id(0)
        self.lista_prescritor.append_column(self.coluna_prescritor)

        self.entrada_evolucao = builder.get_object('entrada_evolucao')
        self.lista_evolucao = builder.get_object('lista_evolucao')
        self.armazenamento_evolucao = builder.get_object(
            'armazenamento_evolucao')
        self.coluna_evolucao = Gtk.TreeViewColumn('Evolução',
                                                  Gtk.CellRendererText(),
                                                  text=0)
        self.coluna_evolucao.set_sort_column_id(0)
        self.lista_evolucao.append_column(self.coluna_evolucao)

        self.entrada_alvo_intervencao = builder.get_object(
            'entrada_alvo_intervencao')
        self.lista_alvo_intervencao = builder.get_object(
            'lista_alvo_intervencao')
        self.armazenamento_alvo_intervencao = builder.get_object(
            'armazenamento_alvo_intervencao')
        self.coluna_alvo_intervencao = Gtk.TreeViewColumn(
            'Alvo Intervenção', Gtk.CellRendererText(), text=0)
        self.coluna_alvo_intervencao.set_sort_column_id(0)
        self.lista_alvo_intervencao.append_column(self.coluna_alvo_intervencao)

        self.entrada_ponto_critico = builder.get_object(
            'entrada_ponto_critico')
        self.lista_ponto_critico = builder.get_object('lista_ponto_critico')
        self.armazenamento_ponto_critico = builder.get_object(
            'armazenamento_ponto_critico')
        self.coluna_ponto_critico = Gtk.TreeViewColumn('Ponto Crítico',
                                                       Gtk.CellRendererText(),
                                                       text=0)
        self.coluna_ponto_critico.set_sort_column_id(0)
        self.lista_ponto_critico.append_column(self.coluna_ponto_critico)

        self.entrada_acatamento = builder.get_object('entrada_acatamento')
        self.lista_acatamento = builder.get_object('lista_acatamento')
        self.armazenamento_acatamento = builder.get_object(
            'armazenamento_acatamento')
        self.coluna_acatamento = Gtk.TreeViewColumn('Acatamento',
                                                    Gtk.CellRendererText(),
                                                    text=0)
        self.coluna_acatamento.set_sort_column_id(0)
        self.lista_acatamento.append_column(self.coluna_acatamento)

        self.salvar_e_fechar = builder.get_object('salvar_e_fechar')
        self.statusbar_definicoes_aplicativo = builder.get_object(
            'statusbar_definicoes_aplicativo')

        builder.connect_signals({
            'on_salvar_e_fechar_clicked':
            self.salvar_definicoes_e_fechar,
            'on_adicionar_intervencao_clicked':
            (self.adicionar_valores, self.entrada_intervencao,
             self.coll_valores_intervencao, self.armazenamento_intervencao,
             'intervenção'),
            'on_remover_intervencao_clicked':
            (self.remover_valores, self.lista_intervencao,
             self.coll_valores_intervencao, self.armazenamento_intervencao,
             'intervenção'),
            'on_adicionar_prescritor_clicked':
            (self.adicionar_valores, self.entrada_prescritor,
             self.coll_valores_prescritor, self.armazenamento_prescritor,
             'prescritor'),
            'on_remover_prescritor_clicked':
            (self.remover_valores, self.lista_prescritor,
             self.coll_valores_prescritor, self.armazenamento_prescritor,
             'prescritor'),
            'on_adicionar_evolucao_clicked':
            (self.adicionar_valores, self.entrada_evolucao,
             self.coll_valores_evolucao, self.armazenamento_evolucao,
             'evolução'),
            'on_remover_evolucao_clicked':
            (self.remover_valores, self.lista_evolucao,
             self.coll_valores_evolucao, self.armazenamento_evolucao,
             'evolução'),
            'on_adicionar_alvo_intervencao_clicked':
            (self.adicionar_valores, self.entrada_alvo_intervencao,
             self.coll_valores_alvo_intervencao,
             self.armazenamento_alvo_intervencao, 'alvo da intervenção'),
            'on_remover_alvo_intervencao_clicked':
            (self.remover_valores, self.lista_alvo_intervencao,
             self.coll_valores_alvo_intervencao,
             self.armazenamento_alvo_intervencao, 'alvo da intervenção'),
            'on_adicionar_ponto_critico_clicked':
            (self.adicionar_valores, self.entrada_ponto_critico,
             self.coll_valores_ponto_critico, self.armazenamento_ponto_critico,
             'ponto crítico'),
            'on_remover_ponto_critico_clicked':
            (self.remover_valores, self.lista_ponto_critico,
             self.coll_valores_ponto_critico, self.armazenamento_ponto_critico,
             'ponto crítico'),
            'on_adicionar_acatamento_clicked':
            (self.adicionar_valores, self.entrada_acatamento,
             self.coll_valores_acatamento, self.armazenamento_acatamento,
             'acatamento'),
            'on_remover_acatamento_clicked':
            (self.remover_valores, self.lista_acatamento,
             self.coll_valores_acatamento, self.armazenamento_acatamento,
             'acatamento')
        })

        msg = 'Alterações nessas propriedades podem causar mudanças visíveis somente se o programa for reiniciado.'
        self.statusbar_definicoes_aplicativo.push(
            self.statusbar_definicoes_aplicativo.get_context_id('info'),
            aux.statusbar(self.usuario, msg))

        self.carregar_definicoes()

        self.tela_definicoes_aplicativo.show_all()
    def validar_permissoes(self):
        for retries in range(self.politica_tentativas_conexao):
            try:
                coll_usuarios = self.banco_dados['db'].usuarios
                item = self.coll_definicoes_aplicativo.find_one({'_id': 0})
                politica_modulos_sem_permissao = item[
                    'politica_modulos_sem_permissao']

                usuario = coll_usuarios.find_one({'usuario': self.usuario})

                if politica_modulos_sem_permissao == 'desabilitados':
                    if usuario['permissoes'][
                            'nova_analise_prescricao'] is False:
                        self.nova_analise_prescricao.set_sensitive(False)
                    if usuario['permissoes'][
                            'abrir_analise_prescricao'] is False:
                        self.abrir_analise_prescricao.set_sensitive(False)
                    if usuario['permissoes']['abrir_intervencoes'] is False:
                        self.abrir_intervencoes.set_sensitive(False)
                    if usuario['permissoes']['abrir_esclarecimentos'] is False:
                        self.abrir_esclarecimentos.set_sensitive(False)
                    if usuario['permissoes']['dados_por_lar'] is False:
                        self.dados_por_lar.set_sensitive(False)
                    if usuario['permissoes']['dados_totais'] is False:
                        self.dados_totais.set_sensitive(False)
                    if usuario['permissoes']['cadastro_morador'] is False:
                        self.cadastro_morador.set_sensitive(False)
                    if usuario['permissoes']['cadastro_medicamento'] is False:
                        self.cadastro_medicamento.set_sensitive(False)
                    if usuario['permissoes'][
                            'historico_analise_prescricao'] is False:
                        self.historico_analise_prescricao.set_sensitive(False)
                    if usuario['permissoes'][
                            'historico_cadastro_morador'] is False:
                        self.historico_cadastro_morador.set_sensitive(False)
                    if usuario['permissoes'][
                            'historico_cadastro_medicamento'] is False:
                        self.historico_cadastro_medicamento.set_sensitive(
                            False)
                    if usuario['permissoes'][
                            'historico_opcoes_definicoes'] is False:
                        self.historico_opcoes_definicoes.set_sensitive(False)
                    if usuario['permissoes'][
                            'historico_opcoes_usuario'] is False:
                        self.historico_opcoes_usuario.set_sensitive(False)
                    if usuario['permissoes'][
                            'historico_gerenciamento_permissoes'] is False:
                        self.historico_gerenciamento_permissoes.set_sensitive(
                            False)
                    if usuario['permissoes']['historico_intervencoes'] is False:
                        self.historico_intervencoes.set_sensitive(False)
                    if usuario['permissoes'][
                            'historico_esclarecimentos'] is False:
                        self.historico_esclarecimentos.set_sensitive(False)
                    if usuario['permissoes']['opcoes_definicoes'] is False:
                        self.opcoes_definicoes.set_sensitive(False)
                    if usuario['permissoes']['opcoes_meu_usuario'] is False:
                        self.opcoes_meu_usuario.set_sensitive(False)
                    if usuario['permissoes'][
                            'opcoes_gerenciamento_permissoes'] is False:
                        self.opcoes_gerenciamento_permissoes.set_sensitive(
                            False)

                elif politica_modulos_sem_permissao == 'removidos':
                    if usuario['permissoes'][
                            'nova_analise_prescricao'] is False:
                        self.nova_analise_prescricao.hide()
                    if usuario['permissoes'][
                            'abrir_analise_prescricao'] is False:
                        self.abrir_analise_prescricao.hide()
                    if usuario['permissoes']['abrir_intervencoes'] is False:
                        self.abrir_intervencoes.hide()
                    if usuario['permissoes']['abrir_esclarecimentos'] is False:
                        self.abrir_esclarecimentos.hide()
                    if usuario['permissoes']['dados_por_lar'] is False:
                        self.dados_por_lar.hide()
                    if usuario['permissoes']['dados_totais'] is False:
                        self.dados_totais.hide()
                    if usuario['permissoes']['cadastro_morador'] is False:
                        self.cadastro_morador.hide()
                    if usuario['permissoes']['cadastro_medicamento'] is False:
                        self.cadastro_medicamento.hide()
                    if usuario['permissoes'][
                            'historico_analise_prescricao'] is False:
                        self.historico_analise_prescricao.hide()
                    if usuario['permissoes'][
                            'historico_cadastro_morador'] is False:
                        self.historico_cadastro_morador.hide()
                    if usuario['permissoes'][
                            'historico_cadastro_medicamento'] is False:
                        self.historico_cadastro_medicamento.hide()
                    if usuario['permissoes'][
                            'historico_opcoes_definicoes'] is False:
                        self.historico_opcoes_definicoes.hide()
                    if usuario['permissoes'][
                            'historico_opcoes_usuario'] is False:
                        self.historico_opcoes_usuario.hide()
                    if usuario['permissoes'][
                            'historico_gerenciamento_permissoes'] is False:
                        self.historico_gerenciamento_permissoes.hide()
                    if usuario['permissoes']['historico_intervencoes'] is False:
                        self.historico_intervencoes.hide()
                    if usuario['permissoes'][
                            'historico_esclarecimentos'] is False:
                        self.historico_esclarecimentos.hide()
                    if usuario['permissoes']['opcoes_definicoes'] is False:
                        self.opcoes_definicoes.hide()
                    if usuario['permissoes']['opcoes_meu_usuario'] is False:
                        self.opcoes_meu_usuario.hide()
                    if usuario['permissoes'][
                            'opcoes_gerenciamento_permissoes'] is False:
                        self.opcoes_gerenciamento_permissoes.hide()

                else:
                    self.nova_analise_prescricao.hide()
                    self.abrir_analise_prescricao.hide()
                    self.abrir_intervencoes.hide()
                    self.abrir_esclarecimentos.hide()
                    self.dados_por_lar.hide()
                    self.dados_totais.hide()
                    self.cadastro_morador.hide()
                    self.cadastro_medicamento.hide()
                    self.historico_analise_prescricao.hide()
                    self.historico_cadastro_morador.hide()
                    self.historico_cadastro_medicamento.hide()
                    self.historico_opcoes_definicoes.hide()
                    self.historico_opcoes_usuario.hide()
                    self.historico_gerenciamento_permissoes.hide()
                    self.historico_intervencoes.hide()
                    self.historico_esclarecimentos.hide()
                    self.opcoes_definicoes.hide()
                    self.opcoes_meu_usuario.hide()
                    self.opcoes_gerenciamento_permissoes.hide()

                    msg = 'Não foi possível acessar as políticas de módulos sem permissão.'
                    self.statusbar_base.push(
                        self.statusbar_base.get_context_id('permissoes'),
                        aux.statusbar(self.usuario, msg))
                break
            except errors.AutoReconnect:
                print('Tentando reconectar ao banco de dados.')
        else:

            msg = 'Não foi possível estabelecer uma conexão com o banco de dados.'
            self.statusbar_base.push(
                self.statusbar_base.get_context_id('db_status'),
                aux.statusbar(self.usuario, msg))
    def __init__(self, banco_dados, usuario, politica_tentativas_conexao,
                 hspw):
        self.banco_dados = banco_dados
        self.usuario = usuario
        self.politica_tentativas_conexao = politica_tentativas_conexao
        self.coll_definicoes_aplicativo = banco_dados[
            'db'].definicoes_aplicativo
        self.hspw = hspw

        builder = Gtk.Builder()
        builder.add_from_file('glade/tela_base.glade')
        self.tela_base = builder.get_object('tela_base')
        self.statusbar_base = builder.get_object('statusbar_base')

        self.nova_analise_prescricao = builder.get_object(
            'nova_analise_prescricao')
        self.abrir_analise_prescricao = builder.get_object(
            'abrir_analise_prescricao')
        self.abrir_intervencoes = builder.get_object('abrir_intervencoes')
        self.abrir_esclarecimentos = builder.get_object(
            'abrir_esclarecimentos')
        self.dados_por_lar = builder.get_object('dados_por_lar')
        self.dados_totais = builder.get_object('dados_totais')
        self.cadastro_morador = builder.get_object('cadastro_morador')
        self.cadastro_medicamento = builder.get_object('cadastro_medicamento')
        self.historico_analise_prescricao = builder.get_object(
            'historico_analise_prescricao')
        self.historico_cadastro_morador = builder.get_object(
            'historico_cadastro_morador')
        self.historico_cadastro_medicamento = builder.get_object(
            'historico_cadastro_medicamento')
        self.historico_opcoes_definicoes = builder.get_object(
            'historico_opcoes_definicoes')
        self.historico_opcoes_usuario = builder.get_object(
            'historico_opcoes_usuario')
        self.historico_gerenciamento_permissoes = builder.get_object(
            'historico_gerenciamento_permissoes')
        self.historico_intervencoes = builder.get_object(
            'historico_intervencoes')
        self.historico_esclarecimentos = builder.get_object(
            'historico_esclarecimentos')
        self.opcoes_definicoes = builder.get_object('opcoes_definicoes')
        self.opcoes_meu_usuario = builder.get_object('opcoes_meu_usuario')
        self.opcoes_gerenciamento_permissoes = builder.get_object(
            'opcoes_gerenciamento_permissoes')

        builder.connect_signals({
            "gtk_main_quit":
            Gtk.main_quit,
            "on_nova_analise_prescricao_activate":
            self.func_abrir_tela_nova_analise_prescricao,
            "on_abrir_analise_prescricao_activate":
            self.func_abrir_tela_abrir_analise_prescricao,
            "on_abrir_intervencoes_activate":
            self.func_abrir_tela_abrir_intervencoes,
            "on_abrir_esclarecimentos_activate":
            self.func_abrir_tela_abrir_esclarecimentos,
            "on_dados_por_lar_activate":
            self.func_abrir_tela_dados_por_lar,
            "on_dados_totais_activate":
            self.func_abrir_tela_dados_totais,
            "on_cadastro_morador_activate":
            self.func_abrir_tela_cadastro_morador,
            "on_cadastro_medicamento_activate":
            self.func_abrir_tela_cadastro_medicamento,
            "on_historico_analise_prescricao_activate":
            self.func_abrir_tela_historico_analise_prescricao,
            "on_historico_cadastro_morador_activate":
            self.func_abrir_tela_historico_cadastro_morador,
            "on_historico_cadastro_medicamento_activate":
            self.func_abrir_tela_historico_cadastro_medicamento,
            "on_historico_opcoes_definicoes_activate":
            self.func_abrir_tela_historico_opcoes_definicoes,
            "on_historico_opcoes_usuario_activate":
            self.func_abrir_tela_historico_opcoes_usuario,
            "on_historico_gerenciamento_permissoes_activate":
            self.func_abrir_tela_historico_gerenciamento_permissoes,
            "on_historico_intervencoes_activate":
            self.func_abrir_tela_historico_intervencoes,
            "on_historico_esclarecimentos_activate":
            self.func_abrir_tela_historico_esclarecimentos,
            "on_opcoes_definicoes_activate":
            self.func_abrir_tela_opcoes_definicoes,
            "on_opcoes_meu_usuario_activate":
            self.func_abrir_tela_opcoes_meu_usuario,
            "on_opcoes_gerenciamento_permissoes_activate":
            self.func_abrir_tela_opcoes_gerenciamento_permissoes,
            "on_ajuda_documentacao_activate":
            self.func_abrir_tela_ajuda_documentacao,
            "on_ajuda_sobre_activate":
            self.func_abrir_tela_sobre
        })

        msg = 'Bem-vindo(a) ' + usuario + '!'
        self.statusbar_base.push(self.statusbar_base.get_context_id('info'),
                                 aux.statusbar(self.usuario, msg))

        self.tela_base.show_all()

        self.validar_permissoes()
    def __init__(self, banco_dados, politica_tentativas_conexao, usuario, pai):
        self.banco_dados = banco_dados
        self.politica_tentativas_conexao = politica_tentativas_conexao
        self.usuario = usuario
        self.pai = pai

        self.coll_usuarios = self.banco_dados['db'].usuarios

        builder = Gtk.Builder()
        builder.add_from_file('glade/tela_gerenciamento_permissoes.glade')
        self.tela_gerenciamento_permissoes = builder.get_object(
            'tela_gerenciamento_permissoes')
        self.botao_autorizar = builder.get_object('autorizar')
        self.botao_desautorizar = builder.get_object('desautorizar')

        self.tela_gerenciamento_permissoes.set_transient_for(self.pai)

        self.botao_desautorizar.set_sensitive(False)
        self.botao_autorizar.set_sensitive(False)

        self.lista_desautorizados = builder.get_object('lista_desautorizados')
        self.armazenamento_desautorizados = builder.get_object(
            'armazenamento_desautorizados')
        self.coluna_desautorizados_usuario = Gtk.TreeViewColumn(
            'Usuário', Gtk.CellRendererText(), text=0)
        self.coluna_desautorizados_nome = Gtk.TreeViewColumn(
            'Nome', Gtk.CellRendererText(), text=1)
        self.coluna_desautorizados_email = Gtk.TreeViewColumn(
            'E-mail', Gtk.CellRendererText(), text=2)
        self.coluna_desautorizados_datasolicitacao = Gtk.TreeViewColumn(
            'Data Solicitação', Gtk.CellRendererText(), text=3)
        self.coluna_desautorizados_usuario.set_sort_column_id(0)
        self.lista_desautorizados.append_column(
            self.coluna_desautorizados_usuario)
        self.lista_desautorizados.append_column(
            self.coluna_desautorizados_nome)
        self.lista_desautorizados.append_column(
            self.coluna_desautorizados_email)
        self.lista_desautorizados.append_column(
            self.coluna_desautorizados_datasolicitacao)
        self.visao_arvore_desautorizados = builder.get_object(
            'visao_arvore_desautorizados')

        self.lista_autorizados = builder.get_object('lista_autorizados')
        self.armazenamento_autorizados = builder.get_object(
            'armazenamento_autorizados')
        self.coluna_autorizados_usuario = Gtk.TreeViewColumn(
            'Usuário', Gtk.CellRendererText(), text=0)
        self.coluna_autorizados_nome = Gtk.TreeViewColumn(
            'Nome', Gtk.CellRendererText(), text=1)
        self.coluna_autorizados_email = Gtk.TreeViewColumn(
            'E-mail', Gtk.CellRendererText(), text=2)
        self.coluna_autorizados_datasolicitacao = Gtk.TreeViewColumn(
            'Data Solicitação', Gtk.CellRendererText(), text=3)
        self.coluna_autorizados_usuario.set_sort_column_id(0)
        self.lista_autorizados.append_column(self.coluna_autorizados_usuario)
        self.lista_autorizados.append_column(self.coluna_autorizados_nome)
        self.lista_autorizados.append_column(self.coluna_autorizados_email)
        self.lista_autorizados.append_column(
            self.coluna_autorizados_datasolicitacao)
        self.visao_arvore_autorizados = builder.get_object(
            'visao_arvore_autorizados')

        self.lista_usuarios = builder.get_object('lista_usuarios')
        self.armazenamento_usuarios = builder.get_object(
            'armazenamento_usuarios')
        self.coluna_usuarios = Gtk.TreeViewColumn('Usuário',
                                                  Gtk.CellRendererText(),
                                                  text=0)
        self.coluna_usuarios.set_sort_column_id(0)
        self.lista_usuarios.append_column(self.coluna_usuarios)

        self.checkbutton_nova_analise_prescricao = builder.get_object(
            'checkbutton_nova_analise_prescricao')
        self.checkbutton_abrir_analise_prescricao = builder.get_object(
            'checkbutton_abrir_analise_prescricao')
        self.checkbutton_abrir_intervencoes = builder.get_object(
            'checkbutton_abrir_intervencoes')
        self.checkbutton_abrir_esclarecimentos = builder.get_object(
            'checkbutton_abrir_esclarecimentos')
        self.checkbutton_dados_por_lar = builder.get_object(
            'checkbutton_dados_por_lar')
        self.checkbutton_dados_totais = builder.get_object(
            'checkbutton_dados_totais')
        self.checkbutton_cadastro_morador = builder.get_object(
            'checkbutton_cadastro_morador')
        self.checkbutton_cadastro_medicamento = builder.get_object(
            'checkbutton_cadastro_medicamento')
        self.checkbutton_opcoes_definicoes = builder.get_object(
            'checkbutton_opcoes_definicoes')
        self.checkbutton_opcoes_meu_usuario = builder.get_object(
            'checkbutton_opcoes_meu_usuario')
        self.checkbutton_historico_analise_prescricao = builder.get_object(
            'checkbutton_historico_analise_prescricao')
        self.checkbutton_historico_cadastro_morador = builder.get_object(
            'checkbutton_historico_cadastro_morador')
        self.checkbutton_historico_cadastro_medicamento = builder.get_object(
            'checkbutton_historico_cadastro_medicamento')
        self.checkbutton_historico_opcoes_definicoes = builder.get_object(
            'checkbutton_historico_opcoes_definicoes')
        self.checkbutton_historico_opcoes_usuario = builder.get_object(
            'checkbutton_historico_opcoes_usuario')
        self.checkbutton_historico_gerenciamento_permissoes = builder.get_object(
            'checkbutton_historico_gerenciamento_permissoes')
        self.checkbutton_historico_intervencoes = builder.get_object(
            'checkbutton_historico_intervencoes')
        self.checkbutton_historico_esclarecimentos = builder.get_object(
            'checkbutton_historico_esclarecimentos')
        self.checkbutton_opcoes_gerenciamento_permissoes = builder.get_object(
            'checkbutton_opcoes_gerenciamento_permissoes')

        self.statusbar_gerenciamento_permissoes = builder.get_object(
            'statusbar_gerenciamento_permissoes')

        builder.connect_signals({
            'on_fechar_clicked':
            self.fechar,
            'on_lista_desautorizados_cursor_changed':
            self.desautorizado_selecionado,
            'on_lista_autorizados_cursor_changed':
            self.autorizado_selecionado,
            'on_autorizar_clicked':
            self.autorizar,
            'on_desautorizar_clicked':
            self.desautorizar,
            'on_lista_usuarios_cursor_changed':
            self.carregar_checkboxes,
            'on_salvar_clicked':
            self.salvar
        })

        msg = 'Alterar autorizações e permissões sem autorização é um grave risco de segurança das informações.'
        self.statusbar_gerenciamento_permissoes.push(
            self.statusbar_gerenciamento_permissoes.get_context_id('info'),
            aux.statusbar(self.usuario, msg))

        self.carregar_usuarios()
        self.carregar_desautorizados()
        self.carregar_autorizados()

        self.tela_gerenciamento_permissoes.show_all()