Esempio n. 1
0
def PersonMatchHandler(request):
	year = ""
	context = {}
	#fperson = {}
	#fscore = {'uid':request.user.get_profile(),'neveruse':False}
	fscore = {}
	prevvote = False
	if request.is_ajax():
		if request.method == 'GET':
			params = request.GET
			template = 'personvotingview.html'
			print params
		elif request.method == 'POST':
			params = request.POST
			winner = Person.objects.get(pid=params['winner'])
			loser = Person.objects.get(pid=params['loser'])
			prevvote = True
			
			userprofile = request.user.get_profile()
			ranks = CalculateRating('person',winner,loser,userprofile)
			template = 'personvotingview.html'
	else:
		params = request.GET
		template = "indexperson.html"
	
	results = Filters.setFromParams(request,params,'person')
	request.session['filtdict'] = results['filtdict']
	request.session['filtvalues'] = results['filtvalues']
	
	results = Filters.getPersonAndScoreFilters(request)
	fperson = results['fperson']
	fscore = results['fscore']
	topfperson = results['topfperson']
	
	
	if 'Food.objects.filter(tags__name__in=["delicious"])' in params:
		request.session['filtdict']['search'] = Person.objects.get(pid=params['search']).name
		request.session['search'] = params['search']
		
	##########################################
	#TEMPORARY UNTIL TAGGING GETS IMPLEMENTED
#	if 'cat' in params:
#		if params['cat'] == 'All Categories':
#			request.session['cat'] = None
#		else:
#			request.session['cat'] = params['cat']	
#	cat=None	
#	if request.session.get('cat') != None:
#		cat = PersonCategory.objects.get(gid=request.session.get('cat'))
#		context['cat'] = PersonTag.objects.get(slug=request.session.get('cat'))
#		request.session['filtdict']['cat'] = context['cat']
#		fperson['tags__slug'] = request.session.get('cat')
#		#fperson['cats__category']=cat.category
#	else:
#		context['cat'] = "All Categories"
	#############################################
	
	rematch = request.session['filtvalues']['rematch']
	if 'gametype' in request.session['filtdict'] and request.session['filtdict']['gametype'] == 'Close Matchup':
		close_matchup = True
	else:
		close_matchup = False
	
	if fscore != {}:
		fscore['uid'] = request.user.get_profile()
		fscore['neveruse'] = False
	
	print "fperson {} fscore {}".format(fperson, fscore)
	
	
	if 'gametype' in request.session['filtvalues'] and (request.session['filtvalues']['gametype']=='winner' or request.session['filtvalues']['gametype']=='loser') and request.method == 'POST':
		print "it was a post bitch"
		if request.session['filtvalues']['gametype'] == 'winner':
			person1 = winner
		elif request.session['filtvalues']['gametype'] == 'loser':
			person1 = loser
		person1mat = UserPersonScore.objects.get(uid=request.user.get_profile(),pid = person1)
		results = getOnePerson(fperson, fscore, rematch, person1,request.user.get_profile(),25)
		person2 = results['person']
		person2mat = results['matchup']
	elif 'p_lockedin' in request.session['filtvalues'] and request.session['filtvalues']['p_lockedin'] != None:
		print "lockedin"
		person1 = request.session['filtvalues']['p_lockedin']#Person.objects.get(pid = request.session['lockedin'])
		try:
			person1mat = UserPersonScore.objects.get(uid = request.user.get_profile(),pid=person1)
		except:
			person1mat = UserPersonScore(uid = request.user.get_profile(), pid=person1, elorating = 1000,numratings =0,wins=0,losses=0)
			person1mat.save()
		if close_matchup:
			results = getCloseOnePerson(fperson,fscore,rematch,person1,person1mat,request.user.get_profile())
		else:
			results = getOnePerson(fperson, fscore, rematch, person1, request.user.get_profile(),25)
		person2 = results['person']
		person2mat = results['matchup']
	else:
		print request.session['filtvalues']
		print "two people"
		people = getTwoPeople(fperson,fscore,rematch,request.user.get_profile(),25)		
		if people == None:
			person1 = None
			person2 = None
			person1mat = None
			person2mat = None
		else:
			person1 = people['1']
			person2 = people['2']
			person1mat = people['1mat']
			person2mat = people['2mat']
	if person1 == None or person2 == None:
		person1 = None
		person2 = None
		person1mat = None
		person1mat = None
		#return HttpResponse("NO PEOPLE")
	topfperson={}
	
	if 'popularity_rating__gte' in fperson:
		del fperson['popularity_rating__gte']
	
	for i in fperson:
		index = "pid__" + str(i)
		topfperson[index] = fperson[i]
	print topfperson
	top25 = UserPersonScore.objects.filter(uid=request.user.get_profile()).filter(**topfperson).order_by('elorating').reverse()
	if (top25.count()>25):
		top25 = top25[:25]
	
	if prevvote:
		context['ranks'] = ranks
	
	#t1 = time.time()
	
	#for i in range(1,1000):
	#	testtvshows = getTwoPeople(fperson,fscore,rematch,request.user.get_profile(),25)
	#t2 = time.time()
	
	#print "1000 2 people was {}".format(t2-t1)
	
	
	context['filters'] = request.session.get('filtdict')
	context['person1'] = person1
	context['person1mat'] = person1mat
	context['person2'] = person2
	context['person2mat'] = person2mat
	context['p_tag'] = Person.tags.most_common()
	context['lists'] = PersonList.objects.all()
	context['peoplebar'] = True
	
	if person1 != None and person1.images>0:
		print person1.images
		context['person1ran'] = random.randint(1,person1.images)
	if person2 != None and person2.images>0:
		context['person2ran'] = random.randint(1,person2.images)
	context['top20'] =  top25
	
	
	message = render_to_response(template, context,
		context_instance=RequestContext(request))
	return HttpResponse(message)