Added command to bulk-create vouchers
This commit is contained in:
parent
a942a0b8c6
commit
71e72fb98b
1 changed files with 39 additions and 0 deletions
39
community_backup/webui/management/commands/add_vouchers.py
Normal file
39
community_backup/webui/management/commands/add_vouchers.py
Normal file
|
|
@ -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)
|
||||
Loading…
Add table
Add a link
Reference in a new issue