Skip to content

Commit a2eb015

Browse files
committed
Refactor security scan task and update auto-approval logic name
1 parent 1938c9e commit a2eb015

File tree

4 files changed

+12
-12
lines changed

4 files changed

+12
-12
lines changed

qgis-app/plugins/api.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
from plugins.models import *
1717
from plugins.validator import validator
1818
from plugins.views import plugin_notify, send_upload_confirmation_email
19+
from plugins.tasks.run_security_scan import run_security_scan_task
1920
from rpc4django import rpcmethod
2021
from taggit.models import Tag
2122

@@ -141,7 +142,6 @@ def plugin_upload(package, **kwargs):
141142
send_upload_confirmation_email(new_version)
142143

143144
# Queue async security scan task
144-
from plugins.tasks.run_security_scan import run_security_scan_task
145145
run_security_scan_task.delay(new_version.pk)
146146
except IntegrityError as e:
147147
# Avoids error: current transaction is aborted, commands ignored until

qgis-app/plugins/models.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -985,6 +985,7 @@ def is_available(self):
985985
(not blocked by security checks).
986986
"""
987987
return self.validation_status not in [
988+
VALIDATION_STATUS_PENDING,
988989
VALIDATION_STATUS_VALIDATING,
989990
VALIDATION_STATUS_BLOCKED,
990991
]

qgis-app/plugins/tasks/run_security_scan.py

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ def run_security_scan_task(self, plugin_version_pk, is_manual=False):
7171
)
7272
if not is_manual:
7373
plugin_version.validation_status = VALIDATION_STATUS_VALIDATED
74-
_maybe_auto_approve(plugin_version)
74+
_auto_approve_if_trusted(plugin_version)
7575
plugin_version.save()
7676
_send_validation_results_email(plugin_version, security_scan=None)
7777
if not plugin_version.approved:
@@ -97,7 +97,7 @@ def run_security_scan_task(self, plugin_version_pk, is_manual=False):
9797
)
9898
else:
9999
plugin_version.validation_status = VALIDATION_STATUS_VALIDATED
100-
_maybe_auto_approve(plugin_version)
100+
_auto_approve_if_trusted(plugin_version)
101101
logger.info(
102102
f"Plugin {plugin.package_name} v{plugin_version.version} validated successfully"
103103
)
@@ -115,7 +115,7 @@ def run_security_scan_task(self, plugin_version_pk, is_manual=False):
115115
_notify_staff_for_review(plugin_version)
116116

117117

118-
def _maybe_auto_approve(plugin_version):
118+
def _auto_approve_if_trusted(plugin_version):
119119
"""
120120
Auto-approve the version if the uploader is trusted or the plugin
121121
already has at least one approved version.
@@ -205,7 +205,7 @@ def _send_validation_results_email(plugin_version, security_scan):
205205
"""
206206

207207
try:
208-
send_mail(subject, message, mail_from, recipients, fail_silently=True)
208+
send_mail(subject, message, mail_from, recipients)
209209
logger.info(
210210
f"Validation results email sent for {plugin.package_name} v{plugin_version.version} "
211211
f"to {recipients}"
@@ -271,8 +271,7 @@ def _notify_staff_for_review(plugin_version):
271271
Link: http://{domain}{plugin_version.get_absolute_url()}
272272
""",
273273
mail_from,
274-
recipients,
275-
fail_silently=True,
274+
recipients
276275
)
277276
except Exception as e:
278277
logger.error(f"Failed to send staff review notification: {e}")

qgis-app/plugins/tests/test_security_validator.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
VALIDATION_STATUS_VALIDATING,
3131
)
3232
from plugins.tasks.run_security_scan import (
33-
_maybe_auto_approve,
33+
_auto_approve_if_trusted,
3434
_send_validation_results_email,
3535
run_security_scan_task,
3636
)
@@ -223,7 +223,7 @@ def test_task_scan_tool_failure_treated_as_validated(self, mock_scan):
223223
# ---------------------------------------------------------------------------
224224

225225
class MaybeAutoApproveTest(TestCase):
226-
"""Tests for the _maybe_auto_approve helper."""
226+
"""Tests for the _auto_approve_if_trusted helper."""
227227

228228
def setUp(self):
229229
self.user = User.objects.create_user(
@@ -239,7 +239,7 @@ def test_auto_approve_for_trusted_user(self):
239239
self.user = User.objects.get(pk=self.user.pk)
240240
self.version.created_by = self.user
241241

242-
_maybe_auto_approve(self.version)
242+
_auto_approve_if_trusted(self.version)
243243

244244
self.assertTrue(self.version.approved)
245245

@@ -260,13 +260,13 @@ def test_auto_approve_when_plugin_already_approved(self):
260260
# Plugin.approved returns True when any version is approved
261261
self.assertTrue(self.plugin.approved)
262262

263-
_maybe_auto_approve(self.version)
263+
_auto_approve_if_trusted(self.version)
264264

265265
self.assertTrue(self.version.approved)
266266

267267
def test_no_auto_approve_for_untrusted_user(self):
268268
"""Regular users without 'can_approve' are NOT auto-approved."""
269-
_maybe_auto_approve(self.version)
269+
_auto_approve_if_trusted(self.version)
270270
self.assertFalse(self.version.approved)
271271

272272

0 commit comments

Comments
 (0)