diff --git a/community_backup/webui/management/commands/add_vouchers.py b/community_backup/webui/management/commands/add_vouchers.py new file mode 100644 index 0000000..f983d92 --- /dev/null +++ b/community_backup/webui/management/commands/add_vouchers.py @@ -0,0 +1,39 @@ +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)