def deletar(self, identificador: str):
        try:
            produto = self.entity_manager.get(identificador)
            self.entity_manager.remove(identificador, False)

            ControleRegistro.adiciona_registro(
                "Deletou produto.",
                f"Requisição enviada pelo usuário:\n{identificador}\n\nProduto Deletado:\n{produto.objeto_limite_detalhado()}"
            )

            self.listar()
        except ValueError as err:
            self.limite.erro(
                "Algum argumento passado foi do tipo errado[Número ou palavra]\n"
                +
                "(Exemplo: No cadastro de um produto você passou uma letra para o valor)."
            )
            ControleRegistro.adiciona_registro(f"Erro {err}", format_exc())
        except (
                TipoNaoCompativelException,
                CodigoReferenciaDuplicadoException,
        ) as err:
            self.limite.erro(err)
            ControleRegistro.adiciona_registro(f"Erro {err}", format_exc())
        except (
                RotaInexistenteException,
                MetodoNaoPermitidoException,
                EntidadeNaoExistente,
        ) as err:
            self.limite.erro(err)
            ControleRegistro.adiciona_registro(f"Erro {err}", format_exc())
        except Exception as err:
            self.limite.erro("Erro inesperado ocorreu!")
            ControleRegistro.adiciona_registro(f"Erro {err}", format_exc())
    def home(self):
        try:
            rotas = self.rotas("home")
            opcao = self.limite.home()

            ControleRegistro.adiciona_registro(
                "Moveu da Home.",
                f"Requisição enviada pelo usuário:\n{opcao.get('botao')}")

            self.selecione_rota(rotas, opcao.get('botao'), self.home)()
            self.home()
        except (
                RotaInexistenteException,
                MetodoNaoPermitidoException,
        ) as err:
            self.limite.erro(err)
            ControleRegistro.adiciona_registro(f"Erro {err}", format_exc())
        except ValueError as err:
            self.limite.erro(
                "Algum argumento passado foi do tipo errado[Número ou palavra]\n"
                +
                "(Exemplo: No cadastro de um produto você passou uma letra para o valor)."
            )
            ControleRegistro.adiciona_registro(f"Erro {err}", format_exc())
        except Exception as err:
            self.limite.erro("Erro inesperado ocorreu!")
            ControleRegistro.adiciona_registro(f"Erro {err}", format_exc())
    def mostrar(self, identificador: str):
        try:
            produto = self.entity_manager.get(
                identificador).objeto_limite_detalhado()

            self.limite.mostrar(produto)

            ControleRegistro.adiciona_registro(
                "Visualizou detalhes de um produto.",
                f"Requisição enviada pelo usuário:\n{identificador}\n\nProduto visto:\n{produto}"
            )

            self.listar()
        except ValueError as err:
            self.limite.erro(
                "Algum argumento passado foi do tipo errado[Número ou palavra]\n"
                +
                "(Exemplo: No cadastro de um produto você passou uma letra para o valor)."
            )
            ControleRegistro.adiciona_registro(f"Erro {err}", format_exc())

            self.listar()
        except (
                RotaInexistenteException,
                MetodoNaoPermitidoException,
                EntidadeNaoExistente,
        ) as err:
            self.limite.erro(err)
            ControleRegistro.adiciona_registro(f"Erro {err}", format_exc())
        except Exception as err:
            self.limite.erro("Erro inesperado ocorreu!")
            ControleRegistro.adiciona_registro(f"Erro {err}", format_exc())
Ejemplo n.º 4
0
    def deletar(self, identificador: str):
        try:
            categoria = self.entity_manager.get(identificador)
            self.entity_manager.remove(identificador, False)

            produtos = DAOProduto().get_all()
            for produto in produtos:
                if produto.categorias.get(identificador):
                    del (produto.categorias[identificador])
                    DAOProduto().remove(produto.identificador)
                    DAOProduto().add(produto.identificador, produto)

            ControleRegistro.adiciona_registro(
                "Deletou categoria.",
                f"Requisição enviada pelo usuário:\n{categoria.objeto_limite_detalhado()}\n"
                + "\nCategoria deletada:\n{registro_categoria}")

            self.listar()
        except (
                RotaInexistenteException,
                MetodoNaoPermitidoException,
                TipoNaoCompativelException,
        ) as err:
            self.limite.erro(err)
            ControleRegistro.adiciona_registro(f"Erro {err}", format_exc())
        except ValueError as err:
            self.limite.erro(
                "Algum argumento passado foi do tipo errado[Número ou palavra]\n"
                +
                "(Exemplo: No cadastro de um produto você passou uma letra para o valor)."
            )
            ControleRegistro.adiciona_registro(f"Erro {err}", format_exc())
        except Exception as err:
            self.limite.erro("Erro inesperado ocorreu!")
            ControleRegistro.adiciona_registro(f"Erro {err}", format_exc())
