refactor(campaigns): remove dead future-start_date scheduling code
Now that only the manager sets start_date, and only at the moment of approval (which immediately activates the campaign), a draft campaign can never have a start_date. This made three things permanently unreachable: the hourly _run_scheduled_campaign_activation cron job, the activate_campaign 409/force future-date guard, and a query filter hiding tests from scheduled-but-inactive draft campaigns. Removes all three rather than leaving dead code behind. Also adds the missing manager-cannot-directly-activate router test.
This commit is contained in:
@@ -22,7 +22,7 @@ from app.models.enums import TestState
|
||||
from app.models.technique import Technique
|
||||
from app.models.test import Test
|
||||
from app.models.test_template import TestTemplate
|
||||
from app.models.campaign import Campaign, CampaignTest
|
||||
from app.models.campaign import CampaignTest
|
||||
from app.models.audit import AuditLog
|
||||
from app.utils import escape_like
|
||||
|
||||
@@ -89,22 +89,6 @@ def list_tests(
|
||||
linked = db.query(CampaignTest.test_id).distinct().subquery()
|
||||
query = query.filter(~Test.id.in_(linked))
|
||||
|
||||
# Always hide tests from scheduled campaigns that haven't started yet.
|
||||
# A "scheduled-but-not-yet-active" campaign = draft status + start_date in future.
|
||||
now = datetime.utcnow()
|
||||
future_draft_tests = (
|
||||
db.query(CampaignTest.test_id)
|
||||
.join(Campaign, Campaign.id == CampaignTest.campaign_id)
|
||||
.filter(
|
||||
Campaign.status == "draft",
|
||||
Campaign.start_date.isnot(None),
|
||||
Campaign.start_date > now,
|
||||
)
|
||||
.distinct()
|
||||
.subquery()
|
||||
)
|
||||
query = query.filter(~Test.id.in_(future_draft_tests))
|
||||
|
||||
# Return query.order_by(Test.created_at.desc()).offset(offset).limit(limit)....
|
||||
return query.order_by(Test.created_at.desc()).offset(offset).limit(limit).all()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user