Esempio n. 1
0
def main(zips):

    featfile='../../../../Data/Model_Runs/Model_15sept.pkl'
    df=pd.read_pickle(featfile)
    #load model
    regzips=df['zip'].values
    slope=df['slope'].values
    ints=df['intercept'].values

    idzips=[np.where(regzips==z)[0][0] for z in zips if z in regzips]

    clf = joblib.load('../../../../Data/Model_Runs/LinearRegression.pkl')

    #build inputs
    ip1=slope[idzips]
    flag=np.where(np.isnan(ip1))
    ip=ip1[~np.isnan(ip1)]
    ip=np.reshape(ip,[ip.shape[0],1])
    #run model
    op=clf.predict(list(ip))
    op=samNormalize(op)

    #return ZipCodeDatabase
    zipnew=np.asarray(zips)
    zips=regzips[idzips][np.where(op>1.1)]
    zjson=[]

    zcdb=ZipCodeDatabase()
    for zid in zips:
        z=zcdb[zid]
        temp= {'lat': z.latitude, 'lng': z.longitude, 'name':z.city}#'zip':int(z.zip),
        zjson.append(temp)
        # zjson=zjson.append(dict({'zip':z.zip, 'lat': z.latitude, 'lon': z.longitude}))
    # print str(json.dumps(zjson))
    return json.dumps(zjson)
Esempio n. 2
0
def serviceAbilityScoreAlgorithm(target,distance,CollegeEnrollment,GapCompany,GapLibrary):
    from pyzipcode import ZipCodeDatabase
    zcdb = ZipCodeDatabase()
    DF=pd.DataFrame(columns=['Zip','zip'])
    center=target['Zip'].unique()
    for i in center:
        in_radius=[z.zip for z in zcdb.get_zipcodes_around_radius(i,distance)] # ('ZIP', radius in miles)
        df=pd.DataFrame({'zip':in_radius})
        df['Zip']=i
        DF=DF.append(df,ignore_index=True)
    school_college_distance=Distance(target,CollegeEnrollment,DF)
    writerschool_college_distance=pd.ExcelWriter('school_college_distance.xlsx')
    school_college_distance.to_excel(writerschool_college_distance,index=False)
    
    school_company_distance=Distance(target,GapCompany,DF)
    writerschool_company_distance=pd.ExcelWriter('school_company_distance.xlsx')
    school_company_distance.to_excel(writerschool_company_distance,index=False)
    
    
    school_library_distance=Distance(target,GapLibrary,DF)
    writerschool_library_distance=pd.ExcelWriter('school_library_distance.xlsx')
    school_library_distance.to_excel(writerschool_library_distance,index=False)
    
    ServiceAbilityIndexCollegeNearby=serviceAbilityIndexCollegeMap(school_college_distance,0,200,1000)
    ServiceAbilityIndexCompanyNearby=serviceAbilityIndexCompanyMap(school_company_distance,0,200,1000)
    ServiceAbilityIndexHostNearby=serviceAbilityIndexLibraryMap(school_library_distance,1,5)
    ServiceAbilityIndexScore=ServiceAbilityIndexCollegeNearby.merge(ServiceAbilityIndexCompanyNearby,on='Code',left_index=True).merge(ServiceAbilityIndexHostNearby,on='Code',left_index=True)
    ServiceAbilityIndexScore['ServiceAbilityIndexTotalScore']=ServiceAbilityIndexScore.apply(lambda row: row.ServiceabilityIndexCollegeNearby+row.ServiceabilityIndexCompanyNearby+row.ServiceabilityIndexLibraryNearby,axis=1)
    target=ServiceAbilityIndexScore[ServiceAbilityIndexScore.ServiceAbilityIndexTotalScore>=100].sort_values(['ServiceAbilityIndexTotalScore'],ascending=[False]).reset_index(drop=True)
    return target
