(request: HttpRequest, queue_index: int)
| 114 | @never_cache |
| 115 | @staff_member_required |
| 116 | def failed_jobs(request: HttpRequest, queue_index: int) -> HttpResponse: |
| 117 | queue = get_queue_by_index(queue_index) |
| 118 | |
| 119 | registry = FailedJobRegistry(queue.name, queue.connection) |
| 120 | |
| 121 | items_per_page = 100 |
| 122 | num_jobs = len(registry) |
| 123 | page = int(request.GET.get('page', 1)) |
| 124 | |
| 125 | if request.GET.get('desc', '1') == '1': |
| 126 | sort_direction = 'descending' |
| 127 | else: |
| 128 | sort_direction = 'ascending' |
| 129 | |
| 130 | jobs = [] |
| 131 | |
| 132 | if num_jobs > 0: |
| 133 | last_page = int(ceil(num_jobs / items_per_page)) |
| 134 | page_range = list(range(1, last_page + 1)) |
| 135 | offset = items_per_page * (page - 1) |
| 136 | job_ids = registry.get_job_ids(offset, offset + items_per_page - 1, desc=sort_direction == 'descending') |
| 137 | jobs = get_jobs(queue, job_ids, registry) |
| 138 | |
| 139 | else: |
| 140 | page_range = [] |
| 141 | |
| 142 | context_data = { |
| 143 | **each_context(request), |
| 144 | 'queue': queue, |
| 145 | 'queue_index': queue_index, |
| 146 | 'jobs': jobs, |
| 147 | 'num_jobs': num_jobs, |
| 148 | 'page': page, |
| 149 | 'page_range': page_range, |
| 150 | 'sort_direction': sort_direction, |
| 151 | } |
| 152 | return render(request, 'django_rq/failed_jobs.html', context_data) |
| 153 | |
| 154 | |
| 155 | @never_cache |
nothing calls this directly
no test coverage detected
searching dependent graphs…