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