diff --git a/rowers/templates/failed_jobs.html b/rowers/templates/failed_jobs.html index b938757c..1bc330ef 100644 --- a/rowers/templates/failed_jobs.html +++ b/rowers/templates/failed_jobs.html @@ -10,34 +10,29 @@

Failed Que

-
    -
  • - - - - - - - - - - {% for job in results %} - - - - - - {% endfor %} - -
    Started atJob FunctionTraceback
    {{ job|lookup:started_at }}{{ job|lookup:func_name }}{{ job|lookup:traceback }}
    -
  • -
  • +

    + Empty Queue +

    - {{ the_div|safe }} -
  • - - -
+

+ + + + + + + + + {% for job in resultslist %} + + + + + + {% endfor %} + +
IDStarted at
{{ job|lookup:'id' }}{{ job|lookup:'started_at' }}
{{ job|lookuplong:'traceback1' }}
+

{% endblock %} diff --git a/rowers/templatetags/rowerfilters.py b/rowers/templatetags/rowerfilters.py index 820c8a54..f06dabfd 100644 --- a/rowers/templatetags/rowerfilters.py +++ b/rowers/templatetags/rowerfilters.py @@ -262,6 +262,12 @@ def lookup(dict, key): s = s[:22] return s +@register.filter +def lookuplong(dict, key): + s = dict.get(key) + + return s + @register.filter def ualookup(dict, key): s = dict.get(key) diff --git a/rowers/urls.py b/rowers/urls.py index a8296507..1ad43ed7 100644 --- a/rowers/urls.py +++ b/rowers/urls.py @@ -139,6 +139,8 @@ urlpatterns = [ # re_path(r'^imports/$', views.imports_view), re_path(r'^exportallworkouts/?/$',views.workouts_summaries_email_view,name='workouts_summaries_email_view'), path('failedjobs/',views.failed_queue_view,name='failed_queue_view'), + path('failedjobs/empty/',views.failed_queue_empty,name='failed_queue_empty'), + re_path('^failedjobs/(?P\w+.*)/$',views.failed_job_view,name='failed_job_view'), re_path(r'^update_empower/$',views.rower_update_empower_view,name='rower_update_empower_view'), re_path(r'^agegroupcp/(?P\d+)/$',views.agegroupcpview,name='agegroupcpview'), re_path(r'^agegroupcp/(?P\d+)/(?P\d+)/$',views.agegroupcpview,name='agegroupcpview'), diff --git a/rowers/views/otherviews.py b/rowers/views/otherviews.py index dfc7ea6b..1e9572ba 100644 --- a/rowers/views/otherviews.py +++ b/rowers/views/otherviews.py @@ -7,7 +7,7 @@ from rowers.views.statements import * from rq import Queue from redis import Redis - +from rq.job import Job @login_required() def failed_queue_view(request): @@ -16,25 +16,54 @@ def failed_queue_view(request): q = Queue('failed', connection=Redis()) - results = [] + resultslist = [] for job in q.jobs: - traceback = job.exc_info + traceback = str(job.exc_info) + + info = { + 'id':job.id, 'started_at': job.started_at, - 'func_name': job.func_name, - 'traceback': traceback + 'traceback1': traceback, } - results.append(info) + + resultslist += [info] + return render(request, "failed_jobs.html", { - 'results':results, + 'resultslist':resultslist, } ) +@login_required() +def failed_queue_empty(request): + if not request.user.is_staff: + raise PermissionDenied("Not Allowed") + + q = Queue('failed', connection=Redis()) + + q.empty() + + return HttpResponseRedirect(reverse('failed_queue_view')) + + +@login_required() +def failed_job_view(request,id=0): + if not request.user.is_staff: + raise PermissionDenied("Not Allowed") + + q = Queue('failed', connection=Redis()) + thejob = q.fetch_job(id) + + thejob.delete() + + return HttpResponseRedirect(reverse('failed_queue_view')) + + @login_required() def errormessage_view(request,errormessage='aap'): if (errormessage=='3dsecure'):