@transaction.atomic
def talkvote(request, confname):
conference = get_object_or_404(Conference, urlname=confname)
- if not conference.talkvoters.filter(pk=request.user.id):
+ if not conference.talkvoters.filter(pk=request.user.id) and not conference.administrators.filter(pk=request.user.id):
return HttpResponse('You are not a talk voter for this conference!')
+ isvoter = conference.talkvoters.filter(pk=request.user.id).exists()
isadmin = conference.administrators.filter(pk=request.user.id).exists()
alltracks = [{'id': t.id, 'trackname': t.trackname} for t in Track.objects.filter(conference=conference)]
'users': getusernames(all),
'sessionvotes': transform(all),
'conference': conference,
+ 'isvoter': isvoter,
'isadmin': isadmin,
'status_choices': STATUS_CHOICES,
'tracks': alltracks,
<td>{{s.status}}</td>
{%endif%}
{%for u in s.users%}
- <td{%if u|default_if_none:0 == 0%} style="background-color:red"{%endif%}>{%if forloop.first %}
+ <td{%if u|default_if_none:0 == 0%} style="background-color:red"{%endif%}>{%if forloop.first and isvoter %}
<select id="sv_{{s.id}}" onChange="castVote({{s.id}})">
{%for opt in "0123456789"|make_list%}
<option value="{{opt}}"{%if opt|add:0 == u|add:0%} SELECTED{%endif%}>{{opt}}</option>
{%endfor%}
<td class="avgbox">{{s.avg|default_if_none:''}}</td>
<td>
+{%if isvoter%}
<div style="margin-right: 0.5em; float:left;">
<a class="btn btn-default btn-xs" href="javascript:editComment({{s.id}})"><span class="glyphicon glyphicon-pencil" aria-hidden="true"></span></a>
</div>
+{%endif%}
<div style="display:inline-block;">
<span id="owncommentwrap_{{s.id}}" style="display:{%if s.owncomment%}block{%else%}none{%endif%}">{{user.username}}: <span id="owncomment_{{s.id}}">{{s.owncomment}}</span></span>{{s.comments|safe}}
</div>