community-backup/community_backup/webui/management/commands/add_vouchers.py

39 lines
1.1 KiB
Python

from django.core.management.base import BaseCommand
from random import choices
from ...models import Voucher
class Command(BaseCommand):
help = "bulk-add vouchers with a given prefix and generate a latex output to render them"
def add_arguments(self, parser):
parser.add_argument("prefix", type=str)
parser.add_argument("amount", type=int)
def handle(self, *args, **options):
unabmigous_characters = "abcdefghijkmnopqrstuvwxyzACDEFHJKLMNPQRTUVWXY1234679"
vouchers = set()
while len(vouchers) < options["amount"]:
random_part = "".join(choices(unabmigous_characters, k=5))
vouchers.add(f"{options['prefix']}-{random_part}")
Voucher.objects.bulk_create(Voucher(code=v) for v in vouchers)
header = r"""\begin{document}
\begin{center}
"""
output = header
even = False
for v in vouchers:
output += f"\\voucher{{{v}}}"
if even:
output += "\\newline\n"
else:
output += "\n"
even = not even
output += r"""\end{center}
\end{document}"""
print(output)