pretixdroid: force-accepting unpaids and time display

This commit is contained in:
Raphael Michel
2017-05-04 11:57:29 +02:00
parent d8eba81efc
commit db05f8eaa3
2 changed files with 21 additions and 6 deletions
+19 -4
View File
@@ -1,6 +1,7 @@
import json import json
import dateutil.parser import dateutil.parser
import pytz
from django.core.urlresolvers import resolve, reverse from django.core.urlresolvers import resolve, reverse
from django.dispatch import receiver from django.dispatch import receiver
from django.utils.formats import date_format from django.utils.formats import date_format
@@ -34,17 +35,31 @@ def pretixcontrol_logentry_display(sender, logentry, **kwargs):
return return
data = json.loads(logentry.data) data = json.loads(logentry.data)
show_dt = False
if 'datetime' in data:
dt = dateutil.parser.parse(data.get('datetime'))
show_dt = abs((logentry.datetime - dt).total_seconds()) > 60 or 'forced' in data
tz = pytz.timezone(sender.settings.timezone)
dt_formatted = date_format(dt.astimezone(tz), "SHORT_DATETIME_FORMAT")
if data.get('first'): if data.get('first'):
return _('Position #{posid} has been scanned.'.format( if show_dt:
posid=data.get('positionid') return _('Position #{posid} has been scanned at {datetime}.').format(
)) posid=data.get('positionid'),
datetime=dt_formatted
)
else:
return _('Position #{posid} has been scanned.').format(
posid=data.get('positionid')
)
else: else:
if data.get('forced'): if data.get('forced'):
return _( return _(
'A scan for position #{posid} at {datetime} has been uploaded even though it has ' 'A scan for position #{posid} at {datetime} has been uploaded even though it has '
'been scanned already.'.format( 'been scanned already.'.format(
posid=data.get('positionid'), posid=data.get('positionid'),
datetime=date_format(dateutil.parser.parse(data.get('datetime')), "SHORT_DATETIME_FORMAT") datetime=dt_formatted
) )
) )
return _('Position #{posid} has been scanned and rejected because it has already been scanned before.'.format( return _('Position #{posid} has been scanned and rejected because it has already been scanned before.'.format(
+2 -2
View File
@@ -86,7 +86,7 @@ class ApiRedeemView(ApiView):
op = OrderPosition.objects.select_related('item', 'variation', 'order', 'addon_to').get( op = OrderPosition.objects.select_related('item', 'variation', 'order', 'addon_to').get(
order__event=self.event, secret=secret order__event=self.event, secret=secret
) )
if op.order.status == Order.STATUS_PAID: if op.order.status == Order.STATUS_PAID or force:
ci, created = Checkin.objects.get_or_create(position=op, defaults={ ci, created = Checkin.objects.get_or_create(position=op, defaults={
'datetime': dt, 'datetime': dt,
'nonce': nonce, 'nonce': nonce,
@@ -103,7 +103,7 @@ class ApiRedeemView(ApiView):
'position': op.id, 'position': op.id,
'positionid': op.positionid, 'positionid': op.positionid,
'first': True, 'first': True,
'forced': False, 'forced': op.order.status != Order.STATUS_PAID,
'datetime': dt, 'datetime': dt,
}) })
else: else: