def get_zip_data(Request, zip_code=None): from beckett.finance.utils.nyt_finance_getter import get_finance_data_json if zip_code == None: raise Http404 response = get_finance_data_json(**{'resource_type': 'zips', 'query_file': zip_code}) if 'errors' in response: raise Http404 party_dict = {} for resp in response: try: party_dict[resp['party']] += resp['total'] except KeyError: party_dict[resp['party']] = resp['total'] return HttpResponse(max(party_dict, key= lambda a: party_dict.get(a)), mimetype="application/json")
def search_100_miles(ceo): json_data = get_finance_data_json(**{ 'resource_type':'contributions', 'query_file': 'donorsearch', 'search':{ 'fname': ceo.first_name, 'lname': ceo.last_name, } }) if 'errors' not in json_data: for donor_json in json_data: try: zip_obj = Zip.objects.get(code=donor_json['donor_zip5']) except Zip.DoesNotExist: zip_obj = Zip(code=donor_json['donor_zip5']) zip_obj.save() except Zip.MultipleObjectsReturned: zip_obj = Zip.objects.filter(code=donor_json['donor_zip5'])[0] try: address = Address.objects.get(**{ 'address': donor_json['donor_address1'], 'address2': donor_json['donor_address1'], 'state':donor_json['donor_state'], 'city':donor_json['donor_city'], 'zip':zip_obj }) return except Address.DoesNotExist: address = Address(**{ 'address': donor_json['donor_address1'], 'address2': donor_json['donor_address1'], 'state':donor_json['donor_state'], 'city':donor_json['donor_city'], 'zip':zip_obj }) address = geo_code(address) if address.point: addresses = Address.objects.filter(point__distance_lte=(address.point, D(mi=70))) if addresses: for address in addresses: if address == ceo.company_address: print address print donor_json save_donor([donor_json], ceo) return json_data
def save_donor(donor_json, ceo): for donation_json in donor_json: candidate_name ="" if donation_json['candidate_full_name'] == "McCain-Palin COMPLIANCE FUND INC.": donation_json['candidate_full_name'] = "John McCain" # Cmon NYTIMES! candidate_name = donation_json['candidate_full_name'].split(" ") candidate_name.reverse() query_string = ",".join("%s" % v for v in candidate_name) #print query_string try: candidate_json = get_finance_data_json(**{'resource_type': 'candidates', 'query_file': query_string}) except: return for candidate in candidate_json: try: party, created = Party.objects.get_or_create(**{ 'name': candidate['party'] }) candidate, created = Candidate.objects.get_or_create(**{ 'name': donation_json['candidate_full_name'], 'party': party }) except: return #compliance fundds argh zip_obj = Zip.objects.filter(code=donation_json['donor_zip5']) if zip_obj: zip_obj = zip_obj[0] else: zip_obj = Zip(code=donation_json['donor_zip5']) zip_obj.save() address, created = Address.objects.get_or_create(**{ 'address': donation_json['donor_address1'], 'address2': donation_json['donor_address1'], 'state':donation_json['donor_state'], 'city':donation_json['donor_city'], 'zip':zip_obj }) donor, created = Donor.objects.get_or_create(**{'ceo': ceo, 'first_name': donation_json['donor_first_name'], 'last_name': donation_json['donor_last_name'], 'donor_address': address}) year, month, day = donation_json['donation_date'].split("-") d = date(int(year), int(month), int(day)) donation, created = Donation.objects.get_or_create(**{'candidate': candidate, 'donor': donor, 'donation_amount': donation_json['donation_amount'], 'donation_date': d, })
def save_ceo(**kwargs): ceos = list() if kwargs.has_key('CEO'): ceos = [kwargs['CEO'].split(" ")] elif kwargs.has_key('CEOs'): cs = kwargs['CEOs'].split(", ") for c in cs: a = c.split(" ") ceos.append(a) for name in ceos: search = dict() if len(name) > 2: search = { 'fname': name[0], 'lname': name[2], } elif len(name) == 2: search = { 'fname': name[0], 'lname': name[1], } else: #print "No name!" return city_state_zip = kwargs['Address1'].split(" ") zip = city_state_zip.pop() state = city_state_zip.pop() city = " ".join(city_state_zip).replace(",", '') if len(zip) == 5: zip_obj = Zip.objects.filter(code=zip) if zip_obj: zip_obj = zip_obj[0] else: zip_obj = Zip(code=zip) zip_obj.save() address, created = Address.objects.get_or_create(**{ 'address': kwargs['Address'], 'address2': kwargs['Address1'], 'state':state, 'city':city, 'zip':zip_obj }) try: ceo, created = Ceo.objects.get_or_create(**{ 'first_name': search['fname'], 'last_name': search['lname'], 'website': kwargs['Website'], 'company_name': kwargs['Company'], 'company_address':address }) except: return #### dynasties search['zip'] = zip donor_json = get_finance_data_json(**{'resource_type': 'contributions', 'query_file': 'donorsearch', 'search': search, }) if donor_json != 'errors': save_donor(donor_json, ceo) elif zip_obj.poly: #nearby_zips = Zip.objects.filter(poly__dwithin=(zip[0].centroid, .1))[:9] nearby_zips = Zip.objects.filter(poly__touches=zip_obj.poly)[:9] for zip in nearby_zips: search['zip'] = zip.code donor_json = get_finance_data_json(**{'resource_type': 'contributions', 'query_file': 'donorsearch', 'search': search, }) if donor_json != 'errors': save_donor(donor_json, ceo)
def save_ceo(**kwargs): ceos = list() if kwargs.has_key('CEO'): ceos = [kwargs['CEO'].split(" ")] elif kwargs.has_key('CEOs'): cs = kwargs['CEOs'].split(", ") for c in cs: a = c.split(" ") ceos.append(a) for name in ceos: search = dict() if len(name) > 2: search = { 'fname': name[0], 'lname': name[2], } elif len(name) == 2: search = { 'fname': name[0], 'lname': name[1], } else: #print "No name!" return city_state_zip = kwargs['Address1'].split(" ") zip = city_state_zip.pop() state = city_state_zip.pop() city = " ".join(city_state_zip).replace(",", '') if len(zip) == 5: zip_obj = Zip.objects.filter(code=zip) if zip_obj: zip_obj = zip_obj[0] else: zip_obj = Zip(code=zip) zip_obj.save() address, created = Address.objects.get_or_create( **{ 'address': kwargs['Address'], 'address2': kwargs['Address1'], 'state': state, 'city': city, 'zip': zip_obj }) try: ceo, created = Ceo.objects.get_or_create( **{ 'first_name': search['fname'], 'last_name': search['lname'], 'website': kwargs['Website'], 'company_name': kwargs['Company'], 'company_address': address }) except: return #### dynasties search['zip'] = zip donor_json = get_finance_data_json( **{ 'resource_type': 'contributions', 'query_file': 'donorsearch', 'search': search, }) if donor_json != 'errors': save_donor(donor_json, ceo) elif zip_obj.poly: #nearby_zips = Zip.objects.filter(poly__dwithin=(zip[0].centroid, .1))[:9] nearby_zips = Zip.objects.filter( poly__touches=zip_obj.poly)[:9] for zip in nearby_zips: search['zip'] = zip.code donor_json = get_finance_data_json( **{ 'resource_type': 'contributions', 'query_file': 'donorsearch', 'search': search, }) if donor_json != 'errors': save_donor(donor_json, ceo)
def save_donor(donor_json, ceo): for donation_json in donor_json: candidate_name = "" if donation_json[ 'candidate_full_name'] == "McCain-Palin COMPLIANCE FUND INC.": donation_json[ 'candidate_full_name'] = "John McCain" # Cmon NYTIMES! candidate_name = donation_json['candidate_full_name'].split(" ") candidate_name.reverse() query_string = ",".join("%s" % v for v in candidate_name) #print query_string try: candidate_json = get_finance_data_json(**{ 'resource_type': 'candidates', 'query_file': query_string }) except: return for candidate in candidate_json: try: party, created = Party.objects.get_or_create( **{'name': candidate['party']}) candidate, created = Candidate.objects.get_or_create( **{ 'name': donation_json['candidate_full_name'], 'party': party }) except: return #compliance fundds argh zip_obj = Zip.objects.filter(code=donation_json['donor_zip5']) if zip_obj: zip_obj = zip_obj[0] else: zip_obj = Zip(code=donation_json['donor_zip5']) zip_obj.save() address, created = Address.objects.get_or_create( **{ 'address': donation_json['donor_address1'], 'address2': donation_json['donor_address1'], 'state': donation_json['donor_state'], 'city': donation_json['donor_city'], 'zip': zip_obj }) donor, created = Donor.objects.get_or_create( **{ 'ceo': ceo, 'first_name': donation_json['donor_first_name'], 'last_name': donation_json['donor_last_name'], 'donor_address': address }) year, month, day = donation_json['donation_date'].split("-") d = date(int(year), int(month), int(day)) donation, created = Donation.objects.get_or_create( **{ 'candidate': candidate, 'donor': donor, 'donation_amount': donation_json['donation_amount'], 'donation_date': d, })