コード例 #1
0
    def handle(self, *args, **options):

        if len(args) != 2:
            raise CommandError, "You must provide a filename prefix and the Pombola instance URL"

        output_directory, pombola_url = args
        if not (exists(output_directory) and isdir(output_directory)):
            message = "'{0}' was not a directory"
            raise CommandError(message.format(output_directory))
        parsed_url = urlparse.urlparse(pombola_url)
        if not parsed_url.netloc:
            message = "The Pombola URL must begin http:// or https://"
            raise CommandError(message)

        primary_id_scheme = '.'.join(reversed(parsed_url.netloc.split('.')))

        if options['pombola']:
            for inline_memberships, leafname in (
                    (True, 'pombola.json'),
                    (False, 'pombola-no-inline-memberships.json'),
            ):
                popolo_data = get_popolo_data(
                    primary_id_scheme,
                    pombola_url,
                    inline_memberships=inline_memberships
                )
                output_filename = join(output_directory, leafname)
                with open(output_filename, 'w') as f:
                    json.dump(popolo_data, f, indent=4, sort_keys=True)
        else:
            popolo_data = get_popolo_data(
                primary_id_scheme,
                pombola_url,
                inline_memberships=False
            )
            for collection, data in popolo_data.items():
                for mongoexport_format in (True, False):
                    if mongoexport_format:
                        output_basename = 'mongo-' + collection + '.dump'
                    else:
                        output_basename = collection + ".json"
                    output_filename = join(output_directory, output_basename)
                    with open(output_filename, 'w') as f:
                        if mongoexport_format:
                            for item in data:
                                item['_id'] = item['id']
                                json.dump(item, f, sort_keys=True)
                                f.write("\n")
                        else:
                            json.dump(data, f, indent=4, sort_keys=True)
コード例 #2
0
    def test_popolo_place_no_session(self):
        self.position.place = self.place
        self.position.save()
        data = get_popolo_data('org.example',
                               'http://pombola.example.org/',
                               inline_memberships=False)

        membership = data['memberships'][0]
        self.assertTrue(membership['area'])
        area = membership['area']
        self.assertEqual(
            set(area.keys()),
            set(['area_type', 'id', 'identifier', 'name'])
        )
        self.assertEqual(area['area_type'], 'PRV')
        self.assertEqual(area['name'], 'Test Province')
        self.assertEqual(
            area['id'],
            'mapit:{0}'.format(self.mapit_test_province.id)
        )
        self.assertEqual(
            area['identifier'],
            "http://pombola.example.org/mapit/area/{0}".format(
                self.mapit_test_province.id
            )
        )
コード例 #3
0
ファイル: test_popolo.py プロジェクト: ken-muturi/pombola
    def test_popolo_place_no_session(self):
        self.position.place = self.place
        self.position.save()
        data = get_popolo_data('org.example',
                               'http://pombola.example.org/',
                               inline_memberships=False)

        membership = data['memberships'][0]
        self.assertTrue(membership['area'])
        area = membership['area']
        self.assertEqual(
            set(area.keys()),
            set(['area_type', 'id', 'identifier', 'name'])
        )
        self.assertEqual(area['area_type'], 'PRV')
        self.assertEqual(area['name'], 'Test Province')
        self.assertEqual(
            area['id'],
            'mapit:{0}'.format(self.mapit_test_province.id)
        )
        self.assertEqual(
            area['identifier'],
            "http://pombola.example.org/mapit/area/{0}".format(
                self.mapit_test_province.id
            )
        )
コード例 #4
0
ファイル: test_popolo.py プロジェクト: Code4SA/pombola
    def test_popolo_representation_distinct(self):
        data = get_popolo_data("org.example", "http://pombola.example.org/", inline_memberships=False)

        self.rewrite_expected_data()

        self.assertEqual(data["persons"], self.expected_persons)
        self.assertEqual(data["organizations"], self.expected_organizations)
        self.assertEqual(data["memberships"], self.expected_memberships)