Esempio n. 3
0
    def clean(self):
        super().clean()
        # validate applicant date of birth
        zip_code = self.cleaned_data.get('zip_code', None)
        applicant_dob = self.cleaned_data.get('dob', None)
        policy = self.cleaned_data.get('policy_type',None)
        if applicant_dob and policy:
            applicant_age = self._process_dob_for_age(applicant_dob)
            if applicant_age < 18 and self.cleaned_data['policy_type'] == 'Family':
                self.cleaned_data['dob'] = ''
                self.add_error('dob', forms.ValidationError(
                    _("for policy type family, minimum age must be 18"),
                    code='invalid'
                ))
            if applicant_age < 2 and self.cleaned_data['policy_type'] == 'Self':
                self.cleaned_data['dob'] = ''
                self.add_error('dob', forms.ValidationError(
                    _("for policy type Self, minimum age must be 2"),
                    code='invalid'
                ))

        if zip_code:
            try:
                self.cleaned_data['state'] = ZipCodeDatabase()[zip_code].state
            except IndexError as err:
                pass

        return self.cleaned_data
Esempio n. 4
0
    def __init__(self, key, city='San Francisco'):
        """
        The construct for the YelpCity class.

        Parameters
        ----------
        key : str
            The yelp API key needed to call Yelp Fusion API.
        city : str
            The city to search over.
        """

        api_host = 'https://api.yelp.com'
        search_path = '/v3/businesses/search'
        business_path = '/v3/businesses/'
        zcdb = ZipCodeDatabase()
        url = api_host + search_path
        header = {
            'Authorization': 'Bearer %s' % key,
        }
        param = {
            'location': city,
            'limit': 1,
            'offset': 0,
            'term': 'restaurants',
            'sort_by': 'best_match',
        }
        response = requests.get(url=url, headers=header, params=param)

        self.business_id_set = set()
        self.business_list = []
        for zip_obj in zcdb.find_zip(city=city):
            self.business_list += self.find_businesses(zip_obj, url, header)
        self.region = response.json()['region']
Esempio n. 5
0
def fake_df():
    zcdb = ZipCodeDatabase()

    zipcodes = zcdb.get_zipcodes_around_radius(94533, 20)
    cities = [z.city for z in zipcodes]
    zipcodes = [z.zip+"," for z in zipcodes]

    zips_and_cities_df = pd.DataFrame({"zip": zipcodes, "city": cities})
    zips_and_cities_df = zips_and_cities_df.groupby("city", as_index=False).agg(sum)

    df = from_exported(3)
    ints_to_cols = {i: df.columns[i] for i in range(df.shape[1])}

    dfs = []
    for _, row in zips_and_cities_df.iterrows():
        df = fake_pm_for_zipcode(row.zip, row.city)
        dfs.append(df)

    df = pd.concat(dfs)
    df.sort_index(axis=1, inplace=True)

    df.columns = [ints_to_cols[i] for i in range(df.shape[1])]
    df.rename({"Unnamed: 3": ""}, axis=1, inplace=True)

    df.to_csv('/tmp/faked_pms.csv', index=False)
    return df
Esempio n. 6
0
def search_caregivers(request, *args, **kwargs):
    context = {}
    # zcdb = ZipCodeDatabase()
    # in_radius = [z.zip for z in zcdb.get_zipcodes_around_radius('90007', 8)] # ('ZIP', radius in miles)
    # radius_utf = [x.encode('UTF-8') for x in in_radius] # unicode list to utf list
    # context['data'] = radius_utf
    # zip, gender, radius
    if request.method == 'POST':
        zip_code = request.POST['zip']
        radius = int(request.POST['radius'])
        zcdb = ZipCodeDatabase()
        in_radius = [
            z.zip for z in zcdb.get_zipcodes_around_radius(zip_code, radius)
        ]  # ('ZIP', radius in miles)
        #radius_utf = [x.encode('UTF-8') for x in in_radius] # unicode list to utf list
        radius_arr = [
            x.encode('utf-8').decode('unicode-escape') for x in in_radius
        ]
        caregivers = Caregiver.objects.filter(zip_code__in=radius_arr)
        context['caregivers'] = caregivers
        context['isPostRequest'] = True
    else:
        context['caregivers'] = []
        context['isPostRequest'] = False
    return render(request, 'search_caregivers.html', context)
