From: Michael Tremer Date: Sat, 6 Dec 2025 17:56:12 +0000 (+0000) Subject: dnsbl: Add a command to delete a list X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=f8961d9064fb48789d497d5a6f6bdf3cd3fa1ede;p=dbl.git dnsbl: Add a command to delete a list Signed-off-by: Michael Tremer --- diff --git a/src/dnsbl/lists.py b/src/dnsbl/lists.py index 147eb40..21b4a2e 100644 --- a/src/dnsbl/lists.py +++ b/src/dnsbl/lists.py @@ -19,12 +19,17 @@ ############################################################################### import datetime +import logging import sqlmodel import typing from . import database from . import sources from . import util +from .i18n import _ + +# Setup logging +log = logging.getLogger(__name__) class Lists(object): def __init__(self, backend): @@ -168,6 +173,17 @@ class List(sqlmodel.SQLModel, database.BackendMixin, table=True): return self.backend.db.fetch(stmt) + # Delete! + + def delete(self, deleted_by): + """ + Deletes the list + """ + self.deleted_at = sqlmodel.func.current_timestamp() + self.deleted_by = deleted_by + + log.info(_("List '%s' has been deleted") % self) + # Update! def update(self): diff --git a/src/scripts/dnsbl.in b/src/scripts/dnsbl.in index 8a4da1b..1ff769d 100644 --- a/src/scripts/dnsbl.in +++ b/src/scripts/dnsbl.in @@ -66,6 +66,13 @@ class CLI(object): help=_("The license of the list")) create.set_defaults(func=self.__create) + # delete + delete = subparsers.add_parser("delete", help=_("Delete a list")) + delete.add_argument("list", help=_("The name of the list")) + delete.add_argument("--deleted-by", required=True, + default=os.environ.get("USER"), help=_("The person deleting the list")) + delete.set_defaults(func=self.__delete) + # show show = subparsers.add_parser("show", help=_("Shows details about a list")) show.add_argument("list", help=_("The name of the list")) @@ -162,6 +169,17 @@ class CLI(object): license = args.license, ) + def __delete(self, backend, args): + """ + Deletes a list + """ + list = backend.lists.get_by_slug(args.list) + + # Delete! + list.delete( + deleted_by = args.deleted_by, + ) + def __show(self, backend, args): """ Shows information about a list