コード例 #5
0
    def test_popolo_representation_distinct(self):
        data = get_popolo_data('org.example',
                               'http://pombola.example.org/',
                               inline_memberships=False)

        self.rewrite_expected_data()

        self.assertEqual(data['persons'], self.expected_persons)
        self.assertEqual(data['organizations'], self.expected_organizations)
        self.assertEqual(data['memberships'], self.expected_memberships)
コード例 #6
0
ファイル: test_popolo.py プロジェクト: MikeMuli/pombola
    def test_popolo_representation_distinct(self):
        data = get_popolo_data('org.example',
                               'http://pombola.example.org/',
                               inline_memberships=False)

        self.rewrite_expected_data()

        self.assertEqual(data['persons'], self.expected_persons)
        self.assertEqual(data['organizations'], self.expected_organizations)
        self.assertEqual(data['memberships'], self.expected_memberships)
コード例 #7
0
ファイル: test_popolo.py プロジェクト: ken-muturi/pombola
    def test_popolo_place_with_session(self):
        example_assembly = models.Organisation.objects.create(
            name='Example Assembly',
            slug='example-assembly',
            kind=models.OrganisationKind.objects.create(
                name='Chamber', slug='chamber'
            ),
            started=ApproximateDate(2009),
            ended=ApproximateDate(2011, 3, 20),
        )
        example_session = models.ParliamentarySession.objects.create(
            name='Example Session',
            start_date=date(1970, 7, 1),
            end_date=date(1975, 12, 31),
            mapit_generation=self.generation.id,
            house=example_assembly,
        )
        self.place.parliamentary_session = example_session
        self.place.save()
        self.position.place = self.place
        self.position.save()

        data = get_popolo_data('org.example',
                               'http://pombola.example.org/',
                               inline_memberships=False)

        membership = data['memberships'][0]

        self.assertTrue(membership['area'])
        area = membership['area']
        self.assertEqual(
            set(area.keys()),
            set(['area_type', 'id', 'identifier', 'name', 'session'])
        )
        self.assertEqual(area['area_type'], 'PRV')
        self.assertEqual(area['name'], 'Test Province')
        self.assertEqual(
            area['id'],
            'mapit:{0}'.format(self.mapit_test_province.id)
        )
        self.assertEqual(
            area['identifier'],
            "http://pombola.example.org/mapit/area/{0}".format(
                self.mapit_test_province.id
            )
        )
        self.assertTrue(area['session'])
        session = area['session']
        self.assertEqual(session['start_date'], '1970-07-01')
        self.assertEqual(session['end_date'], '1975-12-31')
        self.assertEqual(session['house_name'], 'Example Assembly')
        self.assertEqual(session['name'], 'Example Session')
        self.assertEqual(session['house_id'], example_assembly.id)
        self.assertEqual(session['id'], example_session.id)
        self.assertEqual(session['mapit_generation'], self.generation.id)
