Пример #1
0
 def get_result_json():
     """Basically fetch all indicators as per the map level info
     :return:
     """
     indicator_details = {}
     country = Location.country()
     if hasattr(settings, 'MAP_ADMIN_LEVEL'):
         location_type = country.get_descendants()[settings.MAP_ADMIN_LEVEL - 1]
     else:
         location_type = LocationType.largest_unit()
     if report_level is None:
         lreport_level = location_type.level
     else:
         lreport_level = report_level
     for indicator in indicators:
         indicator_df = indicator.get_data(country, report_level=lreport_level).fillna(0)
         indicator_df.index = indicator_df.index.str.upper()
         indicator_details[indicator.name] = indicator_df.transpose(
         ).to_dict()
     return json.dumps(indicator_details, cls=DjangoJSONEncoder)
Пример #2
0
def home(request):
    map_filter = MapFilterForm(request.GET)
    in_kwargs = {'display_on_dashboard': True}
    if request.GET.get('survey'):
        in_kwargs['survey__id'] = request.GET['survey']
    display_indicators = Indicator.objects.filter(**in_kwargs).order_by('name')
    return render(request,
                  'home/index.html',
                  {'surveys': Survey.objects.all().order_by('name'),
                   'title': settings.PROJECT_TITLE,
                   'twitter_token': settings.TWITTER_TOKEN,
                   'twitter_url': settings.TWITTER_URL,
                   'map_filter': map_filter,
                   'shape_file_uri': settings.SHAPE_FILE_URI,
                   'loc_field': settings.SHAPE_FILE_LOC_FIELD,
                   'alt_loc_field': settings.SHAPE_FILE_LOC_ALT_FIELD,
                   'map_center': settings.MAP_CENTER,
                   'zoom_level': settings.MAP_ZOOM_LEVEL,
                   'display_indicators': display_indicators,
                   'indicator_reports_field': Indicator.REPORT_FIELD_NAME,
                   'country': Location.country()})
Пример #3
0
def home(request):
    map_filter = MapFilterForm(request.GET)
    in_kwargs = {'display_on_dashboard': True}
    if request.GET.get('survey'):
        in_kwargs['survey__id'] = request.GET['survey']
    display_indicators = Indicator.objects.filter(**in_kwargs).order_by('name')
    return render(
        request, 'home/index.html', {
            'surveys': Survey.objects.all().order_by('name'),
            'title': settings.PROJECT_TITLE,
            'twitter_token': settings.TWITTER_TOKEN,
            'twitter_url': settings.TWITTER_URL,
            'map_filter': map_filter,
            'shape_file_uri': settings.SHAPE_FILE_URI,
            'loc_field': settings.SHAPE_FILE_LOC_FIELD,
            'alt_loc_field': settings.SHAPE_FILE_LOC_ALT_FIELD,
            'map_center': settings.MAP_CENTER,
            'zoom_level': settings.MAP_ZOOM_LEVEL,
            'display_indicators': display_indicators,
            'indicator_reports_field': Indicator.REPORT_FIELD_NAME,
            'country': Location.country()
        })
Пример #4
0
def add_locations_to_db_csv(filename):
    with open(filename, 'rb') as locations_file:
        csv_reader = csv.reader(locations_file)
        
        is_first_row = True 
        for provider in csv_reader:
            if is_first_row:
                is_first_row = False
                continue

            if provider[2]:
                address2_string = str(provider[2])
            else:
                address2_string = ''

            try:
                location = Location.objects.get(name=str(provider[0]), address1=str(provider[1]), address2=address2_string, city=str(provider[3]), state=str(provider[4]), zip_code=str(provider[5])) 
            except Location.DoesNotExist:
                location = Location()

            location.name = str(provider[0])
            location.address1 = str(provider[1])
            if provider[2]:
                location.address2 = str(provider[2])
            location.city = str(provider[3])
            location.state = str(provider[4])
            location.zip_code = str(provider[5])
            if provider[6]:
                location.cross_street = str(provider[6])
            location.phone = str(provider[9])
            location.url = str(provider[7])
            if provider[8]:
                location.url_caption = str(provider[8])
            if provider[10]:
                location.description = str(provider[10])
            location.is_result = True 

            if not provider[11] or not provider[12]:
                geocoder =  geocoders.Google()
                provider_loc_string = str(provider[1]) + ' '
                if provider[2]:
                    provider_loc_string += str(provider[2]) + ' '
                provider_loc_string += str(provider[3]) + ' ' + str(provider[5])
                try:
                    place, (lat, lng) = geocoder.geocode(provider_loc_string)
                    location.latitude = lat
                    location.longitude = lng
                except Exception as exception:
                    logger.error('Location: ' + location.name + ' failed to be geocoded. Skipping this location. Error is: ' + str(exception))
                    continue
            else:
                location.latitude = float(provider[11])
                location.longitude = float(provider[12])

            print "adding " + location.name + location.city + location.zip_code
            location.save()
Пример #5
0
def addLocationsToDB_json(filename):
    json_data = open(filename).read()
    data = json.loads(json_data)
    
    providers = data['providers']
    
    for provider in providers:
        if provider['address2']:
            address2_string = provider['address2']
        else:
            address2_string = ''

        try:
            location = Location.objects.get(name=provider['name'], address1=provider['address1'], address2=address2_string, city=provider['city'], state=provider['state'], zip_code=provider['zip']) 
        except Location.DoesNotExist:
            location = Location()

        location.name = provider['name']
        location.address1 = provider['address1']
        if provider['address2']:
            location.address2 = provider['address2']
        location.city = provider['city']
        location.state = provider['state']
        location.zip_code = provider['zip']
        if provider['crossStreet']:
            location.cross_street = provider['crossStreet']
        location.phone = provider['phone']
        location.url = provider['url']
        if provider['urlCaption']:
            location.url_caption = provider['urlCaption']
        if provider['description']:
            location.description = provider['description']
        location.is_result = True 

        if not ('lat' in provider and 'lon' in provider):
            geocoder =  geocoders.Google()
            provider_loc_string = provider['address1'] + ' '
            if provider['address2']:
                provider_loc_string += provider['address2'] + ' '
            provider_loc_string += provider['city'] + ' ' + provider['zip']
            try:
                place, (lat, lng) = geocoder.geocode(provider_loc_string)
                location.latitude = lat
                location.longitude = lng
            except Exception as exception:
                logger.error('Location: ' + location.name + ' failed to be geocoded. Skipping this location. Error is: ' + str(exception))
                continue
        else:
            location.latitude = provider['lat']
            location.longitude = provider['lon']

        location.save()
Пример #6
0
def get_and_save_location_from_provider_dict(provider):
    address2_string = ''
    if provider['address2']:
       address2_string = provider['address2']
    try:
        location = Location.objects.get(name=provider['name'], address1=provider['address1'], address2=address2_string, city=provider['city'], state=provider['state'], zip_code=provider['zip']) 
    except Location.DoesNotExist:
        location = Location()

    location.latitude = provider['lat']
    location.longitude = provider['lon']
    location.name = provider['name']
    location.address1 = provider['address1']
    location.address2 = provider['address2']
    location.city = provider['city']
    location.state = provider['state']
    location.zip_code = provider['zip']
    location.phone = provider['phone']
    location.url = provider['url']
    location.url_caption = provider['urlCaption']
    location.cross_street = provider['crossStreet']
    location.description = provider['description']

    location.save()
    return location