[Python] Como adicionar tarefas para um usuário específico como administrador em uma aplicação...

Discussão em 'Python' iniciado por Stack, Outubro 2, 2024.

  1. Stack

    Stack Membro Participativo

    Fiz uma pequena aplicação desktop em python que usa Firebase como banco de dados. Na aplicação você cadastra seu usuário e insere tarefas (como um trello).

    Além disso, existe um login Administrador, no qual o administrador pode inserir tarefas para os outros usuários cadastrados, que ele seleciona.

    Abaixo está a função do administrador para gerenciar um usuário e adicionar uma tarefa deste usuário

    def gerenciar_usuario(user_id): global frame_tarefas_usuario_interior, canvas_usuario, canvas

    # Obtendo os dados do usuário pelo user_id
    doc = db.collection('usuarios').document(user_id).get()
    user_data = doc.to_dict()

    # Verificando se o usuário existe
    if not user_data:
    print("Usuário não encontrado")
    return

    username = user_data['username'] # Se precisar exibir o nome do usuário, mas usar o user_id para associações

    def adicionar_tarefa_usuario():
    tarefa = entrada_tarefa_usuario.get("1.0", ctk.END).strip()
    if tarefa:
    try:
    print(f"Adicionando tarefa para o usuário: {user_id}") # Use o user_id
    db.collection('tarefas').add({
    'tarefa': tarefa,
    'user_id': user_id, # Salve o user_id ao invés de username
    'data_check': None,
    'alta_prioridade': False,
    'timestamp': firestore.SERVER_TIMESTAMP
    })
    entrada_tarefa_usuario.delete("1.0", ctk.END)
    atualizar_lista_tarefas_usuario()
    except GoogleAPICallError as e:
    messagebox.showerror("Erro", f"Erro ao adicionar tarefa: {e}")
    else:
    messagebox.showwarning("Aviso", "A tarefa não pode estar vazia.")


    Porém, ao inserir tarefas para um usuário selecionado, todos os outros recebem a mesma tarefa, o que não deveria acontecer. Apenas o usuário selecionado pelo administrador deveria receber a tarefa.

    Essa é a função pós inserção de uma tarefa. Onde a tarefa é fixada na aplicação junto aos botões de dar "Check", "Editar" e "Excluir" a tarefa. Ela fica armazenada db.collection, que está definida com user_id.

    def atualizar_lista_tarefas_usuario(): global canvas_usuario, canvas

    for widget in frame_tarefas_usuario_interior.winfo_children():
    widget.destroy()

    tarefas_ref = db.collection('tarefas').where('user_id', '==', user_id).order_by('alta_prioridade', direction=firestore.Query.DESCENDING).order_by('timestamp', direction=firestore.Query.DESCENDING).stream()

    for doc in tarefas_ref:
    tarefa_data = doc.to_dict()
    # restante do código...


    Eu acredito que o problema seja no uso do "user_id" no lugar do "username", mas não tenho certeza.

    Eu gostaria de saber se alguém que entende de python poderia me ajudar a evitar esse problema, tentei refazer o código várias vezes, mas não consigo fazer com que a aplicação defina uma tarefa para o usuário selecionado "username", como consta no Firebase. Qualquer dúvida, é só falarem, Obrigado.

    Continue reading...

Compartilhe esta Página