diff options
| author | Magnus Hagander | 2018-02-26 13:34:29 +0000 |
|---|---|---|
| committer | Magnus Hagander | 2018-02-26 13:34:29 +0000 |
| commit | 9d29bb2e18780d2d5a79df0ab74d8d91ead4091c (patch) | |
| tree | 6fd39a17ea2690e1e1bade6eb908fd33c1abb528 | |
| parent | 2669a9e1c48a1463ce0fab62144e86fd9e6be216 (diff) | |
Alert for sessions in Submitted state when schedule is public
We can't start alerting for sessions in submitted state all the time,
but once the schedule is public there should be no sessions in this
state (they should either be rejcted or pending), so highlight the
button at this time to make it clear.
| -rw-r--r-- | postgresqleu/confreg/views.py | 3 | ||||
| -rw-r--r-- | postgresqleu/util/db.py | 6 | ||||
| -rw-r--r-- | template/confreg/admin_dashboard_single.html | 2 |
3 files changed, 9 insertions, 2 deletions
diff --git a/postgresqleu/confreg/views.py b/postgresqleu/confreg/views.py index 74304a5a..7a82df65 100644 --- a/postgresqleu/confreg/views.py +++ b/postgresqleu/confreg/views.py @@ -51,7 +51,7 @@ from postgresqleu.invoices.models import InvoiceProcessor, InvoiceHistory 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 @@ -2372,6 +2372,7 @@ def admin_dashboard_single(request, urlname): '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 diff --git a/postgresqleu/util/db.py b/postgresqleu/util/db.py index 05d30b7d..93093938 100644 --- a/postgresqleu/util/db.py +++ b/postgresqleu/util/db.py @@ -25,6 +25,12 @@ def exec_to_scalar(query, params=None): # 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) diff --git a/template/confreg/admin_dashboard_single.html b/template/confreg/admin_dashboard_single.html index 7eae7b5f..c1967cab 100644 --- a/template/confreg/admin_dashboard_single.html +++ b/template/confreg/admin_dashboard_single.html @@ -44,7 +44,7 @@ <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%} |