Esempio n. 7
0
def dashboard(request):
    zipcode = request.GET.get('zip_code')
    if zipcode:
        zcdb = ZipCodeDatabase()
        try:
            profiles = Profile.objects.filter(
                is_teacher=True,
                zip_code__in=[
                    z.zip
                    for z in zcdb.get_zipcodes_around_radius(zipcode, 10)
                ])
        except Exception as e:
            logging.error(traceback.format_exc())
            profiles = Profile.objects.filter(phone_number=0)

    # Logs the error appropriately.
    else:
        profiles = Profile.objects.filter(is_teacher=True)
    page = request.GET.get('page', 1)
    paginator = Paginator(profiles, 10)
    try:
        profiles = paginator.page(page)
    except PageNotAnInteger:
        profiles = paginator.page(1)
    except EmptyPage:
        profiles = paginator.page(paginator.num_pages)
    context = {'profiles': profiles}
    return render(request, 'account/dashboard.html', context)
def get_zip(b):
 
    zcdb = ZipCodeDatabase()
    zipcode = zcdb[b]
    longi = zipcode.longitude
    Lati = zipcode.latitude
    cord = str(longi) + ',' +  str(Lati)
    return cord
Esempio n. 9
0
    def search_distance(self, search_zip):
        zcdb = ZipCodeDatabase()
        customer_zip = zcdb[search_zip]
        customer_location = [customer_zip.latitude, customer_zip.longitude]
        location_distance = distance.distance(self.location,
                                              customer_location).mi
        rounded_distance = round(location_distance, 1)

        self.search_distance = rounded_distance
Esempio n. 10
0
def get_nct_list_from_zip(input_zip, mile_range=50):
    zcdb = ZipCodeDatabase()
    zip_list = [
        z.zip for z in zcdb.get_zipcodes_around_radius(input_zip, mile_range)
    ]  # default mile range set at 100
    conn = general_pool_criteria.connection()
    cur = conn.cursor()
    # conn.execute("USE trial_knowledge_base_COVID19") ##
    sql = '''
            ;with cte (code, DeclarationItem, Declaration) as
            (
              select nct_id,
                cast(left(zip_codes, charindex('|',zip_codes+'|')-1) as varchar(50)) DeclarationItem,
                     stuff(zip_codes, 1, charindex('|',zip_codes+'|'), '') Declaration
              from dbo.aact_trial_info
              union all
              select code,
                cast(left(Declaration, charindex('|',Declaration+'|')-1) as varchar(50)) DeclarationItem,
                stuff(Declaration, 1, charindex('|',Declaration+'|'), '') Declaration
              from cte
              where Declaration > ''
            ) 
            select code as nct_id, DeclarationItem as zip
            from cte
            order by nct_id asc
            option (maxrecursion 0);
        '''
    cur.execute(sql)
    trial_zips = cur.fetchall()
    cur.close()
    conn.close()

    # compare nearby zip codes to trial zip codes
    nearby_nct_list = []
    for item in trial_zips:
        test_nct = item[0]
        if item[1] is not None:
            test_zip = item[1].split('-')[0]
        else:
            test_zip = 00000
        if test_zip in zip_list:
            nearby_nct_list.append(
                test_nct
            )  # some zip codes stored with '-xxxx' after primary 5 digit, pyzipcode no like that
    nearby_nct_list = list(set(nearby_nct_list))

    # temp loop to add trial number, to be removed in the future
    temp_return_list = []
    i = 1
    for item in nearby_nct_list:
        temp_return_list.append('%s;%d' % (item, i))
        i += 1

    # return temp_return_list
    # fengyang: also return the nearby zipcode list
    return [temp_return_list, zip_list]
Esempio n. 11
0
def find_neighbors_str(store_zip1, radius=5):
    zcdb = ZipCodeDatabase()

    in_radius = []

    for neighbors in zcdb.get_zipcodes_around_radius(store_zip1, radius):
        in_radius.append(neighbors.zip)

    zipcode_reach2 = find_neighbors_list(store_zip, radius=radius)

    return (list(set(in_radius).difference(set(zipcode_reach2))))
