예제 #1
0
def music(request, lang):
    if not request.user.is_authenticated() or request.user.is_superuser:
        return HttpResponseRedirect('/%s/index?next=%s' % (lang,request.path))
    code = request.user.code
    log = AccessLog(code=code, page=request.path)
    log.save()

    submitted = False
    error = ''
    if request.method == 'POST':
        if request.POST.get('name'):
            try:
                music = Music(name=request.POST['name'],
                              url=request.POST['url'],
                              ranking=1)
                music.save()
                vote = Vote(code=code, music=music, vote=1)
                vote.save()
            except:
                errs = {'es': 'Ya hay un tema llamado "%s"',
                        'en': 'Somebody has already suggested "%s"'}
                error =  errs[lang] % music.name
            submitted = True
        elif request.POST.get('url'):
            errs = {'es': "El campo 'Tema' es obligatorio",
                    'en': "The 'Song' field is required."}
            error =  errs[lang]


    music = Music.objects.order_by('ranking').reverse()
    myvotes = Vote.objects.filter(code__exact=code)
    ms = {}
    for m in music:
        m.upped = False
        m.downed = False
        ms[m.pk] = m
    for v in myvotes:
        if v.vote > 0:
            ms[v.music.pk].upped = True
        elif v.vote < 0:
            ms[v.music.pk].downed = True
        else:
            raise ValueError("Found null vote (pk %d)" % v.pk)
    atts = {'lang': lang, 'spanish': lang=='es',
            'nametag': nTag(request),
            'sent_rsvp': request.user.code.sent_rsvp,
            'invited_to_party': request.user.code.invited_to_party,
            'error': error,
            'code': code.code, 'pays': code.pays,
            'music': music,
           }
    context = RequestContext(request, atts)

    return render_to_response('music.html', context)
예제 #2
0
def _vote(code, music_id, vote):
    music = get_object_or_404(Music, pk=music_id)
    votes = Vote.objects.filter(code__exact=code, music__exact=music)
    if len(votes) == 0:
        votes = {'up': 1, 'down': -1}
        result = votes[vote]
        vote = Vote(code=code, music=music, vote=result)
        vote.save()
        music.ranking += vote.vote
        music.save()
    else:
        for v in votes:
            music.ranking -= v.vote
            v.delete()
        result = 0
        music.save()
    return result, music.ranking