コード例 #8
0
    def test_popolo_place_with_session(self):
        example_assembly = models.Organisation.objects.create(
            name='Example Assembly',
            slug='example-assembly',
            kind=models.OrganisationKind.objects.create(
                name='Chamber', slug='chamber'
            ),
            started=ApproximateDate(2009),
            ended=ApproximateDate(2011, 3, 20),
        )
        example_session = models.ParliamentarySession.objects.create(
            name='Example Session',
            start_date=date(1970, 7, 1),
            end_date=date(1975, 12, 31),
            mapit_generation=self.generation.id,
            house=example_assembly,
        )
        self.place.parliamentary_session = example_session
        self.place.save()
        self.position.place = self.place
        self.position.save()

        data = get_popolo_data('org.example',
                               'http://pombola.example.org/',
                               inline_memberships=False)

        membership = data['memberships'][0]

        self.assertTrue(membership['area'])
        area = membership['area']
        self.assertEqual(
            set(area.keys()),
            set(['area_type', 'id', 'identifier', 'name', 'session'])
        )
        self.assertEqual(area['area_type'], 'PRV')
        self.assertEqual(area['name'], 'Test Province')
        self.assertEqual(
            area['id'],
            'mapit:{0}'.format(self.mapit_test_province.id)
        )
        self.assertEqual(
            area['identifier'],
            "http://pombola.example.org/mapit/area/{0}".format(
                self.mapit_test_province.id
            )
        )
        self.assertTrue(area['session'])
        session = area['session']
        self.assertEqual(session['start_date'], '1970-07-01')
        self.assertEqual(session['end_date'], '1975-12-31')
        self.assertEqual(session['house_name'], 'Example Assembly')
        self.assertEqual(session['name'], 'Example Session')
        self.assertEqual(session['house_id'], example_assembly.id)
        self.assertEqual(session['id'], example_session.id)
        self.assertEqual(session['mapit_generation'], self.generation.id)
コード例 #9
0
ファイル: test_popolo.py プロジェクト: Code4SA/pombola
    def test_popolo_representation_inline(self):
        data = get_popolo_data("org.example", "http://pombola.example.org/", inline_memberships=True)

        self.rewrite_expected_data()

        self.assertEqual(1, len(data["persons"]))
        self.assertEqual(1, len(data["persons"][0]["memberships"]))
        expected_membership = self.expected_memberships[0].copy()
        expected_person = self.expected_persons[0].copy()
        expected_person["memberships"] = [expected_membership]
        self.assertEqual(data["persons"], [expected_person])
        self.assertEqual(data["organizations"], self.expected_organizations)
        self.assertNotIn("memberships", data)
コード例 #10
0
    def test_popolo_representation_inline(self):
        data = get_popolo_data('org.example',
                               'http://pombola.example.org/',
                               inline_memberships=True)

        self.rewrite_expected_data()

        self.assertEqual(1, len(data['persons']))
        self.assertEqual(1, len(data['persons'][0]['memberships']))
        expected_membership = self.expected_memberships[0].copy()
        expected_person = self.expected_persons[0].copy()
        expected_person['memberships'] = [expected_membership]
        self.assertEqual(data['persons'], [expected_person])
        self.assertEqual(data['organizations'], self.expected_organizations)
        self.assertNotIn('memberships', data)
コード例 #11
0
ファイル: test_popolo.py プロジェクト: MikeMuli/pombola
    def test_popolo_representation_inline(self):
        data = get_popolo_data('org.example',
                               'http://pombola.example.org/',
                               inline_memberships=True)

        self.rewrite_expected_data()

        self.assertEqual(1, len(data['persons']))
        self.assertEqual(1, len(data['persons'][0]['memberships']))
        expected_membership = self.expected_memberships[0].copy()
        expected_person = self.expected_persons[0].copy()
        expected_person['memberships'] = [expected_membership]
        self.assertEqual(data['persons'], [expected_person])
        self.assertEqual(data['organizations'], self.expected_organizations)
        self.assertNotIn('memberships', data)
コード例 #12
0
ファイル: test_popolo.py プロジェクト: Code4SA/pombola
    def test_popolo_place_no_session(self):
        self.position.place = self.place
        self.position.save()
        data = get_popolo_data("org.example", "http://pombola.example.org/", inline_memberships=False)

        membership = data["memberships"][0]
        self.assertTrue(membership["area"])
        area = membership["area"]
        self.assertEqual(set(area.keys()), set(["area_type", "id", "identifier", "name"]))
        self.assertEqual(area["area_type"], "PRV")
        self.assertEqual(area["name"], "Test Province")
        self.assertEqual(area["id"], "mapit:{0}".format(self.mapit_test_province.id))
        self.assertEqual(
            area["identifier"], "http://pombola.example.org/mapit/area/{0}".format(self.mapit_test_province.id)
        )
