Search code examples
pythonpyqtexchangewebservices

Counter var doesn't count up


I was working on a function that should count the total amount of e-mails that are in the inbox. everything works but it just doesn't want to count it all up.

I have an database where i check the users emails and username.

Function:

@pyqtSlot(str, str)
def checkaantalmail(self, email, wachtwoord):

    cursor.execute("SELECT DISTINCT Naam FROM Klant")
    updatedklant = str(cursor.fetchall())

    credentials = Credentials(email, wachtwoord)
    acc = Account(email, credentials=credentials, autodiscover=True)

    for item in acc.inbox.all().order_by('-datetime_received')[:500]:

        inboxmail = str(item.sender).split("'")
        currentinboxmail = inboxmail[3]

        cursor.execute("SELECT DISTINCT Klant FROM Mail WHERE Mail=?", currentinboxmail)
        currentklant = str(cursor.fetchall())

        remove_characters = ["(",")","'",",","]","["]
        for characters in remove_characters:
            currentklant = currentklant.replace(characters, "")

        counter = 0 

        if currentklant not in updatedklant:
            print("yes")
            print(currentklant)
            counter += 1

    print("total", counter)

cmd prints:

if: works good and prints the current customer full name

total counter: prints 1 or 0 depends what the last e-mail is

Thanks in advance.


Solution

  • You are resetting counter within the loop. counter = 0 should be outside the loop.

    – Maurice Meyer

    @pyqtSlot(str, str)
    def checkaantalmail(self, email, wachtwoord):
    
        cursor.execute("SELECT DISTINCT Naam FROM Klant")
        updatedklant = str(cursor.fetchall())
    
        credentials = Credentials(email, wachtwoord)
        acc = Account(email, credentials=credentials, autodiscover=True)
    
        counter = 0 
    
        for item in acc.inbox.all().order_by('-datetime_received')[:500]:
    
            inboxmail = str(item.sender).split("'")
            currentinboxmail = inboxmail[3]
    
            cursor.execute("SELECT DISTINCT Klant FROM Mail WHERE Mail=?", currentinboxmail)
            currentklant = str(cursor.fetchall())
    
            remove_characters = ["(",")","'",",","]","["]
            for characters in remove_characters:
                currentklant = currentklant.replace(characters, "")
    
            if currentklant not in updatedklant:
                print("yes")
                print(currentklant)
                counter += 1
    
                
        print("total", counter)