Esempio n. 12
0
def find_neighbors_list(store_zip, radius=5):
    zcdb = ZipCodeDatabase()

    in_radius = []

    for sz in store_zip:
        for neighbors in zcdb.get_zipcodes_around_radius(sz, radius):
            in_radius.append(neighbors.zip)

    zipcode_reach = list(set(in_radius))  # remove dupplicate zipcode
    return (zipcode_reach)
Esempio n. 13
0
 def get_zipcodes_in_radius():
     zipcode_input = get_zipcode_input() #getting zipcode from input
     if not zipcode_input:
         return None
     radius = get_search_radius() #getting radius from input
     zcdb = ZipCodeDatabase() #using zipCodeDatabase
     try:
         in_radius = [z.zip for z in zcdb.get_zipcodes_around_radius(zipcode_input, radius)] #('ZIP', radius in miles)
         return in_radius
     except Exception: #catch when zipcode is not found in database
         show_error_message(self, "Inputted zipcode was not found")
Esempio n. 14
0
def search_caregivers(request, *args, **kwargs):
    context = {}
    context['user_type'] = request.session['user_type']
    # zcdb = ZipCodeDatabase()
    # in_radius = [z.zip for z in zcdb.get_zipcodes_around_radius('90007', 8)] # ('ZIP', radius in miles)
    # radius_utf = [x.encode('UTF-8') for x in in_radius] # unicode list to utf list
    # context['data'] = radius_utf
    # zip, gender, radius
    if request.method == 'POST':
        zip_code = request.POST['zip']
        radius = int(request.POST['radius'])
        zcdb = ZipCodeDatabase()
        # start_date = datetime.datetime.strptime(request.POST['start_date'], "%Y-%m-%d").date()
        # end_date = datetime.datetime.strptime(request.POST['end_date'], "%Y-%m-%d").date()
        # availability = request.POST['availability']
        # in_radius = [z.zip for z in zcdb.get_zipcodes_around_radius(zip_code, radius)] # ('ZIP', radius in miles)
        # # radius_utf = [x.encode('UTF-8') for x in in_radius] # unicode list to utf list
        # radius_arr = [x.encode('utf-8').decode('unicode-escape') for x in in_radius]
        # # radius_arr = 10 #added 28/10
        # # caregivers = Caregiver.objects.filter(zip_code__in = radius_arr)
        # caregivers = Caregiver.objects.filter(zip_code__in = radius_arr, availability=availability, start_date__lte=start_date, end_date__gte=end_date)

        start_date = datetime.datetime.strptime(
            request.POST['start_date'],
            "%Y-%m-%d").date() if request.POST['start_date'] != '' else ''
        end_date = datetime.datetime.strptime(
            request.POST['end_date'],
            "%Y-%m-%d").date() if request.POST['end_date'] != '' else ''
        availability = request.POST[
            'availability'] if request.POST['availability'] != '' else ''
        if zip_code.strip() != '':
            in_radius = [
                z.zip
                for z in zcdb.get_zipcodes_around_radius(zip_code, radius)
            ]  # ('ZIP', radius in miles)
            radius_arr = [
                x.encode('utf-8').decode('unicode-escape') for x in in_radius
            ]
        else:
            radius_arr = []
        print(start_date, end_date, "datessssss")
        # caregivers = Caregiver.objects.filter(zip_code__in = radius_arr) | Caregiver.objects.filter(availability=availability) | Caregiver.objects.filter(start_date__lte=start_date,end_date__gte=end_date )

        caregivers = Caregiver.objects.filter(zip_code__in=radius_arr,
                                              availability=availability,
                                              start_date__lte=start_date,
                                              end_date__gte=end_date)

        context['caregivers'] = caregivers
        context['isPostRequest'] = True
    else:
        context['caregivers'] = []
        context['isPostRequest'] = False
    return render(request, 'search_caregivers.html', context)
