本文整理汇总了Python中pupa.scrape.Organization.as_dict方法的典型用法代码示例。如果您正苦于以下问题:Python Organization.as_dict方法的具体用法?Python Organization.as_dict怎么用?Python Organization.as_dict使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类pupa.scrape.Organization
的用法示例。
在下文中一共展示了Organization.as_dict方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: test_parent_id_resolution
# 需要导入模块: from pupa.scrape import Organization [as 别名]
# 或者: from pupa.scrape.Organization import as_dict [as 别名]
def test_parent_id_resolution():
parent = ScrapeOrganization('UN', classification='international')
child = ScrapeOrganization('UNESCO', classification='unknown', parent_id=parent._id)
OrganizationImporter('jurisdiction-id').import_data([parent.as_dict(), child.as_dict()])
assert Organization.objects.count() == 2
assert Organization.objects.get(name='UN').children.count() == 1
assert Organization.objects.get(name='UNESCO').parent.name == 'UN'
示例2: test_deduplication_prevents_identical
# 需要导入模块: from pupa.scrape import Organization [as 别名]
# 或者: from pupa.scrape.Organization import as_dict [as 别名]
def test_deduplication_prevents_identical():
org1 = ScrapeOrganization('United Nations', classification='international')
org2 = ScrapeOrganization('United Nations', classification='international',
founding_date='1945')
OrganizationImporter('jurisdiction-id').import_data([org1.as_dict()])
assert Organization.objects.count() == 1
OrganizationImporter('jurisdiction-id').import_data([org2.as_dict()])
assert Organization.objects.count() == 1
示例3: test_pseudo_parent_id_resolution
# 需要导入模块: from pupa.scrape import Organization [as 别名]
# 或者: from pupa.scrape.Organization import as_dict [as 别名]
def test_pseudo_parent_id_resolution():
create_jurisdictions()
parent = ScrapeOrganization('UN', classification='international')
child = ScrapeOrganization('UNESCO', classification='unknown',
parent_id='~{"classification": "international"}')
OrganizationImporter('jid1').import_data([parent.as_dict(), child.as_dict()])
assert Organization.objects.count() == 2
assert Organization.objects.get(name='UN').children.count() == 1
assert Organization.objects.get(name='UNESCO').parent.name == 'UN'
示例4: test_deduplication_parties
# 需要导入模块: from pupa.scrape import Organization [as 别名]
# 或者: from pupa.scrape.Organization import as_dict [as 别名]
def test_deduplication_parties():
party = ScrapeOrganization('Wild', classification='party')
OrganizationImporter('jurisdiction-id').import_data([party.as_dict()])
assert Organization.objects.count() == 1
# parties shouldn't get jurisdiction id attached, so don't differ on import
party = ScrapeOrganization('Wild', classification='party')
OrganizationImporter('new-jurisdiction-id').import_data([party.as_dict()])
assert Organization.objects.count() == 1
示例5: categorize_data
# 需要导入模块: from pupa.scrape import Organization [as 别名]
# 或者: from pupa.scrape.Organization import as_dict [as 别名]
def categorize_data(self, csv_data):
return_objs = []
Contribution = namedtuple('Contribution', self.csv_header_row.replace(' ', '_'))
for line in csv_data.split('\n'): # explicity defining delimiter because otherwise fails in case of single line
if not line:
continue
# cur_obj will be the person or organization that made the contribution
cur_obj = None
contribution = Contribution(*line.split(','))
if contribution.Contributor_Type in self.business_contribution_types:
cur_obj = Organization(contribution.Contributor_Name)
elif contribution.Contributor_Type in self.individual_contribution_types:
cur_obj = Person(contribution.Contributor_Name)
elif contribution.Contributor_Type == 'Unknown/Anonymous':
if contribution.Contributor_Name: #ignoring un-named contributors
#these look like catch-all business contributions
cur_obj = Organization(contribution.Contributor_Name)
if cur_obj:
#we don't set cur_obj in the event that there was an
#anonymous/unknown contribution without a Contribution_Name
#so we need to check that it exists before adding to it
cur_obj.add_source(url=self.search_url)
cur_obj.source_identified = True
if contribution.Contributor_Address:
cur_obj.add_contact_detail(type='address', value=contribution.Contributor_Address)
if contribution.Employer_Name:
cur_obj.extras['Employer'] = contribution.Employer_Name
if contribution.Employer_Occupation:
cur_obj.extras['Occupation'] = contribution.Employer_Occupation
#recipiant_obj is the organization that received the contribution
recipiant_obj = Organization(contribution.Receiving_Committee)
recipiant_obj.extras['Office'] = contribution.Office
recipiant_obj.extras['Filing Period'] = contribution.Filing_Period
recipiant_obj.extras['Fundtype'] = contribution.Fundtype
#transaction is the event linking the donor and recipiant
transaction = Event('Contribution', contribution.Contribution_Date, 'EST', 'Maryland') #EST and Maryland b/c MD
transaction.extras['Contribution Amount'] = contribution.Contribution_Amount
transaction.extras['Contribution Type'] = contribution.Contribution_Type
transaction.add_source(url=self.search_url)
#transaction.source_identified = True
transaction.participants.append(cur_obj.as_dict())
transaction.participants.append(recipiant_obj.as_dict())
yield (cur_obj, recipiant_obj, transaction)
else:
yield []
示例6: test_full_organization
# 需要导入模块: from pupa.scrape import Organization [as 别名]
# 或者: from pupa.scrape.Organization import as_dict [as 别名]
def test_full_organization():
org = ScrapeOrganization('United Nations', classification='international')
org.add_identifier('un')
org.add_name('UN', start_date='1945')
org.add_contact_detail(type='phone', value='555-555-1234', note='this is fake')
org.add_link('http://example.com/link')
org.add_source('http://example.com/source')
# import org
od = org.as_dict()
OrganizationImporter('jurisdiction-id').import_data([od])
# get person from db and assert it imported correctly
o = Organization.objects.get()
assert 'ocd-organization' in o.id
assert o.name == org.name
assert o.identifiers.all()[0].identifier == 'un'
assert o.identifiers.all()[0].scheme == ''
assert o.other_names.all()[0].name == 'UN'
assert o.other_names.all()[0].start_date == '1945'
assert o.contact_details.all()[0].type == 'phone'
assert o.contact_details.all()[0].value == '555-555-1234'
assert o.contact_details.all()[0].note == 'this is fake'
assert o.links.all()[0].url == 'http://example.com/link'
assert o.sources.all()[0].url == 'http://example.com/source'
示例7: test_deduplication_other_name_exists
# 需要导入模块: from pupa.scrape import Organization [as 别名]
# 或者: from pupa.scrape.Organization import as_dict [as 别名]
def test_deduplication_other_name_exists():
create_jurisdictions()
create_org()
org = ScrapeOrganization('UN', classification='international')
od = org.as_dict()
OrganizationImporter('jid1').import_data([od])
assert Organization.objects.all().count() == 1
示例8: test_fix_bill_id
# 需要导入模块: from pupa.scrape import Organization [as 别名]
# 或者: from pupa.scrape.Organization import as_dict [as 别名]
def test_fix_bill_id():
j = create_jurisdiction()
j.legislative_sessions.create(name='1900', identifier='1900')
org1 = ScrapeOrganization(name='House', classification='lower')
bill = ScrapeBill('HB 1', '1900', 'Test Bill ID',
classification='bill', chamber='lower')
oi = OrganizationImporter('jid')
oi.import_data([org1.as_dict()])
from pupa.settings import IMPORT_TRANSFORMERS
IMPORT_TRANSFORMERS['bill'] = {
'identifier': lambda x: re.sub(r'([A-Z]*)\s*0*([-\d]+)', r'\1 \2', x, 1)
}
bi = BillImporter('jid', oi, DumbMockImporter())
bi.import_data([bill.as_dict()])
ve = ScrapeVoteEvent(legislative_session='1900', motion_text='passage',
start_date='1900-04-02', classification='passage:bill',
result='fail', bill_chamber='lower', bill='HB1',
identifier='4',
bill_action='passage',
organization=org1._id)
VoteEventImporter('jid', DumbMockImporter(), oi, bi).import_data([
ve.as_dict(),
])
IMPORT_TRANSFORMERS['bill'] = {}
ve = VoteEvent.objects.get()
ve.bill.identifier == 'HB 1'
示例9: test_extras_organization
# 需要导入模块: from pupa.scrape import Organization [as 别名]
# 或者: from pupa.scrape.Organization import as_dict [as 别名]
def test_extras_organization():
org = ScrapeOrganization('United Nations', classification='international')
org.extras = {"hello": "world",
"foo": {"bar": "baz"}}
od = org.as_dict()
OrganizationImporter('jurisdiction-id').import_data([od])
o = Organization.objects.get()
assert o.extras['foo']['bar'] == 'baz'
示例10: categorize_data
# 需要导入模块: from pupa.scrape import Organization [as 别名]
# 或者: from pupa.scrape.Organization import as_dict [as 别名]
def categorize_data(self, csv_data):
#Is there a better place to define this?
return_objs = []
Contribution = namedtuple('Contribution', self.csv_header_row.replace(' ', '_'))
for line in csv_data.split('\n'): # explicity defining delimiter because otherwise fails in case of single line
if not line:
continue
cur_obj = None
try:
contribution = Contribution(*line.split(','))
except Exception as e:
import pdb; pdb.set_trace()
if contribution.Contributor_Type in self.business_contribution_types:
cur_obj = Organization(contribution.Contributor_Name)
elif contribution.Contributor_Type in self.individual_contribution_types:
cur_obj = Person(contribution.Contributor_Name)
elif contribution.Contributor_Type == 'Unknown/Anonymous':
if contribution.Contributor_Name: #ignoring un-named contributors
#these look like catch-all business contributions
cur_obj = Organization(contribution.Contributor_Name)
if cur_obj:
cur_obj.add_source(url=self.search_url)
cur_obj.source_identified = True
if contribution.Contributor_Address:
cur_obj.add_contact_detail(type='address', value=contribution.Contributor_Address)
if contribution.Employer_Name:
cur_obj.extras['Employer'] = contribution.Employer_Name
if contribution.Employer_Occupation:
cur_obj.extras['Occupation'] = contribution.Employer_Occupation
recipiant_obj = Organization(contribution.Receiving_Committee)
recipiant_obj.extras['Office'] = contribution.Office
recipiant_obj.extras['Filing Period'] = contribution.Filing_Period
recipiant_obj.extras['Fundtype'] = contribution.Fundtype
transaction = Event('Contribution', contribution.Contribution_Date, 'EST', 'Maryland') #EST and Maryland b/c MD
transaction.extras['Contribution Amount'] = contribution.Contribution_Amount
transaction.extras['Contribution Type'] = contribution.Contribution_Type
transaction.add_source(url=self.search_url)
#transaction.source_identified = True
transaction.participants.append(cur_obj.as_dict())
transaction.participants.append(recipiant_obj.as_dict())
yield (cur_obj, recipiant_obj, transaction)
else:
yield []
示例11: test_deduplication_similar_but_different
# 需要导入模块: from pupa.scrape import Organization [as 别名]
# 或者: from pupa.scrape.Organization import as_dict [as 别名]
def test_deduplication_similar_but_different():
o1 = ScrapeOrganization('United Nations', classification='international')
# different classification
o2 = ScrapeOrganization('United Nations', classification='global')
# different name
o3 = ScrapeOrganization('United Nations of Earth', classification='international')
# has a parent
o4 = ScrapeOrganization('United Nations', classification='international', parent_id=o1._id)
# similar, but no duplicates
orgs = [o1.as_dict(), o2.as_dict(), o3.as_dict(), o4.as_dict()]
OrganizationImporter('jurisdiction-id').import_data(orgs)
assert Organization.objects.count() == 4
# should get a new one when jurisdiction_id changes
o5 = ScrapeOrganization('United Nations', classification='international')
OrganizationImporter('new-jurisdiction-id').import_data([o5.as_dict()])
assert Organization.objects.count() == 5
示例12: test_deduplication_overlap_name_distinct_juris
# 需要导入模块: from pupa.scrape import Organization [as 别名]
# 或者: from pupa.scrape.Organization import as_dict [as 别名]
def test_deduplication_overlap_name_distinct_juris():
create_jurisdictions()
org_jid_1 = Organization.objects.create(name='World Wrestling Federation',
classification='international',
jurisdiction_id='jid1')
org_jid_1.other_names.create(name='WWF')
org = ScrapeOrganization(name="WWF", classification="international")
org.add_name('WWF')
oi1 = OrganizationImporter('jid1')
oi1.import_item(org.as_dict())
assert Organization.objects.count() == 1
oi2 = OrganizationImporter('jid2')
oi2.import_item(org.as_dict())
assert Organization.objects.count() == 2
示例13: test_save_related
# 需要导入模块: from pupa.scrape import Organization [as 别名]
# 或者: from pupa.scrape.Organization import as_dict [as 别名]
def test_save_related():
s = Scraper('jurisdiction', '/tmp/')
p = Person('Michael Jordan')
p.add_source('http://example.com')
o = Organization('Chicago Bulls')
o.add_source('http://example.com')
p._related.append(o)
with mock.patch('json.dump') as json_dump:
s.save_object(p)
assert json_dump.mock_calls == [mock.call(p.as_dict(), mock.ANY, cls=mock.ANY),
mock.call(o.as_dict(), mock.ANY, cls=mock.ANY)]
示例14: test_vote_event_bill_actions_two_stage
# 需要导入模块: from pupa.scrape import Organization [as 别名]
# 或者: from pupa.scrape.Organization import as_dict [as 别名]
def test_vote_event_bill_actions_two_stage():
# this test is very similar to what we're testing in test_vote_event_bill_actions w/
# ve3 and ve4, that two bills that reference the same action won't conflict w/ the
# OneToOneField, but in this case we do it in two stages so that the conflict is found
# even if the votes weren't in the same scrape
j = create_jurisdiction()
j.legislative_sessions.create(name='1900', identifier='1900')
org1 = ScrapeOrganization(name='House', classification='lower')
bill = ScrapeBill('HB 1', '1900', 'Axe & Tack Tax Act', from_organization=org1._id)
bill.add_action(description='passage', date='1900-04-02', chamber='lower')
ve1 = ScrapeVoteEvent(legislative_session='1900', motion_text='passage',
start_date='1900-04-02', classification='passage:bill',
result='pass', bill_chamber='lower', bill='HB 1',
bill_action='passage',
organization=org1._id)
ve2 = ScrapeVoteEvent(legislative_session='1900', motion_text='passage',
start_date='1900-04-02', classification='passage:bill',
result='pass', bill_chamber='lower', bill='HB 1',
bill_action='passage',
organization=org1._id)
# disambiguate them
ve1.pupa_id = 'one'
ve2.pupa_id = 'two'
oi = OrganizationImporter('jid')
oi.import_data([org1.as_dict()])
bi = BillImporter('jid', oi, DumbMockImporter())
bi.import_data([bill.as_dict()])
# first imports just fine
VoteEventImporter('jid', DumbMockImporter(), oi, bi).import_data([
ve1.as_dict(),
])
votes = list(VoteEvent.objects.all())
assert len(votes) == 1
assert votes[0].bill_action is not None
# when second is imported, ensure that action stays pinned to first just as it would
# have if they were both in same import
VoteEventImporter('jid', DumbMockImporter(), oi, bi).import_data([
ve1.as_dict(),
ve2.as_dict(),
])
votes = list(VoteEvent.objects.all())
assert len(votes) == 2
assert votes[0].bill_action is not None
assert votes[1].bill_action is None
示例15: test_deduplication_error_overlaps
# 需要导入模块: from pupa.scrape import Organization [as 别名]
# 或者: from pupa.scrape.Organization import as_dict [as 别名]
def test_deduplication_error_overlaps():
create_jurisdictions()
Organization.objects.create(name='World Wrestling Federation',
classification='international',
jurisdiction_id='jid1')
wildlife = Organization.objects.create(name='World Wildlife Fund',
classification='international',
jurisdiction_id='jid1')
wildlife.other_names.create(name='WWF')
org = ScrapeOrganization('World Wrestling Federation', classification='international')
org.add_name('WWF')
od = org.as_dict()
with pytest.raises(SameOrgNameError):
OrganizationImporter('jid1').import_data([od])