(request: HttpRequest, queue_index: int)
| 155 | @never_cache |
| 156 | @staff_member_required |
| 157 | def scheduled_jobs(request: HttpRequest, queue_index: int) -> HttpResponse: |
| 158 | queue = get_queue_by_index(queue_index) |
| 159 | |
| 160 | registry = ScheduledJobRegistry(queue.name, queue.connection) |
| 161 | |
| 162 | items_per_page = 100 |
| 163 | num_jobs = len(registry) |
| 164 | page = int(request.GET.get('page', 1)) |
| 165 | jobs = [] |
| 166 | |
| 167 | if request.GET.get('desc', '1') == '1': |
| 168 | sort_direction = 'descending' |
| 169 | else: |
| 170 | sort_direction = 'ascending' |
| 171 | |
| 172 | if num_jobs > 0: |
| 173 | last_page = int(ceil(num_jobs / items_per_page)) |
| 174 | page_range = list(range(1, last_page + 1)) |
| 175 | offset = items_per_page * (page - 1) |
| 176 | job_ids = registry.get_job_ids(offset, offset + items_per_page - 1, desc=sort_direction == 'descending') |
| 177 | jobs = get_jobs(queue, job_ids, registry) |
| 178 | for job in jobs: |
| 179 | job.scheduled_at = registry.get_scheduled_time(job) # type: ignore[attr-defined] |
| 180 | else: |
| 181 | page_range = [] |
| 182 | |
| 183 | context_data = { |
| 184 | **each_context(request), |
| 185 | 'queue': queue, |
| 186 | 'queue_index': queue_index, |
| 187 | 'jobs': jobs, |
| 188 | 'num_jobs': num_jobs, |
| 189 | 'page': page, |
| 190 | 'page_range': page_range, |
| 191 | 'sort_direction': sort_direction, |
| 192 | } |
| 193 | return render(request, 'django_rq/scheduled_jobs.html', context_data) |
| 194 | |
| 195 | |
| 196 | @never_cache |
nothing calls this directly
no test coverage detected
searching dependent graphs…