Make it possible to clear a voucher code from a registration
authorMagnus Hagander <magnus@hagander.net>
Tue, 17 Jul 2018 14:46:51 +0000 (16:46 +0200)
committerMagnus Hagander <magnus@hagander.net>
Tue, 17 Jul 2018 14:46:51 +0000 (16:46 +0200)
For example, if somebody is "hogging" a code without proceeding to
finish their registration, make it possible to clear a code from the
registratino without resorting to superuser editing.

A code can only be removed if the registration does not have an invoice
or bulk payment (of course).

postgresqleu/confreg/views.py
postgresqleu/urls.py
template/confreg/admin_registration_single.html

index 9c217e9301e35451cd92fd688d550b61834264fe..950fb53115e04205734ea7001a93985a3c4dcffb 100644 (file)
@@ -2605,6 +2605,19 @@ def admin_registration_cancel(request, urlname, regid):
                        'helplink': 'waitlist',
                })
 
+@transaction.atomic
+def admin_registration_clearcode(request, urlname, regid):
+       conference = get_authenticated_conference(request, urlname)
+
+       reg = get_object_or_404(ConferenceRegistration, id=regid, conference=conference)
+       if reg.has_invoice():
+               messages.warning(request, "Cannot clear the code from a registration with an invoice")
+       else:
+               messages.info(request, "Removed voucher code '{0}'".format(reg.vouchercode))
+               reg.vouchercode = ""
+               reg.save()
+       return HttpResponseRedirect("../")
+
 @transaction.atomic
 def admin_waitlist(request, urlname):
        conference = get_authenticated_conference(request, urlname)
index bf178dc926de00d3cdd9a96e632699e1b2fbe2ae..0218330daaa8aab08f2c936f1fed15d9816230b1 100644 (file)
@@ -128,6 +128,7 @@ urlpatterns = [
        url(r'^events/admin/(\w+)/regdashboard/list/(\d+)/$', postgresqleu.confreg.views.admin_registration_single),
        url(r'^events/admin/(\w+)/regdashboard/list/(\d+)/edit/$', postgresqleu.confreg.backendviews.edit_registration),
        url(r'^events/admin/(\w+)/regdashboard/list/(\d+)/cancel/$', postgresqleu.confreg.views.admin_registration_cancel),
+       url(r'^events/admin/(\w+)/regdashboard/list/(\d+)/clearcode/$', postgresqleu.confreg.views.admin_registration_clearcode),
        url(r'^events/admin/(\w+)/prepaid/$', postgresqleu.confreg.views.createvouchers),
        url(r'^events/admin/(\w+)/prepaid/list/$', postgresqleu.confreg.views.listvouchers),
        url(r'^events/admin/(\w+)/prepaid/(\d+)/$', postgresqleu.confreg.views.viewvouchers),
index f92979ffbe28858a24f51cb5d554bd253fdc8f58..100138ab4fe0c4cf1c078df5c7bc7ee3fab42f40 100644 (file)
 {%endif%}
  <tr>
   <td>Voucher/discount code used</td>
-  <td>{{reg.vouchercode}}</td>
+  <td>{{reg.vouchercode}}{%if reg.vouchercode and not reg.has_invoice%}<form class="pull-right" method="post" action="clearcode/">{%csrf_token%}<input type="submit" class="btn btn-default btn-sm" value="Clear code"></form>{%endif%}</td>
  </tr>
  <tr>
   <td>Payment method</td>