From 5fa7e7bde95bf278a33926aae18feedcf12006f6 Mon Sep 17 00:00:00 2001 From: Alex Selimov Date: Mon, 21 Apr 2025 22:13:09 -0400 Subject: [PATCH] Add file deletion *NEEDS TESTS* --- src/maildirclean/filedir.py | 11 +++++++++-- src/maildirclean/maildir.py | 6 ++++++ 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/src/maildirclean/filedir.py b/src/maildirclean/filedir.py index 9fc8845..9033db6 100644 --- a/src/maildirclean/filedir.py +++ b/src/maildirclean/filedir.py @@ -1,10 +1,17 @@ """Module containing functionality to interact with the filesystem""" import os -from pathlib import Path + +from maildirclean.maildir import MailDir, TopSender -def delete_files(file_list: list[str | Path]): +def delete_all_from_selected_email(selected_senders: list[TopSender], maildir: MailDir): + for sender in selected_senders: + delete_files(maildir.get_paths_for_email(sender.email)) + maildir.remove_email(sender.email) + + +def delete_files(file_list: list[str]): """Delete all files in the provided file list Args: diff --git a/src/maildirclean/maildir.py b/src/maildirclean/maildir.py index 308c392..dc0ac2d 100644 --- a/src/maildirclean/maildir.py +++ b/src/maildirclean/maildir.py @@ -119,3 +119,9 @@ class MailDir: ] return senders + + def get_paths_for_email(self, email: str) -> list[str]: + return self._df.loc[self._df == email, "path"].to_list() + + def remove_email(self, email: str): + self._df.drop(self._df[self._df["email"] == email].index, inplace=True)