def recieve(request): message = request.POST['message'] response, created = Response.objects.get_or_create(message = message) if created: response.save() message = clockwork.SMS( to = '6786974205', message = message) api.send(message) response = json_response({'channel':response.pk}) else: response = json_response({'reply': reponse.reply}) return response
def parse(arguments, method): name = arguments['name'] if method == 'GET': n = None while not n: matches = service.find_similar({'tokens':re.findall(r"[\w']+", name)},.9) if len(matches): n = Node.objects.get(pk=matches[0][0]) else: matches = service.find_similar({'tokens':re.findall(r"[\w']+",name)},.8) if len(matches): n = Node.objects.get(pk=matches[0][0]) else: log.debug('%s not found' % name) n = Node.objects.get(title='idk') while n.content[0:3] == '-->': if n.content[3:5] == '*.': if Tag.objects.filter(title=n.content[5:]).exists(): tag = Tag.objects.get(title=n.content[5:]) if tag.node_set.all().exists(): n = choice(tag.node_set.all()) else: if Node.objects.filter(title=n.content[3:]).exists(): n = Node.objects.get(title=n.content[3:]) if not n: log.debug('%s not found' % name) n = Node.objects.get(title='idk') context = {'reply': parse_content(n.content, 'display'), 'title':n.title} return json_response(context), n
def tell(arguments, method): name = arguments['name'] if method == 'GET': n = None location = '' if arguments.has_key('location'): location = arguments['location'] while not n: if Node.objects.filter(title=location+':'+name).exists(): n = Node.objects.get(title=location+':'+name) elif ':' in location: location_array = location.split(":") location= ":".join(location_array[:-1]) else: if Node.objects.filter(title=name).exists(): n = Node.objects.get(title=name) else: log.debug('%s not found' % name) n = Node.objects.get(title='idk') while n.content[0:3] == '-->': if n.content[3:5] == '*.': if Tag.objects.filter(title=n.content[5:]).exists(): tag = Tag.objects.get(title=n.content[5:]) if tag.node_set.all().exists(): n = choice(tag.node_set.all()) else: if Node.objects.filter(title=n.content[3::]).exists(): n = Node.objects.get(title=n.content[3::]) else: log.debug('%s not found' % name) n = Node.objects.get(title='idk') context = {'reply': parse_content(n.content, 'display'), 'title':n.title} return json_response(context), n
def logout_wrapper(arguments, method): if arguments['request'].user.is_authenticated(): if method=='GET': logout(arguments['request']) context = {'reply':'You\'ve been logged out successfully. Have a good day.'} return json_response(context) else: return tell({'name':'idk'}, 'GET')[0]
def compare(request, key): #gif_num = Gif.objects.count() if request.META['REQUEST_METHOD'] == 'GET': context = {} category = Category.objects.get(pk = key) nominees = list(Nominee.objects.all().filter(category=category)) rand_int = random.randint(0, len(nominees)-1) context['nominee1'] = nominees[rand_int].build_nominee_dict() del nominees[rand_int] context['nominee2'] = nominees[random.randint(0, len(nominees)-1)].build_nominee_dict() return json_response(context) elif request.META['REQUEST_METHOD'] == 'POST': win_nominee=Nominee.objects.get(pk=request.POST['win_nominee']) lose_nominee=Nominee.objects.get(pk=request.POST['lose_nominee']) #Calculate new RD c = 0.45 t = 600000 temp_win_rd = math.sqrt(math.pow(win_nominee.rating_deviation,2) + math.pow(c,2)*(timezone.now()-win_nominee.last_updated).seconds) if temp_win_rd >350: temp_win_rd = 350 temp_lose_rd = math.sqrt(math.pow(lose_nominee.rating_deviation,2) + math.pow(c,2)*(timezone.now()-lose_nominee.last_updated).seconds) if temp_lose_rd > 350: temp_lose_rd = 350 #Calculate new rating q = math.log(10)/400 g_win = 1/(math.sqrt(1+3*math.pow(q,2)*math.pow(temp_win_rd,2)/math.pow(math.pi,2))) g_lose = 1/(math.sqrt(1+3*math.pow(q,2)*math.pow(temp_lose_rd,2)/math.pow(math.pi,2))) e_win = 1/(1+math.pow(10,g_win*(float(win_nominee.rating)-float(lose_nominee.rating))/(-400))) e_lose = 1/(1+math.pow(10,g_lose*(float(lose_nominee.rating)-float(win_nominee.rating))/(-400))) d2_win = 1/(math.pow(q,2)*math.pow(g_win,2)*e_win*(1-e_win)) d2_lose = 1/(math.pow(q,2)*math.pow(g_lose,2)*e_win*(1-e_lose)) win_nominee.rating = str(float(win_nominee.rating) + q/(math.pow(temp_win_rd,-2)+1/d2_win)*g_win*(1-e_win)) lose_nominee.rating = str(float(lose_nominee.rating) + q/(math.pow(temp_lose_rd,-2)+1/d2_lose)*g_lose*(0-e_lose)) #Calculate final RD win_nominee.rating_deviation = str(math.pow((math.pow(temp_win_rd,-2)+1/d2_win),-0.5)) lose_nominee.rating_deviation = str(math.pow((math.pow(temp_lose_rd,-2)+1/d2_lose),-0.5)) #save win_nominee.save() lose_nominee.save() return json_response({'success':True})
def categories(request): if request.META['REQUEST_METHOD'] == 'GET': categories = Category.objects.all() return render(request, 'bestof/categories.html', {'categories': categories}) elif request.META['REQUEST_METHOD'] == 'POST': category = Category(title = request.POST['title'], caption = request.POST['caption']) category.save() return json_response({'category': category.build_category_dict()})
def nominees(request, key): if request.META['REQUEST_METHOD'] == 'GET': context = {} context['category'] = Category.objects.get(pk = key) context['nominees'] = sorted(context['category'].nominee_set.all(), key=lambda nominee: nominee.rating) return render(request, 'bestof/list.html', context) elif request.META['REQUEST_METHOD'] == 'POST': nominee = Nominee(title = request.POST['title'], category = Category.objects.get(pk = key)) nominee.save() return json_response({'nominee': nominee.build_nominee_dict()})
def login_wrapper(arguments, method): if method == 'GET': context = {'form': {'username':'', 'password':''}} elif method == 'POST': user = authenticate(username=arguments['username'],password=arguments['password']) if user: login(arguments['request'],user) context = {'reply':'Welcome, %s.' % user.username} else: context = {'reply':'I could not find anyone with that combination of username and password. Please try again.'} return json_response(context)
def delete(arguments, method): if arguments['is_authenticated']: if method == 'POST': n = Node.objects.get(title=arguments['name']) tag_list = n.tags.all() for tag in tag_list: if not len(tag.node_set.all()): tag.delete() n.delete() context = {} context['reply'] = 'Thank you. %s has been removed from the archives.' % arguments['name'] return json_response(context) else: return tell({'name':'idk'}, 'GET')[0]
def edit_tags(arguments, method): if arguments['is_authenticated']: n = Node.objects.get(title=arguments['name']) if method == 'GET': tags = '' for tag in n.tags.all(): tags += tag.title + ', ' tags = tags[0:-2] context = {} context['reply'] = 'Please edit the tags below.' context['form'] = {'tags':tags} elif method == 'POST': n.set_tags(arguments['tags']) context = {} context['reply'] = 'Thank you. The tags for %s have been updated.' % arguments['name'] return json_response(context) else: return tell({'name':'idk'}, 'GET')[0]
def edit(arguments, method): if arguments['is_authenticated']: name = arguments['name'] n = Node.objects.get_or_create(title=name)[0] if method == 'GET': context = {} context['reply'] = 'Please make your changes.' context['form'] = {'content':parse_content(n.content, 'edit'), 'name':n.title} elif method == 'POST': n.content = parse_content(arguments['content'],'edit') n.title = arguments['new_name'] n.save() context = {} context['reply'] = 'Thank you. Your revisions to %s have been recorded.' % name return json_response(context) else: return tell({'name':'idk'}, 'GET')[0]