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
-
- -
-
-
-
- | Started at |
- Job Function |
- Traceback |
-
-
-
- {% for job in results %}
-
- | {{ job|lookup:started_at }} |
- {{ job|lookup:func_name }} |
- {{ job|lookup:traceback }} |
-
- {% endfor %}
-
-
-
- -
+
+ Empty Queue
+
- {{ the_div|safe }}
-
-
-
-
+
+
+
+
+ | ID |
+ Started at |
+
+
+
+ {% for job in resultslist %}
+
+ | {{ job|lookup:'id' }} |
+ {{ job|lookup:'started_at' }} |
+ {{ job|lookuplong:'traceback1' }} |
+
+ {% endfor %}
+
+
+
{% 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'):