예제 #1
0
파일: api.py 프로젝트: jcioi/ioi-print
def contestant():
    temp_directory = create_temp_directory()
    original_pdf_path = os.path.join(temp_directory, 'original.pdf')
    request.files['pdf'].save(original_pdf_path)

    contestant_data = get_contestant_data(_real_ip())
    contestant_id = (contestant_data['contestant'] or {}).get('id', '')
    desk_zone = (contestant_data['desk'] or {}).get('zone')

    print_id = generate_print_id()
    hostname = platform.uname().node

    final_pdf_path = modifier.make_contestant_pdf(
        pdf_file_path=original_pdf_path,
        contestant=contestant_data['contestant'],
        desk=contestant_data['desk'],
        print_id=print_id,
        temp_directory=temp_directory,
    )

    job_name = 'contestant:%s:%s' % (contestant_id, print_id)
    metric_name = 'contestant:%s' % (contestant_id)
    print_file(file_path=final_pdf_path,
               printer=settings.printer_for_contestant(desk_zone),
               job_name=job_name,
               metric_name=metric_name)
    return "Queued as %s on %s" % (print_id, hostname)
예제 #2
0
파일: api.py 프로젝트: jcioi/ioi-print
def mass():
    temp_directory = create_temp_directory()
    original_pdf_path = os.path.join(temp_directory, 'original.pdf')
    request.files['pdf'].save(original_pdf_path)

    printer = request.form.get('printer', settings.printer_for_mass())
    count = int(request.form['count'])
    for _ in range(count):
        print_file(original_pdf_path, printer, 'mass')
    return "OK"
예제 #3
0
파일: api.py 프로젝트: icpc-wc/print
def translation():
    filename = request.form['filename']
    country_code = request.form['country_code']
    country_name = request.form['country_name']
    count = int(request.form['count'])
    temp_directory = create_temp_directory()
    final_pdf_path = make_translation_pdf(
        os.path.join(PDF_UPLOAD_PATH, filename),
        country_code,
        country_name,
        temp_directory
    )
    for _ in range(count):
        print_file(final_pdf_path, DEFAULT_PRINTER)
    return "OK"
예제 #4
0
파일: api.py 프로젝트: jcioi/ioi-print
def password():
    req_data = request.get_json()
    title = req_data['title']
    users = req_data['users']

    temp_directory = create_temp_directory()
    pdf_path = modifier.make_password_pdf(
        title=title,
        users=users,
        temp_directory=temp_directory,
    )

    job_name = 'password'
    print_file(pdf_path, settings.printer_for_mass(), job_name)
    return jsonify({'status': 'OK'})
예제 #5
0
파일: api.py 프로젝트: icpc-wc/print
def cms_request():
    request_message = request.form['request_message']
    ip = request.form['ip']
    contestant_data = get_contestant_data(ip)
    temp_directory = create_temp_directory()
    if 'desk_image_url' in contestant_data:
        desk_map_img = download(contestant_data['desk_image_url'],
                                'desk_map.svg', temp_directory)
    else:
        desk_map_img = contestant_data['desk_image_path']
    request_pdf_path = make_cms_request_pdf(
        request_message,
        contestant_data['contestant_id'],
        contestant_data['contestant_name'],
        contestant_data['desk_id'],
        desk_map_img,
        temp_directory
    )
    print_file(request_pdf_path, PRINTER_FOR_ZONE[contestant_data['zone']])
    return "OK"
예제 #6
0
파일: api.py 프로젝트: jcioi/ioi-print
def staff_call():
    req_data = request.get_json()
    message = req_data['message']
    contestant = req_data['contestant']
    contestant_id = req_data['contestant']['id']
    desk = req_data['desk']
    desk_zone = req_data['desk'].get('zone')

    temp_directory = create_temp_directory()
    pdf_path = modifier.make_staff_call_pdf(
        message=message,
        contestant=contestant,
        desk=desk,
        temp_directory=temp_directory,
    )

    job_name = 'staff_call:%s' % contestant_id
    print_file(pdf_path,
               settings.printer_for_contestant(desk_zone),
               job_name,
               job_priority=JOB_PRIORITY_HIGH)
    return jsonify({'status': 'OK'})
예제 #7
0
파일: api.py 프로젝트: icpc-wc/print
def contestant():
    filename = request.form['filename']
    ip = request.form['ip']
    cups_job_id = request.form['cups_job_id']
    contestant_data = get_contestant_data(ip)
    temp_directory = create_temp_directory()
    if 'desk_image_url' in contestant_data:
        desk_map_img = download(contestant_data['desk_image_url'],
                                'desk_map.svg', temp_directory)
    else:
        desk_map_img = contestant_data['desk_image_path']
    final_pdf_path = make_contestant_pdf(
        os.path.join(PDF_UPLOAD_PATH, filename),
        contestant_data['contestant_id'],
        contestant_data['contestant_name'],
        contestant_data['contestant_country'],
        contestant_data['desk_id'],
        desk_map_img,
        cups_job_id,
        temp_directory
    )
    print_file(final_pdf_path, PRINTER_FOR_ZONE[contestant_data['zone']])
    return "OK"
예제 #8
0
파일: api.py 프로젝트: jcioi/ioi-print
def translation():
    temp_directory = create_temp_directory()
    original_pdf_path = os.path.join(temp_directory, 'original.pdf')
    request.files['pdf'].save(original_pdf_path)

    country_code = request.form['country_code']
    country_name = request.form['country_name']
    cover_page = int(request.form['cover_page']) > 0
    count = int(request.form['count'])

    if cover_page:
        final_pdf_path = modifier.make_translation_pdf(original_pdf_path,
                                                       country_code,
                                                       country_name,
                                                       temp_directory)
    else:
        final_pdf_path = original_pdf_path

    job_name = 'translation:%s' % country_code
    for _ in range(count):
        print_file(final_pdf_path, settings.printer_for_translation(),
                   job_name)
    return "OK"