summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMagnus Hagander2018-02-26 13:34:29 +0000
committerMagnus Hagander2018-02-26 13:34:29 +0000
commit9d29bb2e18780d2d5a79df0ab74d8d91ead4091c (patch)
tree6fd39a17ea2690e1e1bade6eb908fd33c1abb528
parent2669a9e1c48a1463ce0fab62144e86fd9e6be216 (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.py3
-rw-r--r--postgresqleu/util/db.py6
-rw-r--r--template/confreg/admin_dashboard_single.html2
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%}