Esempio n. 1
0
def get_villages_with_images(request):
    #if request.is_ajax()-with:
    village_list = get_id_with_images.get_village_list()
    village_details = []
    district_lat_lng = {10000000000030:["Hassan", "13.0000", "76.1000"], 10000000000005:["Khunti", "23.0800", "85.2800"], 10000000000004:["West Singhbum", "22.5700", "85.8200"], 10000000000008:["Dharwad","15.4649","75.0030"], 
                        10000000000014:["Mayurbhanj","21.7800","85.9700"], 10000000000017:["Belgaum","15.8700","74.5000"],
                        10000000000023: ["Koraput", "19.0000", "83.0000"], 10000000000024: ["Keonjhar", "21.6300","85.5800"],
                        10000000000025: ["Barwani", "22.0300","74.9000"], 10000000000027:[ "Ujjain", "23.1828","75.7772"],
                        10000000000028:["Mysore", "12.3024","76.6386"], 10000000000033:["Mahabubnagar", "16.7300","77.9800"],
                        10000000000035:["Munger", "25.3800", "86.4700"], 10000000000021:["Rajgarh", "22.6800", "74.9500"]}
    village_lat_lng = {47000040575:["12.2475", "76.249722", "Kudluru lakshmipura"], 
                       47000062452:["12.37", "76.337778", "Thondalu"], 
                       47000001044:["12.310833", "76.252778", "Yashodharapura"]}
    for i in village_list:
        vil_details = Village.objects.filter(id = i).values_list('id', 'village_name', 
                                                                 'block__district__id', 'grade')
        district_id = District.objects.get(id = vil_details[0][2]).old_coco_id
        try:
            if district_lat_lng[district_id]:
                district_lat= float(district_lat_lng[district_id][1])
                district_lng = float(district_lat_lng[district_id][2])
        except:
            district_lat = float(22.5700)
            district_lng = float(85.8200)
        #vincenty's formula to calculate lats and lngs in range of 50 km
        angle = 50 * 0.0089833458;
        random_lat = "%.4f" % random.uniform(district_lat - angle, district_lat + angle)
        random_lng = "%.4f" % random.uniform(district_lng - angle, district_lng + angle)
        try:
            old_coco_id = Village.objects.get(id = i).old_coco_id
            if village_lat_lng[old_coco_id]:
                random_lat = village_lat_lng[old_coco_id][0]
                random_lng = village_lat_lng[old_coco_id][1]
        except:
            pass
        village_details.append({"id":i, "name": vil_details[0][1], "latitude":random_lat, 
                                "longitude": random_lng, "grade": vil_details[0][3]})
    
    return HttpResponse(json.dumps(village_details), mimetype="application/json")