コード例 #13
0
    def handle(self, *args, **options):

        if len(args) != 2:
            raise CommandError, "You must provide a filename prefix and the Pombola instance URL"

        filename_prefix, pombola_url = args
        parsed_url = urlparse.urlparse(pombola_url)

        primary_id_scheme = '.'.join(reversed(parsed_url.netloc.split('.')))

        for collection, data in get_popolo_data(
                primary_id_scheme, pombola_url,
                inline_memberships=False).items():
            output_filename = filename_prefix + '-' + collection + ".json"
            with open(output_filename, 'w') as f:
                json.dump(data, f, indent=4, sort_keys=True)
コード例 #14
0
ファイル: test_popolo.py プロジェクト: Code4SA/pombola
    def test_popolo_place_with_session(self):
        example_assembly = models.Organisation.objects.create(
            name="Example Assembly",
            slug="example-assembly",
            kind=models.OrganisationKind.objects.create(name="Chamber", slug="chamber"),
            started=ApproximateDate(2009),
            ended=ApproximateDate(2011, 3, 20),
        )
        example_session = models.ParliamentarySession.objects.create(
            name="Example Session",
            start_date=date(1970, 7, 1),
            end_date=date(1975, 12, 31),
            mapit_generation=self.generation.id,
            house=example_assembly,
        )
        self.place.parliamentary_session = example_session
        self.place.save()
        self.position.place = self.place
        self.position.save()

        data = get_popolo_data("org.example", "http://pombola.example.org/", inline_memberships=False)

        membership = data["memberships"][0]

        self.assertTrue(membership["area"])
        area = membership["area"]
        self.assertEqual(set(area.keys()), set(["area_type", "id", "identifier", "name", "session"]))
        self.assertEqual(area["area_type"], "PRV")
        self.assertEqual(area["name"], "Test Province")
        self.assertEqual(area["id"], "mapit:{0}".format(self.mapit_test_province.id))
        self.assertEqual(
            area["identifier"], "http://pombola.example.org/mapit/area/{0}".format(self.mapit_test_province.id)
        )
        self.assertTrue(area["session"])
        session = area["session"]
        self.assertEqual(session["start_date"], "1970-07-01")
        self.assertEqual(session["end_date"], "1975-12-31")
        self.assertEqual(session["house_name"], "Example Assembly")
        self.assertEqual(session["name"], "Example Session")
        self.assertEqual(session["house_id"], example_assembly.id)
        self.assertEqual(session["id"], example_session.id)
        self.assertEqual(session["mapit_generation"], self.generation.id)
コード例 #15
0
    def handle(self, *args, **options):

        if len(args) != 2:
            raise CommandError, "You must provide a filename prefix and the Pombola instance URL"

        filename_prefix, pombola_url = args
        parsed_url = urlparse.urlparse(pombola_url)

        primary_id_scheme = '.'.join(reversed(parsed_url.netloc.split('.')))

        inline_memberships = options['pombola']

        popolo_data = get_popolo_data(
            primary_id_scheme,
            pombola_url,
            inline_memberships=inline_memberships
        )

        if options['pombola']:
            output_filename = filename_prefix + '-pombola.json'
            with open(output_filename, 'w') as f:
                json.dump(popolo_data, f, indent=4, sort_keys=True)
        else:
            for collection, data in popolo_data.items():
                for mongoexport_format in (True, False):
                    output_filename = filename_prefix + '-'
                    if mongoexport_format:
                        output_filename += 'mongo-'
                    output_filename += collection + ".json"
                    with open(output_filename, 'w') as f:
                        if mongoexport_format:
                            for item in data:
                                item['_id'] = item['id']
                                json.dump(item, f, sort_keys=True)
                                f.write("\n")
                        else:
                            json.dump(data, f, indent=4, sort_keys=True)