from postgresqleu.mailqueue.util import send_mail, send_simple_mail, send_template_mail, template_to_string
from postgresqleu.util.jsonutil import JsonSerializer
from postgresqleu.util.db import exec_to_dict, exec_to_grouped_dict, exec_to_keyed_dict
-from postgresqleu.util.db import exec_no_result, exec_to_list, exec_to_scalar
+from postgresqleu.util.db import exec_no_result, exec_to_list, exec_to_scalar, conditional_exec_to_scalar
from decimal import Decimal
from operator import itemgetter
'unconfirmed_speakers': exec_to_scalar("SELECT EXISTS (SELECT 1 FROM confreg_conferencesession_speaker css INNER JOIN confreg_conferencesession s ON css.conferencesession_id=s.id WHERE s.conference_id=%(confid)s AND s.status=3)", {'confid': conference.id}),
'sessions_noroom': exec_to_scalar("SELECT EXISTS (SELECT 1 FROM confreg_conferencesession s WHERE s.conference_id=%(confid)s AND s.status=1 AND s.room_id IS NULL)", {'confid': conference.id}),
'sessions_notrack': exec_to_scalar("SELECT EXISTS (SELECT 1 FROM confreg_conferencesession s WHERE s.conference_id=%(confid)s AND s.status=1 AND s.track_id IS NULL)", {'confid': conference.id}),
+ 'pending_sessions': conditional_exec_to_scalar(conference.scheduleactive, "SELECT EXISTS (SELECT 1 FROM confreg_conferencesession s WHERE s.conference_id=%(confid)s AND s.status=0)", {'confid': conference.id}),
}, RequestContext(request))
@login_required
# If the query returns no rows at all, then just return None
return None
+def conditional_exec_to_scalar(condition, query, params=None):
+ if condition:
+ return exec_to_scalar(query, params)
+ else:
+ return False
+
def exec_to_keyed_dict(query, params=None):
curs = connection.cursor()
curs.execute(query, params)
<div class="col-md-3 col-sm-6 col-xs-12 buttonrow"><a class="btn {%if unregistered_speakers%}btn-warning{%else%}btn-default{%endif%} btn-block" href="/events/{{c.urlname}}/reports/simple/?report=unregspeaker">Unregistered speakers</a></div>
<div class="col-md-3 col-sm-6 col-xs-12 buttonrow"><a class="btn {%if unregistered_staff%}btn-warning{%else%}btn-default{%endif%} btn-block" href="/events/{{c.urlname}}/reports/simple/?report=unregstaff">Unregistered staff</a></div>
<div class="col-md-3 col-sm-6 col-xs-12 buttonrow"><a class="btn {%if unconfirmed_speakers%}btn-warning{%else%}btn-default{%endif%} btn-block" href="/events/{{c.urlname}}/reports/simple/?report=unconfirmspeaker">Unconfirmed speakers</a></div>
- <div class="col-md-3 col-sm-6 col-xs-12 buttonrow"><a class="btn btn-default btn-block" href="/events/{{c.urlname}}/reports/simple/?report=sessionstatus">Session status statistics</a></div>
+ <div class="col-md-3 col-sm-6 col-xs-12 buttonrow"><a class="btn {%if pending_sessions%}btn-warning{%else%}btn-default{%endif%} btn-block" href="/events/{{c.urlname}}/reports/simple/?report=sessionstatus">Session status statistics</a></div>
{%if c.asktshirt%}
<div class="col-md-3 col-sm-6 col-xs-12 buttonrow"><a class="btn btn-default btn-block" href="/events/{{c.urlname}}/reports/simple/?report=tshirtsizes">T-Shirt size distribution</a></div>
{%endif%}