Esempio n. 15
0
def get_city_data(zipc):
    """Given a zip code, return latlon and city name"""
    geolocator = ZipCodeDatabase()
    try:
        zip_data = geolocator[str(zipc)]
        lat = zip_data.latitude
        lon = zip_data.longitude
        name = '%s, %s' % (zip_data.city, zip_data.state)
        return lat, lon, name

    except:
        return 'None', 'None', 'None'
Esempio n. 16
0
def tz_ids_for_address(country, state=None, city=None, zipcode=None, **kwargs):
    """ Get the TZ identifiers for a given address, e.g.:

    >>> tztrout.tz_ids_for_address('US', state='CA', city='Palo Alto')
    [u'America/Los_Angeles']
    >>> tztrout.tz_ids_for_address('PL')
    [u'Europe/Warsaw']
    >>> tztrout.tz_ids_for_address('CN')
    [
        u'Asia/Shanghai',
        u'Asia/Harbin',
        u'Asia/Chongqing',
        u'Asia/Urumqi',
        u'Asia/Kashgar'
    ]
    """

    if country == 'US':
        if zipcode:
            if not isinstance(zipcode, basestring):
                zipcode = str(zipcode)

            # If an extended zipcode in a form of XXXXX-XXXX is provided,
            # only use the first part
            zipcode = zipcode.split('-')[0]

            return td.us_zip_to_tz_ids.get(zipcode)
        elif state or city:
            if city and 'city:%s' % city.lower() in data_exceptions:
                return data_exceptions['city:%s' % city.lower()]['include']
            if len(state) != 2:
                state = td.normalized_states['US'].get(state.lower(), state)
            zcdb = ZipCodeDatabase()
            zipcodes = zcdb.find_zip(city=city,
                                     state=state,
                                     exact=True,
                                     limit=1)
            if zipcodes:
                return td.us_zip_to_tz_ids.get(zipcodes[0].zip)
            elif city is not None:
                zipcodes = zcdb.find_zip(state=state, exact=True, limit=1)
                if zipcodes:
                    return td.us_zip_to_tz_ids.get(zipcodes[0].zip)
    elif country == 'CA' and state:
        if len(state) != 2:
            state = td.normalized_states['CA'].get(state.lower(), state)
        return td.ca_state_to_tz_ids.get(state)
    elif country == 'AU' and state:
        if len(state) != 2:
            state = td.normalized_states['AU'].get(state.lower(), state)
        return td.au_state_to_tz_ids.get(state)

    return pytz.country_timezones.get(country)
Esempio n. 17
0
def eventbrite_api(request):
    profile = Profile.objects.get(user=request.user)
    interests = profile.interests.filter(interests__in=['MUSIC', 'TECHNOLOGY', 'COMEDY', 'CAR', 'FOOD', 'SPORTS'])
    zcdb = ZipCodeDatabase()

    #geocodes users zipcode to use lat and lng in search
    zipcode = zcdb[profile.zipcode]
    free_times = FreeTimes.objects.filter(user=request.user)
    eventbrite_url='https://www.eventbriteapi.com/v3/events/search/?'
    for free_time in free_times:

        # formats time to match eventbrite api
        start_time =  "{}Z".format(free_time.free_time_start[:-6])
        end_time = "{}Z".format(free_time.free_time_end[:-6])
        for interest in interests:
            eventbrite_params = {
            "token": eventbrite_token,
            'popular': True,
            'q': str(interest.interests),
            'location.latitude': zipcode.latitude,
            'location.longitude': zipcode.longitude,
            'location.within': '20mi',
            'start_date.range_start': start_time,
            'start_date.range_end': end_time
            }
            eventbrite_resp = get(url=eventbrite_url, params=eventbrite_params)
            eventbrite_data = json.loads(eventbrite_resp.text)

            # Saves returned events to database
            for event in eventbrite_data['events']:
                formatted_start = event['start']['utc'][:-1] + '-7:00'
                formatted_end = event['end']['utc'][:-1] + '-7:00'
                # Creates a datetime object from the time returned by Api
                datetime_start = dateutil.parser.parse(event['start']['utc'])
                datetime_end = dateutil.parser.parse(event['end']['utc'])
                Event.objects.create(
                    name=event['name']['text'],
                    category=interest.interests,
                    venue=event['venue']['name'],
                    description=event['description']['text'],
                    latitude=event['venue']['latitude'],
                    longitude=event['venue']['longitude'],
                    start_time=formatted_start,
                    end_time=formatted_end,
                    picture=event['logo_url'],
                    event_url=event['url'],
                    user=request.user,
                    start_dateTime=datetime_start,
                    end_dateTime=datetime_end
                )
    success = {'success': 'success'}
    return HttpResponse(json.dumps(success), content_type="application/json")
