]> git.ipfire.org Git - dbl.git/commitdiff
dnsbl: Add a command to delete a list
authorMichael Tremer <michael.tremer@ipfire.org>
Sat, 6 Dec 2025 17:56:12 +0000 (17:56 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Sat, 6 Dec 2025 17:56:12 +0000 (17:56 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/dnsbl/lists.py
src/scripts/dnsbl.in

index 147eb402df8088b0a68e3d96b1bf0d88a0cb910d..21b4a2e86b0d429c8f1ef3c046f38068459b2332 100644 (file)
 ###############################################################################
 
 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):
index 8a4da1bb32c89953d03511845f66884fce187eaa..1ff769d101b04d093e28f9c3555949f7cb616431 100644 (file)
@@ -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