Include number of remaining seats in additional option json dump
authorMagnus Hagander <magnus@hagander.net>
Sun, 16 Sep 2018 20:52:33 +0000 (22:52 +0200)
committerMagnus Hagander <magnus@hagander.net>
Sun, 16 Sep 2018 20:52:33 +0000 (22:52 +0200)
postgresqleu/confreg/backendviews.py

index 092417cdc7afc2a573db06764606b75e8f062a10..4d91f99bfffcb0c7c43bdd02a19efd08dac463e0 100644 (file)
@@ -642,8 +642,8 @@ def tokendata(request, urlname, token, datatype, dataformat):
                writer.columns(headers, True)
                writer.write_rows(data)
        elif datatype == 'addopts':
-               writer.columns(['Option', 'Confirmed', 'Unconfirmed'])
-               writer.write_query("SELECT ao.name, count(payconfirmedat) AS confirmed, count(r.id) FILTER (WHERE payconfirmedat IS NULL) AS unconfirmed FROM confreg_conferenceadditionaloption ao LEFT JOIN confreg_conferenceregistration_additionaloptions rao ON rao.conferenceadditionaloption_id=ao.id LEFT JOIN confreg_conferenceregistration r ON r.id=rao.conferenceregistration_id WHERE ao.conference_id=%(confid)s GROUP BY ao.id ORDER BY ao.name", {'confid': conference.id})
+               writer.columns(['Option', 'Confirmed', 'Unconfirmed', 'Remaining'])
+               writer.write_query("SELECT ao.name, count(payconfirmedat) AS confirmed, count(r.id) FILTER (WHERE payconfirmedat IS NULL) AS unconfirmed, CASE WHEN maxcount>0 THEN maxcount ELSE NULL END-count(r.id) AS remaining FROM confreg_conferenceadditionaloption ao LEFT JOIN confreg_conferenceregistration_additionaloptions rao ON rao.conferenceadditionaloption_id=ao.id LEFT JOIN confreg_conferenceregistration r ON r.id=rao.conferenceregistration_id WHERE ao.conference_id=%(confid)s GROUP BY ao.id ORDER BY ao.name", {'confid': conference.id})
        else:
                raise Http404()