Ejemplo n.º 5
0
    def atualizar(self, identificador: str):
        registro_produto = None
        requisicao = None

        try:
            registro_categoria = self.entity_manager.get(identificador)

            requisicao = self.limite.atualizar(
                registro_categoria.objeto_limite_detalhado())

            if requisicao.get("botao") is None:
                self.listar()
                return

            categoria = self.lista_para_categoria(requisicao.get("valores"),
                                                  registro_categoria)

            self.atualizar_entidade(categoria, identificador)

            self.listar()
        except ValueError as err:
            self.limite.erro(
                "Algum argumento passado foi do tipo errado[Número ou palavra]\n"
                +
                "(Exemplo: No cadastro de um produto você passou uma letra para o valor)."
            )
            ControleRegistro.adiciona_registro(f"Erro {err}", format_exc())
        except (
                TipoNaoCompativelException,
                CodigoReferenciaDuplicadoException,
        ) as err:
            self.limite.erro(err)
            ControleRegistro.adiciona_registro(f"Erro {err}", format_exc())
        except (
                RotaInexistenteException,
                MetodoNaoPermitidoException,
        ) as err:
            self.limite.erro(err)
            ControleRegistro.adiciona_registro(f"Erro {err}", format_exc())
        except Exception as err:
            self.limite.erro("Erro inesperado ocorreu!")
            ControleRegistro.adiciona_registro(f"Erro {err}", format_exc())
        finally:
            ControleRegistro.adiciona_registro(
                "Atualizou categoria.",
                f"Requisição enviada pelo usuário:\n{requisicao}\n" +
                "\nCategoria Antes da alteração:\n{registro_categoria}")
Ejemplo n.º 6
0
    def criar(self):
        requisicao = None

        try:
            requisicao = self.limite.criar()

            if requisicao.get("botao") is None:
                self.listar()
                return

            produto = self.lista_para_categoria(requisicao.get("valores"))

            self.adicionar_entidade(produto)

            self.listar()
        except ValueError as err:
            self.limite.erro(
                "Algum argumento passado foi do tipo errado[Número ou palavra]\n"
                +
                "(Exemplo: No cadastro de um produto você passou uma letra para o valor)."
            )
            ControleRegistro.adiciona_registro(f"Erro {err}", format_exc())
        except (
                TipoNaoCompativelException,
                CodigoReferenciaDuplicadoException,
        ) as err:
            self.limite.erro(err)
            ControleRegistro.adiciona_registro(f"Erro {err}", format_exc())
            self.listar()
        except (
                RotaInexistenteException,
                MetodoNaoPermitidoException,
        ) as err:
            self.limite.erro(err)
            ControleRegistro.adiciona_registro(f"Erro {err}", format_exc())
        except Exception as err:
            self.limite.erro("Erro inesperado ocorreu!")
            ControleRegistro.adiciona_registro(f"Erro {err}", format_exc())
        finally:
            ControleRegistro.adiciona_registro(
                "Criou produto.",
                f"Requisição enviada pelo usuário:\n{requisicao}")
