Source code for uw.local.print_.webui.requisition

"""Requisition-related URL handlers.

URL handlers for listing requisitions and viewing individual requisitions.
"""

from operator import attrgetter

from ll.xist.ns import html

from uw.web.html.format import make_table_format, format_datetime, format_return

from uw.web.wsgi.delegate import delegate_get_post
from uw.web.wsgi.function import return_html, return_pdf

[docs]def format_requisitions (requisitions): """Format some requisitions as an HTML table. :param requisitions: an iterable of requisition information. Generates an HTML table with columns for the ID, title, link to PDF, when it arrived, and the related job if any. """ return make_table_format ( ('Requisition', lambda r: html.a ('R%06d' % r.requisition_num, href="R%06d/" % r.requisition_num)), ('Title', attrgetter ('requisition_title')), ('PDF Size', lambda r: html.a (r.requisition_bytes, href="R%06d/pdf" % r.requisition_num)), ('Arrived', lambda r: format_datetime (r.requisition_arrived)), ('Job ID', lambda r: None if r.job_id is None else html.a ('%d' % r.job_id, href="../job/%d/" % r.job_id)), ) (requisitions)
@delegate_get_post @return_html def requisition_index (cursor): """Requisition index URL handler. Displays a list of all requisitions in the system. """ result = [format_return ('Main Menu')] requisitions = cursor.all_requisitions () result.append (format_requisitions (requisitions)) return 'Requisition Index', result @delegate_get_post @return_html def requisition_view (cursor, requisition): """Requisition view URL handler. Displays information about the in-context requisition, including a link to the related job if any. """ result = [format_return ('Main Menu', 'Requisitions')] result.append (html.p ('Arrived: ', format_datetime (requisition.requisition_arrived))) result.append (html.p ('Download PDF: ', html.a ('%d bytes' % requisition.requisition_bytes, href="pdf"))) if requisition.job_id is None: result.append (html.p ('This requisition is not associated with a job.')) else: result.append (html.p ('This requisition is associated with ', html.a ('Job %d' % requisition.job_id, href="../../job/%d/" % requisition.job_id), '.')) return 'Requisition R%06d: %s' % (requisition.requisition_num, requisition.requisition_title), result @return_pdf def requisition_pdf (cursor, requisition): """Requisition PDF download URL handler. Serves the saved PDF requisition document of the in-context requisition to the client. """ pdf = cursor.execute_optional_value ("select requisition_pdf from nms_requisition_received where requisition_num = %(requisition_num)s", requisition_num=requisition.requisition_num) if pdf is None: raise status.HTTPNotFound () return (pdf, "newmediareq_R%06d.pdf" % requisition.requisition_num)