Exemplo n.º 1
0
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    
Exemplo n.º 2
0
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
Exemplo n.º 3
0
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
Exemplo n.º 4
0
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]
Exemplo n.º 5
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})
Exemplo n.º 6
0
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()})
Exemplo n.º 7
0
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()})
Exemplo n.º 8
0
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)    
Exemplo n.º 9
0
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]
Exemplo n.º 10
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]
Exemplo n.º 11
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]