You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

53 lines
1.6 KiB
Python

from django.core.management.base import BaseCommand
from django.utils import timezone
from django.utils.dateparse import parse_duration
from payments.models import Payment
class Command(BaseCommand):
help = "Manually confirm a Payment"
def add_arguments(self, parser):
parser.add_argument('id', action='store', type=int, help="Payment ID")
parser.add_argument('--paid-amount', dest='amount', action='store', type=int, help="Paid amount")
parser.add_argument('--extid', dest='extid', action='store', type=str)
parser.add_argument('-n', dest='sim', action='store_true', help="Simulate")
def handle(self, *args, **options):
try:
p = Payment.objects.get(id=options['id'])
except Payment.DoesNotExist:
self.stderr.write("Cannot find payment #%d" % options['id'])
return
print("Payment #%d by %s (amount=%d; paid_amount=%d)" % (p.id, p.user.username, p.amount, p.paid_amount))
if options['amount']:
pa = options['amount']
else:
pa = p.amount
extid = options['extid']
print("Status -> confirmed")
print("Paid amount -> %d" % pa)
if extid:
print("Ext ID -> %s" % extid)
print("Confirm? [y/n] ")
i = input()
if i.lower().strip() == 'y':
p.user.vpnuser.add_paid_time(p.time)
p.user.vpnuser.on_payment_confirmed(p)
p.user.vpnuser.save()
p.paid_amount = pa
p.status = 'confirmed'
if extid:
p.backend_extid = extid
p.save()
else:
print("aborted.")