Esempio n. 18
0
def zipcode_coordinates(zipcd):
    print zipcd
    zcdb = ZipCodeDatabase()
    try:
        zipcode = zcdb[zipcd]
        coordinates = (zipcode.latitude, zipcode.longitude)
    except IndexError:
        if zipcd == '60290':
            coordinates = (41.881, -87.6247)
        else:
            coordinates = (np.nan, np.nan)

    return coordinates
Esempio n. 19
0
 def getCiti(self):
     """ write the city and state given the postcode"""
     if self.postcode:
         zcdb = ZipCodeDatabase()
         regexp = re.compile(r'-\d*')
         try:
             postcode = re.sub(regexp, "", self.postcode)
             zipcode = zcdb[postcode]
             self.citi = zipcode.city
             self.state = zipcode.state
         except:
             self.citi = "NA-citi"
             self.state = "NA-state"
Esempio n. 20
0
def state_from_zip(zipcode):
    try:
        zip_info = ZipCodeDatabase()[zipcode]
    except IndexError:
        return None

    if zip_info.city in ('APO', 'FPO', 'DPO'):
        # we cannot lookup state names for APO/FPO/DPO zipcodes;
        # probably we need better handling in audb for military PO addresses
        return zip_info.state

    state = us.states.lookup(zip_info.state)
    return state.name if state else None
    def post(self):

        # force to accept only JSON posted data
        try:
            data = request.get_json(force=True)
        except Exception as err:
            return {'error': settings.INVALID_JSON}, 400

        # make sure user has submitted JSON data i.e list of zip codes. Format: {"zip_codes": ["44000", "10008"]}
        if data and data.get('zip_codes') and isinstance(
                data.get('zip_codes'), list):

            try:
                # get user's Geo Data from user's IP address
                g = geocoder.ip(request.remote_addr)
            except Exception as err:
                return {'error': settings.CONNECTION_ERROR}, 400

            # if user is from local machine instead of a real IP (server machine) then get user's real IP address
            if g.ip == '127.0.0.1':
                user_ip = urlopen('http://ip.42.pl/raw').read()
                # get user's Geo Data from user's IP address
                g = geocoder.ip(user_ip)

            user_lat_lng = g.lat, g.lng
            result = dict()

            # iterate through each zip code and calculate distance relative to user's lat, long
            for zip_code in data.get('zip_codes', []):

                # This package contains geo data for US zip codes only.
                zcdb = ZipCodeDatabase()
                try:

                    # get zip code's Geo Data for lat, long
                    zip_code_data = zcdb[zip_code]
                    zip_code_lat_lng = zip_code_data.latitude, zip_code_data.longitude
                    """
                    Calculate the geodesic distance between two points using the formula devised by Thaddeus Vincenty,
                    with an accurate ellipsoidal model of the earth. using geopy package
                    """
                    distance = round(
                        vincenty(zip_code_lat_lng, user_lat_lng).miles, 2)
                    result[zip_code] = '{0} Miles'.format(distance)

                except IndexError as err:
                    result[zip_code] = settings.INVALID_ZIP_CODE

            return result, 200
        else:
            return {'error': settings.INVALID_JSON}, 400
