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")
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))
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))