Seed test data #16
5
.gitignore
vendored
5
.gitignore
vendored
@ -1,8 +1,9 @@
|
||||
result
|
||||
result-*
|
||||
|
||||
**/__pycache__
|
||||
dibbler.egg-info
|
||||
dist
|
||||
|
||||
test.db
|
||||
|
||||
.ruff_cache
|
||||
.ruff_cache
|
||||
|
@ -76,12 +76,8 @@ class Database:
|
||||
personDatoVerdi = defaultdict(list) # dict->array
|
||||
personUkedagVerdi = defaultdict(list)
|
||||
# for global
|
||||
personPosTransactions = (
|
||||
{}
|
||||
) # personPosTransactions[trygvrad] == 100 #trygvrad har lagt 100kr i boksen
|
||||
personNegTransactions = (
|
||||
{}
|
||||
) # personNegTransactions[trygvrad» == 70 #trygvrad har tatt 70kr fra boksen
|
||||
personPosTransactions = {} # personPosTransactions[trygvrad] == 100 #trygvrad har lagt 100kr i boksen
|
||||
personNegTransactions = {} # personNegTransactions[trygvrad» == 70 #trygvrad har tatt 70kr fra boksen
|
||||
globalVareAntall = {} # globalVareAntall[Oreo] == 3
|
||||
globalVareVerdi = {} # globalVareVerdi[Oreo] == 30 #[kr]
|
||||
globalPersonAntall = {} # globalPersonAntall[trygvrad] == 3
|
||||
|
@ -20,6 +20,7 @@ subparsers = parser.add_subparsers(
|
||||
subparsers.add_parser("loop", help="Run the dibbler loop")
|
||||
subparsers.add_parser("create-db", help="Create the database")
|
||||
subparsers.add_parser("slabbedasker", help="Find out who is slabbedasker")
|
||||
subparsers.add_parser("seed-data", help="Fill with mock data")
|
||||
|
||||
|
||||
def main():
|
||||
@ -41,6 +42,11 @@ def main():
|
||||
|
||||
slabbedasker.main()
|
||||
|
||||
elif args.subcommand == "seed-data":
|
||||
import dibbler.subcommands.seed_test_data as seed_test_data
|
||||
|
||||
seed_test_data.main()
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
|
@ -180,7 +180,7 @@ When finished, write an empty line to confirm the purchase.\n"""
|
||||
print(f"User {t.user.name}'s credit is now {t.user.credit:d} kr")
|
||||
if t.user.credit < config.getint("limits", "low_credit_warning_limit"):
|
||||
print(
|
||||
f'USER {t.user.name} HAS LOWER CREDIT THAN {config.getint("limits", "low_credit_warning_limit"):d},',
|
||||
f"USER {t.user.name} HAS LOWER CREDIT THAN {config.getint('limits', 'low_credit_warning_limit'):d},",
|
||||
"AND SHOULD CONSIDER PUTTING SOME MONEY IN THE BOX.",
|
||||
)
|
||||
|
||||
|
@ -1,11 +1,11 @@
|
||||
__all__ = [
|
||||
'Base',
|
||||
'Product',
|
||||
'Purchase',
|
||||
'PurchaseEntry',
|
||||
'Transaction',
|
||||
'User',
|
||||
'UserProducts',
|
||||
"Base",
|
||||
"Product",
|
||||
"Purchase",
|
||||
"PurchaseEntry",
|
||||
"Transaction",
|
||||
"User",
|
||||
"UserProducts",
|
||||
]
|
||||
|
||||
from .Base import Base
|
||||
|
48
dibbler/subcommands/seed_test_data.py
Normal file
48
dibbler/subcommands/seed_test_data.py
Normal file
@ -0,0 +1,48 @@
|
||||
import json
|
||||
from dibbler.db import Session
|
||||
|
||||
from pathlib import Path
|
||||
|
||||
from dibbler.models.Product import Product
|
||||
|
||||
from dibbler.models.User import User
|
||||
|
||||
JSON_FILE = Path(__file__).parent.parent.parent / "mock_data.json"
|
||||
|
||||
|
||||
def clear_db(session):
|
||||
session.query(Product).delete()
|
||||
session.query(User).delete()
|
||||
session.commit()
|
||||
|
||||
|
||||
def main():
|
||||
session = Session()
|
||||
clear_db(session)
|
||||
product_items = []
|
||||
user_items = []
|
||||
|
||||
with open(JSON_FILE) as f:
|
||||
json_obj = json.load(f)
|
||||
|
||||
for product in json_obj["products"]:
|
||||
product_item = Product(
|
||||
bar_code=product["bar_code"],
|
||||
name=product["name"],
|
||||
price=product["price"],
|
||||
stock=product["stock"],
|
||||
)
|
||||
product_items.append(product_item)
|
||||
|
||||
for user in json_obj["users"]:
|
||||
user_item = User(
|
||||
name=user["name"],
|
||||
card=user["card"],
|
||||
rfid=user["rfid"],
|
||||
credit=user["credit"],
|
||||
)
|
||||
user_items.append(user_item)
|
||||
|
||||
session.add_all(product_items)
|
||||
session.add_all(user_items)
|
||||
session.commit()
|
76
mock_data.json
Normal file
76
mock_data.json
Normal file
@ -0,0 +1,76 @@
|
||||
{
|
||||
"products": [
|
||||
{
|
||||
"product_id": 1,
|
||||
"bar_code": "1234567890123",
|
||||
"name": "Wireless Mouse",
|
||||
"price": 2999,
|
||||
"stock": 150,
|
||||
"hidden": false
|
||||
},
|
||||
{
|
||||
"product_id": 2,
|
||||
"bar_code": "9876543210987",
|
||||
"name": "Mechanical Keyboard",
|
||||
"price": 5999,
|
||||
"stock": 75,
|
||||
"hidden": false
|
||||
},
|
||||
{
|
||||
"product_id": 3,
|
||||
"bar_code": "1112223334445",
|
||||
"name": "Gaming Monitor",
|
||||
"price": 19999,
|
||||
"stock": 20,
|
||||
"hidden": false
|
||||
},
|
||||
{
|
||||
"product_id": 4,
|
||||
"bar_code": "5556667778889",
|
||||
"name": "USB-C Docking Station",
|
||||
"price": 8999,
|
||||
"stock": 50,
|
||||
"hidden": true
|
||||
},
|
||||
{
|
||||
"product_id": 5,
|
||||
"bar_code": "4445556667771",
|
||||
"name": "Noise Cancelling Headphones",
|
||||
"price": 12999,
|
||||
"stock": 30,
|
||||
"hidden": true
|
||||
}
|
||||
],
|
||||
"users": [
|
||||
{
|
||||
"name": "Albert",
|
||||
"credit": 42069,
|
||||
"card": "NTU12345678",
|
||||
"rfid": "a1b2c3d4e5"
|
||||
},
|
||||
{
|
||||
"name": "lorem",
|
||||
"credit": 2000,
|
||||
"card": "9876543210",
|
||||
"rfid": "f6e7d8c9b0"
|
||||
},
|
||||
{
|
||||
"name": "ibsum",
|
||||
"credit": 1000,
|
||||
"card": "11122233",
|
||||
"rfid": ""
|
||||
},
|
||||
{
|
||||
"name": "dave",
|
||||
"credit": 7500,
|
||||
"card": "NTU56789012",
|
||||
"rfid": "1234abcd5678"
|
||||
},
|
||||
{
|
||||
"name": "eve",
|
||||
"credit": 3000,
|
||||
"card": null,
|
||||
"rfid": "deadbeef1234"
|
||||
}
|
||||
]
|
||||
}
|
@ -2,11 +2,13 @@
|
||||
mkShell,
|
||||
python,
|
||||
ruff,
|
||||
uv,
|
||||
}:
|
||||
|
||||
mkShell {
|
||||
packages = [
|
||||
ruff
|
||||
uv
|
||||
(python.withPackages (ps: with ps; [
|
||||
brother-ql
|
||||
matplotlib
|
||||
|
Loading…
x
Reference in New Issue
Block a user