Skip to content

Commit e48852c

Browse files
committed
fix cleaner
1 parent 6134535 commit e48852c

File tree

1 file changed

+66
-67
lines changed

1 file changed

+66
-67
lines changed

lib/cuckoo/core/database.py

+66-67
Original file line numberDiff line numberDiff line change
@@ -415,7 +415,7 @@ class Task(Base):
415415
# Task tags
416416
tags_tasks = Column(String(256), nullable=True)
417417
# Virtual machine tags
418-
tags = relationship("Tag", secondary=tasks_tags, backref=backref("tasks"), lazy="subquery")
418+
tags = relationship("Tag", secondary=tasks_tags, backref=backref("tasks"), lazy="subquery", cascade="save-update, delete")
419419
options = Column(Text(), nullable=True)
420420
platform = Column(String(255), nullable=True)
421421
memory = Column(Boolean, nullable=False, default=False)
@@ -465,7 +465,7 @@ class Task(Base):
465465
timedout = Column(Boolean, nullable=False, default=False)
466466

467467
sample_id = Column(Integer, ForeignKey("samples.id"), nullable=True)
468-
sample = relationship("Sample", backref=backref("tasks", lazy="subquery"))
468+
sample = relationship("Sample", backref=backref("tasks", lazy="subquery", cascade="save-update, delete"))
469469
machine_id = Column(Integer, nullable=True)
470470
guest = relationship("Guest", uselist=False, backref=backref("tasks"), cascade="save-update, delete")
471471
errors = relationship("Error", backref=backref("tasks"), cascade="save-update, delete")
@@ -2150,72 +2150,71 @@ def delete_tasks(
21502150
bool: True if the operation was successful (including no tasks to delete), False otherwise.
21512151
"""
21522152
filters_applied = False
2153-
with self.session.begin_nested():
2154-
search = self.session.query(Task)
2155-
2156-
if status:
2157-
if "|" in status:
2158-
search = search.filter(Task.status.in_(status.split("|")))
2159-
else:
2160-
search = search.filter(Task.status == status)
2161-
filters_applied = True
2162-
if not_status:
2163-
search = search.filter(Task.status != not_status)
2164-
filters_applied = True
2165-
if category:
2166-
search = search.filter(Task.category.in_([category] if isinstance(category, str) else category))
2167-
filters_applied = True
2168-
if sample_id is not None:
2169-
search = search.filter(Task.sample_id == sample_id)
2170-
filters_applied = True
2171-
if id_before is not None:
2172-
search = search.filter(Task.id < id_before)
2173-
filters_applied = True
2174-
if id_after is not None:
2175-
search = search.filter(Task.id > id_after)
2176-
filters_applied = True
2177-
if completed_after:
2178-
search = search.filter(Task.completed_on > completed_after)
2179-
filters_applied = True
2180-
if added_before:
2181-
search = search.filter(Task.added_on < added_before)
2182-
filters_applied = True
2183-
if options_like:
2184-
# Replace '*' wildcards with wildcard for sql
2185-
options_like = options_like.replace("*", "%")
2186-
search = search.filter(Task.options.like(f"%{options_like}%"))
2187-
filters_applied = True
2188-
if options_not_like:
2189-
# Replace '*' wildcards with wildcard for sql
2190-
options_not_like = options_not_like.replace("*", "%")
2191-
search = search.filter(Task.options.notlike(f"%{options_not_like}%"))
2192-
filters_applied = True
2193-
if tags_tasks_like:
2194-
search = search.filter(Task.tags_tasks.like(f"%{tags_tasks_like}%"))
2195-
filters_applied = True
2196-
if task_ids:
2197-
search = search.filter(Task.id.in_(task_ids))
2198-
filters_applied = True
2199-
if user_id is not None:
2200-
search = search.filter(Task.user_id == user_id)
2201-
filters_applied = True
2202-
2203-
if not filters_applied:
2204-
log.warning("No filters provided for delete_tasks. No tasks will be deleted.")
2205-
return True # Indicate success as no deletion was requested/needed
2153+
search = self.session.query(Task)
22062154

2207-
try:
2208-
# Perform the deletion and get the count of deleted rows
2209-
deleted_count = search.delete(synchronize_session=False)
2210-
log.info("Deleted %d tasks matching the criteria.", deleted_count)
2211-
# The commit is handled by the calling context (e.g., `with db.session.begin():`)
2212-
return True
2213-
except Exception as e:
2214-
log.error("Error deleting tasks: %s", str(e))
2215-
# Rollback might be needed if this function is called outside a `with db.session.begin():`
2216-
# but typically it should be called within one.
2217-
self.session.rollback()
2218-
return False
2155+
if status:
2156+
if "|" in status:
2157+
search = search.filter(Task.status.in_(status.split("|")))
2158+
else:
2159+
search = search.filter(Task.status == status)
2160+
filters_applied = True
2161+
if not_status:
2162+
search = search.filter(Task.status != not_status)
2163+
filters_applied = True
2164+
if category:
2165+
search = search.filter(Task.category.in_([category] if isinstance(category, str) else category))
2166+
filters_applied = True
2167+
if sample_id is not None:
2168+
search = search.filter(Task.sample_id == sample_id)
2169+
filters_applied = True
2170+
if id_before is not None:
2171+
search = search.filter(Task.id < id_before)
2172+
filters_applied = True
2173+
if id_after is not None:
2174+
search = search.filter(Task.id > id_after)
2175+
filters_applied = True
2176+
if completed_after:
2177+
search = search.filter(Task.completed_on > completed_after)
2178+
filters_applied = True
2179+
if added_before:
2180+
search = search.filter(Task.added_on < added_before)
2181+
filters_applied = True
2182+
if options_like:
2183+
# Replace '*' wildcards with wildcard for sql
2184+
options_like = options_like.replace("*", "%")
2185+
search = search.filter(Task.options.like(f"%{options_like}%"))
2186+
filters_applied = True
2187+
if options_not_like:
2188+
# Replace '*' wildcards with wildcard for sql
2189+
options_not_like = options_not_like.replace("*", "%")
2190+
search = search.filter(Task.options.notlike(f"%{options_not_like}%"))
2191+
filters_applied = True
2192+
if tags_tasks_like:
2193+
search = search.filter(Task.tags_tasks.like(f"%{tags_tasks_like}%"))
2194+
filters_applied = True
2195+
if task_ids:
2196+
search = search.filter(Task.id.in_(task_ids))
2197+
filters_applied = True
2198+
if user_id is not None:
2199+
search = search.filter(Task.user_id == user_id)
2200+
filters_applied = True
2201+
2202+
if not filters_applied:
2203+
log.warning("No filters provided for delete_tasks. No tasks will be deleted.")
2204+
return True # Indicate success as no deletion was requested/needed
2205+
2206+
try:
2207+
# Perform the deletion and get the count of deleted rows
2208+
deleted_count = search.delete(synchronize_session=False)
2209+
log.info("Deleted %d tasks matching the criteria.", deleted_count)
2210+
self.session.commit()
2211+
return True
2212+
except Exception as e:
2213+
log.error("Error deleting tasks: %s", str(e))
2214+
# Rollback might be needed if this function is called outside a `with db.session.begin():`
2215+
# but typically it should be called within one.
2216+
self.session.rollback()
2217+
return False
22192218

22202219

22212220
def check_tasks_timeout(self, timeout):

0 commit comments

Comments
 (0)