def item_list(req, pager, **kwargs): keys = list("%s %s %%s" % (k, 'in' if islistable(v) else '=') for k, v in kwargs.items()) cond = "WHERE " + ' AND '.join(keys) if keys else '' tran = req.db.transaction(req.log_info) c = tran.cursor() c.execute(""" SELECT path, timestamp, singleton, pid, j.login_id, email, j.data FROM jobs j LEFT JOIN logins l ON (l.login_id = j.login_id) %s ORDER BY %s LIMIT %%d, %%d """ % (cond, pager.order), tuple(kwargs.values()) + (pager.offset, pager.limit)) items = [] for row in iter(c.fetchone, None): item = Job('') item.path, timestamp, item.singleton, item.pid, item.login_id, \ item.email, data = row item.timestamp = datetime.fromtimestamp(timestamp) item.data = json.loads(data) items.append(item) c.execute("SELECT count(*) FROM jobs %s" % cond, kwargs.values()) pager.total, = c.fetchone() tran.commit() return items
def admin_pages_del(req, pid): check_login(req, '/log_in?referer=/admin/jopbs') check_right(req, 'super') check_referer(req, '/admin/jobs') job = Job(pid=pid) job.delete(req) redirect(req, '/admin/jobs')
def admin_attachments_images_thumb_check(req): check_login(req) match_right(req, [R_ADMIN, 'attachments_modify']) check_referer(req, '/admin/attachments') job = Job(path=req.uri) req.content_type = 'application/json' if job.get(req): req.status = state.HTTP_CREATED return json.dumps(job.data) return '{}' # job not found, so it could be run again
def admin_jobs(req): check_login(req) check_right(req, 'super') pager = Pager() pager.bind(req.args) rows = Job.list(req, pager) return generate_page(req, "admin/jobs.html", pager=pager, rows=rows)