Esempio n. 22
0
def create_data_table(state_choose='MA',
                      radius=5,
                      Number=0,
                      tran_type=['Sale', 'Return'],
                      min_date=min_date1,
                      max_date=max_date1):
    zip_dict = {}

    sea_zipcode = result['ShipToZipCode'][result['State'] ==
                                          state_choose].unique().tolist()

    try:
        sea_zipcode.remove('00000')
    except:
        pass

    zipcode_reach2 = find_neighbors_list(store_zip, radius=radius)

    # add more parameter here
    ecom_filter = result[(result['TransactionType'].isin(tran_type))
                         & (result['TheDate'] >= min_date) &
                         (result['TheDate'] <= max_date)][[
                             'ShipToZipCode', 'Transactions'
                         ]].groupby('ShipToZipCode').sum()

    try:
        for i in sea_zipcode:
            zcdb = ZipCodeDatabase()
            in_radius = []
            for neighbors in zcdb.get_zipcodes_around_radius(i, radius):
                in_radius.append(neighbors.zip)
            zipcode_reach_search = list(
                set(in_radius).difference(set(zipcode_reach2)))
            zip_dict[i] = ecom_filter[ecom_filter.index.isin(
                zipcode_reach_search)]['Transactions'].sum()
    except:
        pass

    predict1 = pd.DataFrame.from_dict(zip_dict,
                                      orient='index',
                                      columns=['Transactions'
                                               ]).sort_values('Transactions',
                                                              ascending=False)

    store_future_zip = predict1.index

    store_future = table_from_zipcodelist(list(store_future_zip))

    store_future['Transactions'] = predict1['Transactions'].tolist()

    return ColumnDataSource(store_future)
Esempio n. 23
0
class UrlBuilder(object):
    """Build URL list for CareerBuilder searches"""
    zcdb = ZipCodeDatabase()

    def __init__(self, zipcode, search=None):
        """Validate zipcode, prompt user for all query parameters"""
        self.search = search
        try:
            # Check zipcode DB for valid zip
            self.zcdb[zipcode]
        except IndexError:
            # Default to Baltimore Catalyte office zipcode
            print 'Invalid zipcode code. Defaulting to 21201'
            self.zipcode = '21201'
        else:
            self.zipcode = zipcode
        self.base = 'http://www.careerbuilder.com/'
        self.params = []
        self.params.append(Posted.cmd_append())
        self.params.append(Radius.cmd_append())
        self.params.append(Pay.cmd_append())
        self.params.append(Emp.get_formatted())

    def build_url(self):
        """Add path and query parameters based on filters specified by user"""
        if not self.has_filters():
            return '{}{}?cat1=JN008'.format(self.base, self.build_path())
        else:
            return '{}{}{}&cat1=JN008'.format(self.base, self.build_path(), self.format_filters())

    def build_path(self):
        """Compose URL substring for endpoint path"""
        if not self.search or not self.search.split():
            return 'jobs-in-{}'.format(self.zipcode)
        else:
            return 'jobs-{}-in-{}'.format('-'.join(self.search.split()), self.zipcode)

    def has_filters(self):
        """Check for user input query parameters"""
        if any(param is not None for param in self.params):
            return True
        else:
            return False

    def format_filters(self):
        """Compose URL substring for all query parameters"""
        base = '?'
        for param in self.params:
            if param is not None:
                base += param + '&'
        return base
Esempio n. 24
0
def zipcode_state(df):
    from pyzipcode import ZipCodeDatabase
    zip=ZipCodeDatabase()
    for i in df[pd.isnull(df['State'])&pd.notnull(df['ZIP code'])].index:
    try:
        df['State'][i]=str(zip[df['ZIP code'][i]].state)
    except:
        continue

    # fill the rest of the missing values of state and zipcode with string "Not provided"
    df['State'].fillna('Not provided',inplace=True)
    df['ZIP code'].fillna('Not Provided',inplace=True)

    return df
Esempio n. 25
0
def get_zips_list(center_zipcode, distance):
    # use the ZipCodeDatabase package to get a list of zipcodes within the provided radius
    try:
        zcdb = ZipCodeDatabase()
        zip_objects = zcdb.get_zipcodes_around_radius(center_zipcode, distance)
    except ZipNotFoundException:
        error = "Zip code not found. Please check your zip code and try again."
        return error

    # grab the .zip property from each returned zipcode object
    def get_zip(zipObj):
        return zipObj.zip

    return list(map(get_zip, zip_objects))