Esempio n. 2
0
def get_partner_page(request):
        
    partner_id = int(request.GET['partner_id'])
    
    try:
        partner_id = Partner.objects.get(id = partner_id).id
    except:
        partner_id = Partner.objects.get(old_coco_id = partner_id).id
        
    site_link = defaultdict(lambda:[0])
    site_link[10000000000001][0] = "http://www.pradan.net/"
    site_link[10000000000002][0] = "http://www.baif.org.in/aspx_pages/index.asp"
    site_link[10000000000003][0] = "http://greenconserve.com/"
    site_link[10000000000004][0] = "http://www.samprag.org/"
    site_link[10000000000007][0] = "http://www.accessdev.org/"
    site_link[10000000000008][0] = "http://www.asaindia.org/"
    site_link[10000000000009][0] = "http://www.pragatikoraput.org/pragatikoraput/"
    site_link[10000000000010][0] = "http://www.ngogateway.org/user_homepage/index.php?id=239"
    site_link[10000000000011][0] = "http://www.serp.ap.gov.in/SHG/index.jsp"
    site_link[10000000000013][0] = "http://brlp.in/"
    
    
    #left panel stats dict hold values related to left panel of village page
    left_panel_stats = {} 
    left_panel_stats['site_link'] = site_link[Partner.objects.get(id = partner_id).old_coco_id][0]
    left_panel_stats['partner_details'] = Partner.objects.filter(id= partner_id).values_list('id',
                                                                                              'partner_name',
                                                                                              'person__village__block__district__state__state_name',
                                                                                              'person__village__block__district__id',
                                                                                              'date_of_association',
                                                                                              'person__village__block__district__district_name')

    partner_district = set(i[3] for i in left_panel_stats['partner_details'])
    left_panel_stats['assigned_states'] = set(i[2] for i in left_panel_stats['partner_details'])
    left_panel_stats['assigned_districts'] = set(i[5] for i in left_panel_stats['partner_details'])
    left_panel_stats['total_adoptions'] = PersonAdoptPractice.objects.filter(partner_id=partner_id).count()
    left_panel_stats['farmers'] = Person.objects.filter(partner_id=partner_id).count()
    left_panel_stats['number_villages'] = len(Village.objects.filter(person__partner_id=partner_id).distinct())

    left_panel_stats['Screenings'] = Screening.objects.filter(partner_id=partner_id).count()
    if(left_panel_stats['Screenings']):
        months = ((datetime.date.today() - left_panel_stats['partner_details'][0][4]).days)/30.0
        left_panel_stats['rate'] =  left_panel_stats['Screenings'] / months
        left_panel_stats['pbar_width'] =  left_panel_stats['rate'] / 10.0
    else:
        left_panel_stats['rate'] = 0
        left_panel_stats['pbar_width'] = 0
    left_panel_stats['photo_link'] = "http://s3.amazonaws.com/dg-farmerbook/partner/" + str(partner_id) + ".jpg"

    vill_id_list = get_id_with_images.get_village_list()
    top_vill = Village.objects.filter(id__in=vill_id_list,
                                      person__partner_id=partner_id).values('id').annotate(num_screenings = Count('screening')).order_by('-num_screenings')[:10].values_list('id',
                                                                                                                                                                          'village_name',
                                                                                                                                                                          'num_screenings')


    id_list = get_id_with_images.get_partner_list()
    partner_stats_dict = defaultdict(lambda:[0, 0, 0, 0, 0, 0, 0, 0])
    other_partner_info = Partner.objects.filter(id__in = id_list).exclude(id = partner_id).values_list('id','partner_name','date_of_association')
    for partner_id,partner_name,startdate in other_partner_info:
        partner_stats_dict[partner_id][0] = partner_id
        partner_stats_dict[partner_id][1] = partner_name
        partner_stats_dict[partner_id][2] = Screening.objects.filter(partner_id=partner_id).count()
        if(startdate):
            partner_stats_dict[partner_id][3] = startdate
            months = ((datetime.date.today() - partner_stats_dict[partner_id][3]).days)/30.0
            partner_stats_dict[partner_id][4] = partner_stats_dict[partner_id][2] / months
            partner_stats_dict[partner_id][5] =  Animator.objects.filter(partner__id = partner_id).values('partner').annotate(tot = Sum('total_adoptions')).values_list('tot')[0][0]
        else:
            partner_stats_dict[partner_id][3] = ""
            partner_stats_dict[partner_id][4]= 0
            partner_stats_dict[partner_id][5]= 0
        partner_stats_dict[partner_id][6] = "http://s3.amazonaws.com/dg-farmerbook/partner/" + str(partner_id) + ".jpg"
        
    sorted_partner_list = sorted(partner_stats_dict.items(), key = lambda(k, v):(v[4],k), reverse=True)   
    
    top_related_stats = []
    for obj in sorted_partner_list:
            top_related_stats.append({'id': obj[1][0],
                                         'name': obj[1][1],
                                         'screenings': obj[1][2],
                                         'photo_link': obj[1][6],
                                         'rate': obj[1][4],
                                         'adoptions': obj[1][5],
                                         'ratewidth': (obj[1][4]/10.0),
                                         'start_date': obj[1][3]})
    
    return render_to_response('partner_page.html', dict(left_panel_stats = left_panel_stats , partner_stats = top_related_stats, top_vill = top_vill))
