HTML Escaped error messages for better security, fixed bug related to callable only task

This commit is contained in:
Oracle 2025-04-17 10:34:46 +02:00
parent 21dc3f034e
commit 155dac5fe8
3 changed files with 4 additions and 3 deletions

View File

@ -14,11 +14,12 @@ class BaseModelAdmin( admin.ModelAdmin ):
if request.user.is_superuser: if request.user.is_superuser:
traceback_message = ''.join(traceback.TracebackException.from_exception(e).format()) traceback_message = ''.join(traceback.TracebackException.from_exception(e).format())
self.message_user( request, mark_safe(f""" self.message_user( request, mark_safe(f"""
Error For <b>{id}</b>: {e} Error For <b>{id}</b>:
<style> <style>
pre.tb {{display: none;}} pre.tb {{display: none;}}
a.tb:focus + pre.tb {{display: block;}} a.tb:focus + pre.tb {{display: block;}}
</style> </style>
<pre>{escape(e)}</pre>
<a class='tb' href='#'>[TraceBack]</a> <a class='tb' href='#'>[TraceBack]</a>
<pre class='tb'>{escape(traceback_message)}</pre> <pre class='tb'>{escape(traceback_message)}</pre>
"""), messages.ERROR """), messages.ERROR

View File

@ -155,7 +155,7 @@ class Trace( BaseModel ):
assert self.status in "SAE", f"Cannot reschedule a task that is in {self.get_status_display()} state!" assert self.status in "SAE", f"Cannot reschedule a task that is in {self.get_status_display()} state!"
await self.eval_related('task') await self.eval_related('task')
assert self.task.interval, "This is not a periodic task! Nothing to reschedule." assert self.task.interval or target_datetime, "This is not a periodic task! Nothing to reschedule."
self.set_status( "S", reason ) self.set_status( "S", reason )
if target_datetime: if target_datetime:

View File

@ -362,7 +362,7 @@ class AsyncronWorker:
from .models import Task, Trace from .models import Task, Trace
#start services that aren't running yet. #start services that aren't running yet.
Ts = Task.objects.filter( interval = None ).exclude( Ts = Task.objects.filter( interval = None, timeout = None ).exclude(
trace__status__in = "WR" trace__status__in = "WR"
).exclude( worker_type = "D" if self.model.is_robust else "R" ) ).exclude( worker_type = "D" if self.model.is_robust else "R" )