Ejemplo n.º 7
0
    def listar(self):
        try:
            nome_funcao = "listar"
            rotas = self.rotas(nome_funcao)
            requisicao = self.limite.listar(self.exportar_entidades())
            botao = requisicao.get('botao')

            if botao is None:
                return

            valores = requisicao.get("valores")
            identificador = ""

            if valores and isinstance(valores, dict) and botao == 'tabela':
                identificador = valores.get("tabela")
                if identificador and isinstance(
                        identificador, list) and len(identificador) > 0:
                    lotes = list(self.__produto.lotes.values())
                    identificador = lotes[identificador[0]].identificador
                else:
                    self.listar()
                    return

            if botao == 'tabela':
                botao = self.limite.tabela_opcoes().get('botao')

                if botao is None:
                    self.listar()
                    return

            if botao in ("editar", "apagar"):
                retorno = self.selecione_rota(rotas, botao,
                                              self.listar)(identificador)
            else:
                retorno = self.selecione_rota(rotas, botao, self.listar)()

            if retorno is not None:
                self.listar()
        except (
                RotaInexistenteException,
                MetodoNaoPermitidoException,
        ) as err:
            self.limite.erro(err)
            ControleRegistro.adiciona_registro(f"Erro {err}", format_exc())
        except ValueError as err:
            self.limite.erro(
                "Algum argumento passado foi do tipo errado[Número ou palavra]\n"
                +
                "(Exemplo: No cadastro de um produto você passou uma letra para o valor)."
            )
            ControleRegistro.adiciona_registro(f"Erro {err}", format_exc())
        except Exception as err:
            self.limite.erro("Erro inesperado ocorreu!")
            ControleRegistro.adiciona_registro(f"Erro {err}", format_exc())
 def registros(self):
     try:
         ControleRegistro().Listar()
     except (
             RotaInexistenteException,
             MetodoNaoPermitidoException,
     ) as err:
         self.limite.erro(err)
         ControleRegistro.adiciona_registro(f"Erro {err}", format_exc())
     except ValueError as err:
         self.limite.erro(
             "Algum argumento passado foi do tipo errado[Número ou palavra]\n"
             +
             "(Exemplo: No cadastro de um produto você passou uma letra para o valor)."
         )
         ControleRegistro.adiciona_registro(f"Erro {err}", format_exc())
     except Exception as err:
         self.limite.erro("Erro inesperado ocorreu!")
         ControleRegistro.adiciona_registro(f"Erro {err}", format_exc())
Ejemplo n.º 9
0
    def atualizar(self, identificador: str):
        try:
            lote = self.__produto.lotes.get(identificador)

            if not lote:
                raise EntidadeNaoExistente()

            requisicao = self.limite.atualizar(lote.objeto_limite_detalhado())

            botao = requisicao.get("botao")
            valores = requisicao.get("valores")

            if botao is None:
                self.listar()
                return

            lote.data_validade = valores.get("data_validade")
            lote.quantidade = int(valores.get("quantidade"))

            self.__produto.remover_lote(identificador)
            self.__produto.add_lote(lote)

            self.listar()
        except (
                RotaInexistenteException,
                MetodoNaoPermitidoException,
                TipoNaoCompativelException,
                CodigoReferenciaDuplicadoException,
        ) as err:
            self.limite.erro(err)
            ControleRegistro.adiciona_registro(f"Erro {err}", format_exc())
        except ValueError as err:
            self.limite.erro(
                "Algum argumento passado foi do tipo errado[Número ou palavra]\n"
                +
                "(Exemplo: No cadastro de um produto você passou uma letra para o valor)."
            )
            ControleRegistro.adiciona_registro(f"Erro {err}", format_exc())
        except Exception as err:
            self.limite.erro("Erro inesperado ocorreu!")
            ControleRegistro.adiciona_registro(f"Erro {err}", format_exc())
Ejemplo n.º 10
0
    def criar(self):
        try:
            requisicao = self.limite.criar()

            botao = requisicao.get("botao")
            valores = requisicao.get("valores")

            if botao is None:
                self.listar()
                return

            if self.__produto.lotes.get(valores.get("data_validade")):
                raise CodigoReferenciaDuplicadoException()

            self.__produto.add_lote(
                Lote(
                    valores.get("data_validade"),
                    int(valores.get("quantidade")),
                ))

            self.listar()
        except (
                RotaInexistenteException,
                MetodoNaoPermitidoException,
                TipoNaoCompativelException,
                CodigoReferenciaDuplicadoException,
        ) as err:
            self.limite.erro(err)
            ControleRegistro.adiciona_registro(f"Erro {err}", format_exc())
        except ValueError as err:
            self.limite.erro(
                "Algum argumento passado foi do tipo errado[Número ou palavra]\n"
                +
                "(Exemplo: No cadastro de um produto você passou uma letra para o valor)."
            )
            ControleRegistro.adiciona_registro(f"Erro {err}", format_exc())
        except Exception as err:
            self.limite.erro("Erro inesperado ocorreu!")
            ControleRegistro.adiciona_registro(f"Erro {err}", format_exc())
