add command fill_data_2024

This commit is contained in:
2024-06-11 23:44:47 +02:00
parent 3c66f0d388
commit 9ccba8634d

View File

@@ -0,0 +1,322 @@
from datetime import date
from typing import Dict, List, Tuple
from django.conf import settings
from django.contrib.auth import get_user_model
from django.core.management import BaseCommand, CommandError
from django.db import transaction
from gaehsnitz.models import Drink, Consumption, Donation, Payment
User = get_user_model()
def user(name: str):
obj, _ = User.objects.get_or_create(username=name)
return obj
def donation(day, month, amount, note):
return Donation.objects.create(
date=date(2024, month, day),
amount=amount,
note=note,
)
def payment(purpose, day, month, amount):
return Payment.objects.create(
date=date(2024, month, day),
amount=amount,
purpose=purpose,
)
def consumption(day: int, for_free: bool, drink_dict: Dict[User, List[Tuple[int, Drink]]]):
for user, drink_list in drink_dict.items():
for amount, drink in drink_list:
Consumption.objects.create(
user=user, drink=drink, amount=amount, day=day, for_free=for_free)
class Command(BaseCommand):
@transaction.atomic()
def handle(self, *args, **options):
if any(model.objects.exists() for model in [Donation, Payment, Drink, Consumption]):
raise CommandError(
"clear all donation, payment, drink and consumption objects before running this command")
# --------------- PEOPLE ---------------
anonym = user("anonym")
alexius = user("alexius")
andrea = user("andrea")
annemarie = user("annemarie")
arthur = user("arthur")
benni = user("benni")
casi = user("casi")
dennis = user("dennis")
diana = user("diana")
enni = user("enni")
flo = user("flo")
herald = user("herald")
jona = user("jona")
josi = user("josi")
katha = user("katha")
katz = user("katz")
lena = user("lena")
lilly = user("lilly")
lukas = user("lukas")
marius = user("marius")
marten = user("marten")
marvin = user("marvin")
matze = user("matze")
ohli = user("ohli")
pauline = user("pauline")
robert = user("robert")
rockbert = user("rockbert")
sandra = user("sandra")
sepp = user("sepp")
simon = user("simon")
steven = user("steven")
thure = user("thure")
tobi = user("tobi")
# --------------- DONATIONS ---------------
donation(10, 6, 871, "Kasse")
donation(6, 6, 50, "PayPal")
donation(7, 6, 50, "persönlich")
donation(9, 6, 62, "PayPal")
donation(10, 6, 66.66, "PayPal")
donation(10, 6, 60, "Überweisung")
donation(11, 6, 45, "PayPal")
donation(11, 6, 15, "PayPal")
donation(11, 6, 15, "PayPal")
donation(11, 6, 75, "PayPal")
# --------------- PAYMENTS ---------------
payment("Dixis", 3, 4, 331)
payment("Holz und Lack", 7, 5, 125)
payment("Getränke Anzahlung", 29, 5, 300)
payment("PA", 6, 6, 300)
payment("Drehstrom-Verteiler", 6, 6, 67)
payment("Essen, Getränke, Kleinzeug", 7, 6, 104)
payment("Dankeschön-Bier für Lichttechnik", 10, 6, 20)
# --------------- DRINKS ---------------
sterni = Drink.objects.create(
name="Sterni",
crates_ordered=16,
crates_purchased=8,
crates_returned=6,
purchase_price_per_crate=8.99,
deposit_per_crate=3.10,
bottles_per_crate=20,
bottle_size=0.5,
sale_price_per_bottle=1.50,
)
krosti = Drink.objects.create(
name="Krosti",
crates_ordered=10,
crates_purchased=5,
crates_returned=4,
purchase_price_per_crate=15.49,
deposit_per_crate=3.10,
bottles_per_crate=20,
bottle_size=0.5,
sale_price_per_bottle=2.00,
)
radler = Drink.objects.create(
name="Radler",
crates_ordered=5,
crates_purchased=2,
crates_returned=2,
purchase_price_per_crate=13.99,
deposit_per_crate=3.10,
bottles_per_crate=20,
bottle_size=0.5,
sale_price_per_bottle=2.00,
)
buddi = Drink.objects.create(
name="Buddi alkfrei",
crates_ordered=2,
crates_purchased=1,
crates_returned=1,
purchase_price_per_crate=19.99,
deposit_per_crate=3.10,
bottles_per_crate=20,
bottle_size=0.5,
sale_price_per_bottle=2.00,
)
freiberger = Drink.objects.create(
name="Freiberger alkfrei",
crates_ordered=3,
crates_purchased=1,
crates_returned=1,
purchase_price_per_crate=12.99,
deposit_per_crate=3.10,
bottles_per_crate=20,
bottle_size=0.5,
sale_price_per_bottle=2.00,
)
helles = Drink.objects.create(
name="Altenburger Hell",
crates_ordered=4,
crates_purchased=1,
crates_returned=1,
purchase_price_per_crate=12.99,
deposit_per_crate=3.10,
bottles_per_crate=20,
bottle_size=0.5,
sale_price_per_bottle=2.00,
)
wasser = Drink.objects.create(
name="Wasser",
crates_ordered=10,
crates_purchased=5,
crates_returned=4,
purchase_price_per_crate=4.99,
deposit_per_crate=3.30,
bottles_per_crate=12,
bottle_size=1.0,
sale_price_per_bottle=1.00,
)
mate = Drink.objects.create(
name="Mate",
crates_ordered=3,
crates_purchased=1,
crates_returned=1,
purchase_price_per_crate=16.79,
deposit_per_crate=4.50,
bottles_per_crate=20,
bottle_size=0.5,
sale_price_per_bottle=2.00,
)
cola = Drink.objects.create(
name="Vita Cola",
crates_ordered=2,
crates_purchased=1,
crates_returned=1,
purchase_price_per_crate=10.99,
deposit_per_crate=3.30,
bottles_per_crate=12,
bottle_size=1.0,
sale_price_per_bottle=2.00,
)
spezi = Drink.objects.create(
name="Spezi",
crates_ordered=2,
crates_purchased=1,
crates_returned=1,
purchase_price_per_crate=16.99,
deposit_per_crate=3.10,
bottles_per_crate=20,
bottle_size=0.5,
sale_price_per_bottle=2.00,
)
sekt = Drink.objects.create(
name="Sekt / Mische",
crates_ordered=5,
crates_purchased=5,
crates_returned=0,
purchase_price_per_crate=4.99,
deposit_per_crate=0,
bottles_per_crate=3,
bottle_size=0.25,
sale_price_per_bottle=2.00,
)
# --------------- THURSDAY ---------------
consumption(day=1, for_free=False, drink_dict={
enni: [(2, wasser), (9, sterni)],
robert: [(2, wasser), (2, freiberger), (1, spezi), (2, mate)],
josi: [(5, sterni), (1, radler)],
tobi: [(5, sterni), (1, freiberger), (2, mate)],
annemarie: [(1, wasser), (4, sterni), (1, radler)],
sandra: [(1, wasser), (3, sterni), (1, spezi), (1, mate)],
flo: [(2, wasser), (5, sterni), (1, mate), (1, helles)],
})
# --------------- FRIDAY ---------------
consumption(day=2, for_free=False, drink_dict={
tobi: [(2, wasser), (9, sterni), (2, freiberger)],
annemarie: [(1, wasser), (5, sterni), (2, mate), (2, radler), (2, buddi), (3, sekt)],
sandra: [(1, freiberger), (1, buddi), (1, spezi), (2, mate), (1, radler), (2, sekt)],
robert: [(2, wasser), (1, freiberger), (1, buddi), (1, spezi)],
josi: [(2, wasser), (6, sterni), (1, freiberger), (2, radler)],
enni: [(2, wasser), (10, sterni), (1, spezi)],
steven: [(1, sterni), (1, krosti), (1, radler), (5, helles)],
marten: [(9, krosti)],
thure: [(4, sterni)],
jona: [(2, freiberger), (10, krosti)],
benni: [(5, krosti), (1, helles)],
katha: [(1, krosti), (1, mate)],
diana: [(5, sterni), (1, radler)],
katz: [(3, krosti), (1, buddi)],
alexius: [(8, sterni)],
pauline: [(5, sterni), (1, radler)],
herald: [(1, wasser), (2, sterni), (1, freiberger)],
arthur: [(6, sterni), (1, radler)],
matze: [(1, sterni), (1, freiberger)],
dennis: [(1, sterni), (2, krosti)],
marvin: [(3, sterni), (1, krosti), (1, mate)],
simon: [(1, sterni)],
})
consumption(day=2, for_free=True, drink_dict={
flo: [(2, wasser), (3, sterni), (1, freiberger), (3, helles)],
casi: [(6, sterni)],
sepp: [(6, sterni)],
ohli: [(4, sterni)],
marius: [(1, radler)],
anonym: [(10, sterni), (10, krosti), (2, radler), (4, helles), (1, sekt)]
})
# --------------- SATURDAY ---------------
consumption(day=3, for_free=False, drink_dict={
herald: [(1, sterni), (2, freiberger), (2, radler), (1, buddi), (5, spezi), (2, wasser)],
thure: [(6, sterni), (1, krosti), (1, radler), (2, spezi)],
sandra: [(6, sterni), (1, freiberger), (2, radler), (1, mate), (1, cola), (1, sekt)],
marvin: [(1, sterni), (1, mate)],
simon: [(10, sterni), (1, radler), (1, mate)],
jona: [(6, sterni), (4, krosti)],
robert: [(1, sterni), (1, freiberger), (1, buddi), (2, mate), (2, spezi), (3, wasser)],
steven: [(5, helles), (1, sterni), (2, radler), (1, mate)],
flo: [(4, helles), (1, freiberger), (1, buddi), (2, mate)],
matze: [(4, sterni), (2, radler), (3, buddi), (7, spezi)],
alexius: [(2, helles), (3, sterni), (1, radler), (1, cola)],
josi: [(5, sterni), (1, radler), (2, mate), (2, wasser), (1, sekt)],
benni: [(1, helles), (2, krosti), (2, radler), (1, wasser)],
ohli: [(1, helles), (3, sterni), (2, krosti), (1, radler), (1, buddi), (1, mate)],
arthur: [(3, sterni), (1, krosti), (1, radler), (1, mate), (3, spezi), (2, sekt)],
pauline: [(2, sterni), (2, radler), (1, mate), (1, cola)],
enni: [(9, sterni), (1, spezi), (2, wasser), (1, sekt)],
annemarie: [(5, sterni), (4, radler), (2, buddi), (1, mate), (1, wasser), (2, sekt)],
tobi: [(3, sterni), (1, radler), (1, mate), (1, wasser)],
marten: [(4, helles), (1, krosti)],
lukas: [(4, sterni), (1, spezi)],
lilly: [(5, sterni), (1, mate)],
andrea: [(1, buddi)],
lena: [(1, sterni)],
anonym: [(2, helles), (3, sterni), (5, krosti), (2, radler), (1, cola), (2, sekt)]
})
consumption(day=3, for_free=True, drink_dict={
rockbert: [(8, krosti), (1, radler), (1, mate)],
anonym: [(8, sterni), (2, krosti), (2, mate), (1, cola)]
})
# --------------- ADMIN STUFF ---------------
if not settings.PRODUCTION:
flo.set_password("123")
flo.is_staff = True
flo.is_superuser = True
flo.save()