Esempio n. 3
0
def get_village_page(request):
    vil_id = int(request.GET['village_id'])
    try:
        village_id = Village.objects.get(id = vil_id).id
    except:
        village_id = Village.objects.get(old_coco_id = vil_id).id
    #left panel stats dict hold values related to left panel of village page
    left_panel_stats = {}
    farmerbook_farmers = Person.farmerbook_objects.all().values_list('id', flat=True)
    tot_farmers = PersonMeetingAttendance.objects.filter(person__village__id = village_id).values_list('person', flat = True).distinct().count()
    # print tot_farmers
    if tot_farmers:
        left_panel_stats['tot_farmers'] = tot_farmers
    else:
        left_panel_stats['tot_farmers'] = "0"
    left_panel_stats['videos_produced'] = Video.objects.filter(village__id = village_id).distinct().count()

    left_panel_stats['num_of_groups'] = PersonGroup.objects.filter(village__id = village_id).count()
    #group_id_list = get_id_with_images.get_group_list()
    left_panel_stats['vil_groups'] = PersonGroup.objects.filter(village__id = village_id, person__image_exists=1).distinct().values_list('id', 'group_name')
    left_panel_stats['partner'] = Partner.objects.filter(person__village__id = village_id).values_list('id', 'partner_name')
    left_panel_stats['service_provider'] = Animator.objects.filter(animatorassignedvillage__village__id = village_id).order_by('-id').values_list('id', 'name')[:1]
    left_panel_stats['vil_details'] = Village.objects.filter(id = village_id).values_list('id', 'village_name', 'block__district__district_name', 'block__district__state__state_name', 'start_date', 'grade')
    startdate = Person.objects.filter(village__id = village_id).annotate(sd = Min('date_of_joining')).values_list('sd', flat=True)
    if(startdate):
        left_panel_stats['start_date'] = startdate[0]
    else:
        left_panel_stats['start_date'] = ""    

    #rightpanel top contents
    vids_details = Video.objects.filter(screening__village__id = village_id).distinct().values_list('id','title', 'youtubeid')
    # print vids_details
    vids_id = set(i[0] for i in vids_details)
    left_panel_stats['tot_videos'] = len(vids_id)
    vid_adoptions = PersonAdoptPractice.objects.filter(person__village__id = village_id).values('video__id').annotate(
                                        num_of_adoptions = Count('id')).values_list('video__id', 'num_of_adoptions')
    scr = Screening.objects.filter(village__id = village_id).values_list('videoes_screened__id', 'questions_asked')
    #pma = PersonMeetingAttendance.objects.filter(screening__village__id = village_id).values_list('screening__videoes_screened__id')   
    vid_scr_atten = Screening.objects.filter(village__id = village_id).values('videoes_screened').annotate(num_scr = Count('id', distinct=True),
                                                                                                         atten=Count('farmers_attendance'),
                                                                                                         last_seen_date = Max('date'))
    question_count = 0
    vids_stats_dict = defaultdict(lambda:[0, 0, 0, 0, 0, 0])
    for l, m in scr:
        if(m != ""):
            vids_stats_dict[l][0] += 1
            question_count += 1
    left_panel_stats['tot_questions'] = question_count

    #videos_watched_stats contain list of dictionaries containing stats of video titles
    for vid_id in vid_scr_atten:
        vids_stats_dict[vid_id['videoes_screened']][2] =  vid_id['atten']
        vids_stats_dict[vid_id['videoes_screened']][3] =  vid_id['num_scr']
        vids_stats_dict[vid_id['videoes_screened']][4] =  vid_id['last_seen_date']
    
    total_adopt = 0
    for vid_id,num_adopt in vid_adoptions:
        vids_stats_dict[vid_id][1] = num_adopt
        total_adopt = total_adopt + num_adopt
        
    left_panel_stats['tot_adoptions'] = total_adopt
    #for progress bar below village picture
    left_panel_stats['screenings'] = Screening.objects.filter(village__id = village_id).count()
    if left_panel_stats['screenings'] > 0:
        left_panel_stats['adoption_rate'] = float(left_panel_stats['tot_adoptions']) /left_panel_stats['screenings']
        left_panel_stats['adoption_rate_width'] = (left_panel_stats['adoption_rate'] * 100)/5.0
    else:
        left_panel_stats['adoption_rate'] = 0
        left_panel_stats['adoption_rate_width'] = 0
    
    videos_watched_stats = []
    for obj in vids_details:
        stat_text = make_text_from_stats(obj,vids_stats_dict)
        videos_watched_stats.append({'id':obj[0], 'title':obj[1], 'youtubeid':obj[2], 
                                     'adopters':vids_stats_dict[obj[0]][1], 'last_seen_date':vids_stats_dict[obj[0]][4], 
                                     'questioners': vids_stats_dict[obj[0]][0], 'atten':vids_stats_dict[obj[0]][2], 'disseminations': vids_stats_dict[obj[0]][3],
                                     'fulltext': stat_text})
    sorted_list = sorted(videos_watched_stats, key=lambda k: k['last_seen_date'], reverse=True)
    #right panel bottom contents. Leader boards of related villages
    #get all persons from village who attended any screening in village

    id_list = get_id_with_images.get_village_list()
    views_dict = defaultdict(lambda:[0, 0, 0, 0, 0, 0, 0, 0])
    district_id = Village.objects.filter(id = village_id).values_list('block__district_id')
    related_info = Village.objects.filter(block__district__id = district_id, id__in = id_list).exclude(id = village_id).values('id').annotate(screenings = Count('screening')).values_list('id','village_name','screenings')
    for related_id in related_info:
        vil_id = related_id[0]
        views_dict[related_id[0]][0] = vil_id
        views_dict[related_id[0]][1] = related_id[1] 
        views_dict[related_id[0]][2] = related_id[2]
        views_dict[related_id[0]][3] = PersonAdoptPractice.objects.filter(person__village__id = vil_id).count()
        if views_dict[related_id[0]][2] == 0:
            views_dict[related_id[0]][4] = 0
        else:
            views_dict[related_id[0]][4] = float(views_dict[related_id[0]][3]) / views_dict[related_id[0]][2]
        views_dict[related_id[0]][5] = (views_dict[related_id[0]][4]* 100)/5.0 
        views_dict[related_id[0]][6] = "http://s3.amazonaws.com/dg-farmerbook/village/" + str(related_id[0])+ ".jpg"
        min_joining = Person.objects.filter(village__id = vil_id).annotate(startdate = Min('date_of_joining')).values_list('startdate', flat = True)
        if min_joining:
            views_dict[related_id[0]][7] = min_joining[0]
        else:
            views_dict[related_id[0]][7] = ""        
               
    # Sorting and limiting to 10 related CSP's
    sorted_list_stats = sorted(views_dict.items(), key = lambda(k, v):(v[5],k), reverse=True)
    top_related_list = sorted_list_stats[:10]
    return render_to_response('vil_page.html', dict(left_panel_stats = left_panel_stats, videos_watched_stats = sorted_list, top_related_list = top_related_list))