Esempio n. 26
0
def findCoordinates():
    try:
        zcdb = ZipCodeDatabase()
        code = int(sys.argv[1])
        nomi = zcdb[code]
        URL = "http://127.0.0.1:" + sys.argv[3] + "/fetchdata"
        obj = {
            "latitude": nomi.latitude,
            "longitude": nomi.longitude,
            "username": sys.argv[2]
        }
        res = requests.post(URL, data=obj)
        print(obj)
    except:
        raise TypeError("Only integers are allowed")
Esempio n. 27
0
def getWeather(location):
    if location.isdigit():
        zipData = ZipCodeDatabase()
        zipCode = zipData[int(location)]
        location = zipCode.city
        units = lower(
            raw_input(
                "What units would you like the temperatur in? ('c' or 'metric' for example): "
            ))
        if units == 'f':
            units = 'imperial'
        elif units == 'c':
            units = 'metric'
        check_units(units)
        country = "us"
    else:
        location = quote(location)
        units = raw_input(
            "What units would you like the temperature in? You may choose 'imperial' or 'metric': "
        )
        check_units(units)
        country = raw_input(
            "Please enter the name of country this city is located in. You may also enter its common two letter abbreviation. (Ex: Fr = France, JP = Japan, US = United States: "
        )
    cnt = raw_input(
        "How many days would you like the forecast for? Please enter a number between 1 and 14: "
    )
    while cnt > 14 and cnt < 1:
        print "That is not a valid entry"
        cnt = raw_input("Please enter a number between 1 and 14: ")
    searchParam = "http://api.openweathermap.org/data/2.5/forecast/daily?q=" + location + "," + country + '&mode=xml&units=' + units + '&cnt=' + cnt
    weatherData = urllib2.urlopen(searchParam)
    rawData = str(weatherData.read())
    root = ET.fromstring(rawData)
    forecastHi = []
    forecastLo = []
    date = []
    if units == 'imperial':
        degreeUnit = 'F'
    else:
        degreeUnit = 'C'
    for time in root.iter('time'):
        date.append(time.attrib['day'])
    for temperature in root.iter('temperature'):
        forecastHi.append(temperature.attrib['max'])
    for temperature in root.iter('temperature'):
        forecastLo.append(temperature.attrib['min'])
    return location, degreeUnit, forecastHi, forecastLo, date
Esempio n. 28
0
def getCoords(zipcode):
    zcdb    = ZipCodeDatabase()
    search  = SearchEngine()

    try:
        entry   = zcdb[zipcode]
        tempZip = zipStruct(zipcode,
                            entry.latitude,
                            entry.longitude)
        return tempZip
    except IndexError:
        entry   = search.by_zipcode(zipcode)
        tempZip = zipStruct(zipcode,
                            entry.lat,
                            entry.lng)
        return tempZip
Esempio n. 29
0
def go():
    zcdb = ZipCodeDatabase()
    stateinput = request.args.get('query', '')
    everythingOK = True
    # try:
    #     everythingOK=True
    #     zips=zcdb.find_zip(state=stateinput)
    #     zips=[int(z.zip) for z in zips]
    # except:
    #     everythingOK=False

    if everythingOK:
        predict = Model_Run_22sep.main(stateinput)
    else:
        predict = 'Input not understood'
    # new= [render_template('go.html',query = item) for item in predicttown]
    return render_template('go.html', query=predict)
Esempio n. 30
0
def getzip(x):
    zcdb = ZipCodeDatabase()
    try:
        zipcode = zcdb[x]
        now = datetime.datetime.now()
        # '2016-07-31'
        startDate = now.strftime("%Y-%m-%d")
        #print startDate
        # zip = zipcode.zip
        city = zipcode.city
        state = zipcode.state
        long = zipcode.longitude
        lat = zipcode.latitude
        return lat, long, startDate, city, state
    except IndexError:
        zipcode = 'null'
        return zipcode