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
53 lines
1.6 KiB
Python
8 years ago
|
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.")
|
||
|
|