view mergeclient.py @ 94:2ef34abbad8d 1.5

Use http error code 422 in CheckView when a merge is not possible. Previously the response used the code 500 in this case. This is not useful because it's not an internal server error when the check whether a PDF file can be merged fails because that's the point of the CheckView. The code used now means "Unprocessable Entity" and fits better. Part of mpuls/issue6009
author Bernhard Herzog <bh@intevation.de>
date Fri, 28 Apr 2017 20:56:22 +0200
parents 4645e50539ff
children 349d49bb69f4
line wrap: on
line source
#!/usr/bin/env python
# -*- coding: utf-8 -*-

import optparse
import sys

import requests


def main():
    usage = "usage: %prog [options] file1 file2 [ file3, ...]"
    parser = optparse.OptionParser(usage=usage)
    parser.add_option("-s", "--host", default="localhost")
    parser.add_option("-p", "--port", default="5000")
    parser.add_option("-o", "--out", default="merged.pdf", dest="out")
    parser.add_option("-i", "--ignore-file-errors", action="store_true",
                      default=False, dest="ignorefileerrors")
    parser.add_option("-m", "--multi", action="store_true",
                      default=False, dest="multi")
    (options, args) = parser.parse_args()

    if len(args) < 2:
        parser.print_usage()
        sys.exit(1)

    service = "merge"
    url = "http://%s:%s/%s/" % (options.host, options.port, service)

    if options.ignorefileerrors:
        url += "?ignore_file_errors=1"

    files = []

    if options.multi:
        for i, filename in enumerate(args):
            files.append(("file%s" % i, open(filename, 'rb')))
    else:
        for filename in args:
            files.append(('files', open(filename, 'rb')))

    r = requests.post(url, files=files)

    if r.status_code == 200:
        with open(options.out, "wb") as f:
            f.write(r.content)
        print "OK"
    else:
        print "An error has occured"
        print r.status_code, r.headers
        print r.text
        sys.exit(2)

if __name__ == "__main__":
    main()
This site is hosted by Intevation GmbH (Datenschutzerklärung und Impressum | Privacy Policy and Imprint)