Ejemplo n.º 1
0
def main():
    logging.basicConfig()

    parser = argparse.ArgumentParser(
        description="Convertir XML Geo-Trafic en format Open511")
    parser.add_argument('fichier',
                        metavar='FICHIER_XML',
                        type=str,
                        help="Nom du fichier contenant l'XML Geo-Trafic")
    parser.add_argument('-f',
                        '--format',
                        choices=('xml', 'json'),
                        default='xml',
                        help='Format du resultat')
    parser.add_argument('--postgres-dsn',
                        default=os.environ.get('POSTGRES_DSN',
                                               'dbname=open511 user=postgres'))
    args = parser.parse_args()

    import psycopg2
    db_conn = psycopg2.connect(args.postgres_dsn)

    with open(args.fichier, encoding='utf8') as f:
        data = f.read()
    result = geotrafic_to_xml(data, db_conn)
    if args.format == 'json':
        result = json.dumps(xml_to_json(result), indent=4)
    else:
        result = etree.tostring(result, encoding='unicode', pretty_print=True)
    sys.stdout.write(result)
Ejemplo n.º 2
0
def ensure_format(doc, format):
    """
    Ensures that the provided document is an lxml Element or json dict.
    """
    assert format in ('xml', 'json')
    if getattr(doc, 'tag', None) == 'open511':
        if format == 'json':
            return xml_to_json(doc)
    elif isinstance(doc, dict) and 'meta' in doc:
        if format == 'xml':
            return json_doc_to_xml(doc)
    else:
        raise ValueError("Unrecognized input document")
    return doc
Ejemplo n.º 3
0
def ensure_format(doc, format):
    """
    Ensures that the provided document is an lxml Element or json dict.
    """
    assert format in ('xml', 'json')
    if getattr(doc, 'tag', None) == 'open511':
        if format == 'json':
            return xml_to_json(doc)
    elif isinstance(doc, dict) and 'meta' in doc:
        if format == 'xml':
            return json_doc_to_xml(doc)
    else:
        raise ValueError("Unrecognized input document")
    return doc
Ejemplo n.º 4
0
    def test_outputs(self):
        db_conn = self._get_db_conn()
        my_dir = os.path.dirname(os.path.realpath(__file__))
        fixtures_dir = os.path.join(my_dir, 'fixtures')
        input_files = glob.glob(fixtures_dir + '/*.input.xml')
        self.assertGreater(len(input_files), 3)
        for input_file in input_files:
            print("Processing file %s" % os.path.basename(input_file))
            with open(input_file) as f:
                input_data = f.read()
            xml = converter.geotrafic_to_xml(input_data, db_conn)
            json_result = xml_to_json(xml)
            json_result = json.loads(json.dumps(json_result))  # normalize it

            output_fixture = input_file.replace('.input.xml', '.output.json')
            with open(output_fixture) as f:
                valid_json = json.load(f)
            self.assertEqual(json_result, valid_json)
Ejemplo n.º 5
0
    def test_outputs(self):
        db_conn = self._get_db_conn()
        my_dir = os.path.dirname(os.path.realpath(__file__))
        fixtures_dir = os.path.join(my_dir, 'fixtures')
        input_files = glob.glob(fixtures_dir + '/*.input.xml')
        self.assertGreater(len(input_files), 3)
        for input_file in input_files:
            print("Processing file %s" % os.path.basename(input_file))
            with open(input_file) as f:
                input_data = f.read()
            xml = converter.geotrafic_to_xml(input_data, db_conn)
            json_result = xml_to_json(xml)
            json_result = json.loads(json.dumps(json_result)) # normalize it

            output_fixture = input_file.replace('.input.xml', '.output.json')
            with open(output_fixture) as f:
                valid_json = json.load(f)
            self.assertEqual(json_result, valid_json)
Ejemplo n.º 6
0
def main():
    logging.basicConfig()

    parser = argparse.ArgumentParser(description="Convertir XML Geo-Trafic en format Open511")
    parser.add_argument('fichier', metavar='FICHIER_XML',
        type=str, help="Nom du fichier contenant l'XML Geo-Trafic")
    parser.add_argument('-f', '--format', choices=('xml', 'json'), default='xml',
        help='Format du resultat')
    parser.add_argument('--postgres-dsn',
        default=os.environ.get('POSTGRES_DSN', 'dbname=open511 user=postgres'))
    args = parser.parse_args()

    import psycopg2
    db_conn = psycopg2.connect(args.postgres_dsn)

    with open(args.fichier, encoding='utf8') as f:
        data = f.read()
    result = geotrafic_to_xml(data, db_conn)
    if args.format == 'json':
        result = json.dumps(xml_to_json(result), indent=4)
    else:
        result = etree.tostring(result, encoding='unicode', pretty_print=True)
    sys.stdout.write(result)