view mergeclient.py @ 91:607694092e2e

Extend CheckView to behave more like the actual merge. Now the merged file is also written to a temporary file in order to make sure the merge object actually reads all the contents of the input file. As it turns out, some contents of the input file are only read on demand and simply appending the file to the merge does not trigger this. Part of mpuls/issue5709
author Bernhard Herzog <bh@intevation.de>
date Thu, 26 May 2016 21:21:18 +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)