Ejemplo n.º 11
0
    def deletar(self, identificador: str):
        try:
            if self.__produto.lotes.get(identificador):
                self.__produto.remover_lote(identificador)

            self.listar()
        except (
                RotaInexistenteException,
                MetodoNaoPermitidoException,
                TipoNaoCompativelException,
                CodigoReferenciaDuplicadoException,
        ) as err:
            self.limite.erro(err)
            ControleRegistro.adiciona_registro(f"Erro {err}", format_exc())
        except ValueError as err:
            self.limite.erro(
                "Algum argumento passado foi do tipo errado[Número ou palavra]\n"
                +
                "(Exemplo: No cadastro de um produto você passou uma letra para o valor)."
            )
            ControleRegistro.adiciona_registro(f"Erro {err}", format_exc())
        except Exception as err:
            self.limite.erro("Erro inesperado ocorreu!")
            ControleRegistro.adiciona_registro(f"Erro {err}", format_exc())
    def atualizar(self, identificador: str):
        registro_produto = None
        requisicao = None

        try:
            registro_produto = self.entity_manager.get(identificador)

            requisicao = self.limite.atualizar(
                registro_produto.objeto_limite_detalhado())
            botao = requisicao.get("botao")

            if botao is None:
                self.listar()
                return

            produto = self.lista_para_produto(requisicao.get("valores"),
                                              registro_produto)

            mudou_id = requisicao["valores"]["identificador"] != identificador
            self.atualizar_entidade(produto, identificador)

            if botao == "categorias":
                produto.categorias = self.categorias()

            if botao == "lotes":
                ControleLote(produto=produto).listar()

            self.atualizar_entidade(produto, produto.identificador)

            self.listar()
        except ValueError as err:
            self.limite.erro(
                "Algum argumento passado foi do tipo errado[Número ou palavra]\n"
                +
                "(Exemplo: No cadastro de um produto você passou uma letra para o valor)."
            )
            ControleRegistro.adiciona_registro(f"Erro {err}", format_exc())
        except (
                TipoNaoCompativelException,
                CodigoReferenciaDuplicadoException,
                EntidadeNaoExistente,
        ) as err:
            self.limite.erro(err)
            ControleRegistro.adiciona_registro(f"Erro {err}", format_exc())
        except (
                RotaInexistenteException,
                MetodoNaoPermitidoException,
        ) as err:
            self.limite.erro(err)
            ControleRegistro.adiciona_registro(f"Erro {err}", format_exc())
        except Exception as err:
            self.limite.erro("Erro inesperado ocorreu!")
            ControleRegistro.adiciona_registro(f"Erro {err}", format_exc())
        finally:
            if registro_produto:
                registro_produto = registro_produto.objeto_limite_detalhado()

            ControleRegistro.adiciona_registro(
                "Atualizou produto.",
                f"Requisição enviada pelo usuário:\n{requisicao}\n\nProduto Antes da alteração:\n{registro_produto}"
            )
Ejemplo n.º 13
0
    def listar(self) -> None:
        try:
            nome_funcao = "listar"

            rotas = self.rotas(nome_funcao)
            requisicao = self.limite.listar(self.exportar_entidades())

            ControleRegistro.adiciona_registro(
                "Moveu da Listagem de Categorias.",
                f"Requisição enviada pelo usuário:\n{requisicao}")

            if requisicao.get("botao") is None:
                return None

            botao = requisicao.get('botao')
            valores = requisicao.get("valores")
            identificador = ""

            if valores and isinstance(valores, dict) and botao == 'tabela':
                identificador = valores.get("tabela")
                if identificador and isinstance(
                        identificador, list) and len(identificador) > 0:
                    if len(self.entity_manager.get_all()) < 1:
                        self.listar()
                        return
                    identificador = self.entity_manager.get_all()[
                        identificador[0]].identificador
                else:
                    self.listar()
                    return

            if botao == 'tabela':
                botao = self.limite.tabela_opcoes().get('botao')

                if botao is None:
                    self.listar()
                    return

            if botao in ("editar", "mostrar", "apagar"):
                retorno = self.selecione_rota(rotas, botao,
                                              self.listar)(identificador)
            else:
                retorno = self.selecione_rota(rotas, botao, self.listar)()

            if retorno is not None:
                self.listar()
        except (
                RotaInexistenteException,
                MetodoNaoPermitidoException,
        ) as err:
            self.limite.erro(err)
            ControleRegistro.adiciona_registro(f"Erro {err}", format_exc())
        except ValueError as err:
            self.limite.erro(
                "Algum argumento passado foi do tipo errado[Número ou palavra]\n"
                +
                "(Exemplo: No cadastro de um produto você passou uma letra para o valor)."
            )
            ControleRegistro.adiciona_registro(f"Erro {err}", format_exc())
        except Exception as err:
            self.limite.erro("Erro inesperado ocorreu!")
            ControleRegistro.adiciona_registro(f"Erro {err}", format_exc())