From 0c63feaa86610f6706f5c492d31b60a82e81b502 Mon Sep 17 00:00:00 2001 From: Rowland Date: Thu, 7 Dec 2023 18:05:11 +0000 Subject: [PATCH] debuging --- Pipfile | 10 +- Pipfile.lock | 425 ++++++++++-------- lib/freebies.db => freebies.db | Bin 20480 -> 32768 bytes lib/__pycache__/debug.cpython-38.pyc | Bin 0 -> 359 bytes lib/__pycache__/models.cpython-311.pyc | Bin 0 -> 7356 bytes lib/__pycache__/models.cpython-38.pyc | Bin 0 -> 4419 bytes lib/debug.py | 34 +- .../__pycache__/env.cpython-311.pyc | Bin 0 -> 3078 bytes ..._added_a_company_user_association_table.py | 34 ++ .../465c02b1e160_added_a_freebie_model.py | 37 ++ ...any_user_association_table.cpython-311.pyc | Bin 0 -> 1731 bytes ...e160_added_a_freebie_model.cpython-311.pyc | Bin 0 -> 2024 bytes ...f48c_create_companies_devs.cpython-311.pyc | Bin 0 -> 1836 bytes .../7a71dbf71c64_create_db.cpython-311.pyc | Bin 0 -> 764 bytes lib/models.py | 111 ++++- lib/seed.py | 96 ++++ 16 files changed, 554 insertions(+), 193 deletions(-) rename lib/freebies.db => freebies.db (60%) create mode 100644 lib/__pycache__/debug.cpython-38.pyc create mode 100644 lib/__pycache__/models.cpython-311.pyc create mode 100644 lib/__pycache__/models.cpython-38.pyc create mode 100644 lib/migrations/__pycache__/env.cpython-311.pyc create mode 100644 lib/migrations/versions/33ef8a77cf06_added_a_company_user_association_table.py create mode 100644 lib/migrations/versions/465c02b1e160_added_a_freebie_model.py create mode 100644 lib/migrations/versions/__pycache__/33ef8a77cf06_added_a_company_user_association_table.cpython-311.pyc create mode 100644 lib/migrations/versions/__pycache__/465c02b1e160_added_a_freebie_model.cpython-311.pyc create mode 100644 lib/migrations/versions/__pycache__/5f72c58bf48c_create_companies_devs.cpython-311.pyc create mode 100644 lib/migrations/versions/__pycache__/7a71dbf71c64_create_db.cpython-311.pyc diff --git a/Pipfile b/Pipfile index 63c79cd98..30111d4c8 100644 --- a/Pipfile +++ b/Pipfile @@ -4,13 +4,11 @@ verify_ssl = true name = "pypi" [packages] -alembic = "1.8.1" -importlib-metadata = "6.0.0" -importlib-resources = "5.10.0" -ipdb = "0.13.9" -sqlalchemy = "1.4.42" +alembic = "*" +ipdb = "*" +sqlalchemy = "*" [dev-packages] [requires] -python_full_version = "3.8.13" +python_full_version = "3.8.10" diff --git a/Pipfile.lock b/Pipfile.lock index 3923f4a97..a7ccefd43 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -1,11 +1,11 @@ { "_meta": { "hash": { - "sha256": "fa62c636b7ae5acb4993fc7b007a651c55b562aa29962a9a8585ec314b352ae6" + "sha256": "9b54a73e33cb9fb2b11f2dff250a2274fdc02c31a97a5e8a0ab82e02fbe9735d" }, "pipfile-spec": 6, "requires": { - "python_full_version": "3.8.13" + "python_full_version": "3.8.10" }, "sources": [ { @@ -18,159 +18,221 @@ "default": { "alembic": { "hashes": [ - "sha256:6880dec4f28dd7bd999d2ed13fbe7c9d4337700a44d11a524c0ce0c59aaf0dbd", - "sha256:e8a6ff9f3b1887e1fed68bfb8fb9a000d8f61c21bdcc85b67bb9f87fcbc4fce3" + "sha256:a23974ea301c3ee52705db809c7413cecd165290c6679b9998dd6c74342ca23a", + "sha256:ab4b3b94d2e1e5f81e34be8a9b7b7575fc9dd5398fccb0bef351ec9b14872623" ], "index": "pypi", - "version": "==1.9.2" - }, - "appnope": { - "hashes": [ - "sha256:02bd91c4de869fbb1e1c50aafc4098827a7a54ab2f39d9dcba6c9547ed920e24", - "sha256:265a455292d0bd8a72453494fa24df5a11eb18373a60c7c0430889f22548605e" - ], - "markers": "sys_platform == 'darwin'", - "version": "==0.1.3" + "version": "==1.13.0" }, "asttokens": { "hashes": [ - "sha256:4622110b2a6f30b77e1473affaa97e711bc2f07d3f10848420ff1898edbe94f3", - "sha256:6b0ac9e93fb0335014d382b8fa9b3afa7df546984258005da0b9e7095b3deb1c" + "sha256:051ed49c3dcae8913ea7cd08e46a606dba30b79993209636c4875bc1d637bc24", + "sha256:b03869718ba9a6eb027e134bfdf69f38a236d681c83c160d510768af11254ba0" ], - "version": "==2.2.1" - }, - "backcall": { - "hashes": [ - "sha256:5cbdbf27be5e7cfadb448baf0aa95508f91f2bbc6c6437cd9cd06e2a4c215e1e", - "sha256:fbbce6a29f263178a1f7915c1940bde0ec2b2a967566fe1c65c1dfb7422bd255" - ], - "version": "==0.2.0" + "version": "==2.4.1" }, "decorator": { "hashes": [ "sha256:637996211036b6385ef91435e4fae22989472f9d571faba8927ba8253acbc330", "sha256:b8c3f85900b9dc423225913c5aace94729fe1fa9763b38939a95226f02d37186" ], - "markers": "python_version < '3.11' and python_version >= '3.7'", + "markers": "python_version > '3.6' and python_version < '3.11'", "version": "==5.1.1" }, - "executing": { + "exceptiongroup": { "hashes": [ - "sha256:0314a69e37426e3608aada02473b4161d4caf5a4b244d1d0c48072b8fee7bacc", - "sha256:19da64c18d2d851112f09c287f8d3dbbdf725ab0e569077efb6cdcbd3497c107" + "sha256:4bfd3996ac73b41e9b9628b04e079f193850720ea5945fc96a08633c66912f14", + "sha256:91f5c769735f051a4290d52edd0858999b57e5876e9f85937691bd4c9fa3ed68" ], + "markers": "python_version < '3.11'", "version": "==1.2.0" }, + "executing": { + "hashes": [ + "sha256:35afe2ce3affba8ee97f2d69927fa823b08b472b7b994e36a52a964b93d16147", + "sha256:eac49ca94516ccc753f9fb5ce82603156e590b27525a8bc32cce8ae302eb61bc" + ], + "version": "==2.0.1" + }, + "greenlet": { + "hashes": [ + "sha256:0a02d259510b3630f330c86557331a3b0e0c79dac3d166e449a39363beaae174", + "sha256:0b6f9f8ca7093fd4433472fd99b5650f8a26dcd8ba410e14094c1e44cd3ceddd", + "sha256:100f78a29707ca1525ea47388cec8a049405147719f47ebf3895e7509c6446aa", + "sha256:1757936efea16e3f03db20efd0cd50a1c86b06734f9f7338a90c4ba85ec2ad5a", + "sha256:19075157a10055759066854a973b3d1325d964d498a805bb68a1f9af4aaef8ec", + "sha256:19bbdf1cce0346ef7341705d71e2ecf6f41a35c311137f29b8a2dc2341374565", + "sha256:20107edf7c2c3644c67c12205dc60b1bb11d26b2610b276f97d666110d1b511d", + "sha256:22f79120a24aeeae2b4471c711dcf4f8c736a2bb2fabad2a67ac9a55ea72523c", + "sha256:2847e5d7beedb8d614186962c3d774d40d3374d580d2cbdab7f184580a39d234", + "sha256:28e89e232c7593d33cac35425b58950789962011cc274aa43ef8865f2e11f46d", + "sha256:329c5a2e5a0ee942f2992c5e3ff40be03e75f745f48847f118a3cfece7a28546", + "sha256:337322096d92808f76ad26061a8f5fccb22b0809bea39212cd6c406f6a7060d2", + "sha256:3fcc780ae8edbb1d050d920ab44790201f027d59fdbd21362340a85c79066a74", + "sha256:41bdeeb552d814bcd7fb52172b304898a35818107cc8778b5101423c9017b3de", + "sha256:4eddd98afc726f8aee1948858aed9e6feeb1758889dfd869072d4465973f6bfd", + "sha256:52e93b28db27ae7d208748f45d2db8a7b6a380e0d703f099c949d0f0d80b70e9", + "sha256:55d62807f1c5a1682075c62436702aaba941daa316e9161e4b6ccebbbf38bda3", + "sha256:5805e71e5b570d490938d55552f5a9e10f477c19400c38bf1d5190d760691846", + "sha256:599daf06ea59bfedbec564b1692b0166a0045f32b6f0933b0dd4df59a854caf2", + "sha256:60d5772e8195f4e9ebf74046a9121bbb90090f6550f81d8956a05387ba139353", + "sha256:696d8e7d82398e810f2b3622b24e87906763b6ebfd90e361e88eb85b0e554dc8", + "sha256:6e6061bf1e9565c29002e3c601cf68569c450be7fc3f7336671af7ddb4657166", + "sha256:80ac992f25d10aaebe1ee15df45ca0d7571d0f70b645c08ec68733fb7a020206", + "sha256:816bd9488a94cba78d93e1abb58000e8266fa9cc2aa9ccdd6eb0696acb24005b", + "sha256:85d2b77e7c9382f004b41d9c72c85537fac834fb141b0296942d52bf03fe4a3d", + "sha256:87c8ceb0cf8a5a51b8008b643844b7f4a8264a2c13fcbcd8a8316161725383fe", + "sha256:89ee2e967bd7ff85d84a2de09df10e021c9b38c7d91dead95b406ed6350c6997", + "sha256:8bef097455dea90ffe855286926ae02d8faa335ed8e4067326257cb571fc1445", + "sha256:8d11ebbd679e927593978aa44c10fc2092bc454b7d13fdc958d3e9d508aba7d0", + "sha256:91e6c7db42638dc45cf2e13c73be16bf83179f7859b07cfc139518941320be96", + "sha256:97e7ac860d64e2dcba5c5944cfc8fa9ea185cd84061c623536154d5a89237884", + "sha256:990066bff27c4fcf3b69382b86f4c99b3652bab2a7e685d968cd4d0cfc6f67c6", + "sha256:9fbc5b8f3dfe24784cee8ce0be3da2d8a79e46a276593db6868382d9c50d97b1", + "sha256:ac4a39d1abae48184d420aa8e5e63efd1b75c8444dd95daa3e03f6c6310e9619", + "sha256:b2c02d2ad98116e914d4f3155ffc905fd0c025d901ead3f6ed07385e19122c94", + "sha256:b2d3337dcfaa99698aa2377c81c9ca72fcd89c07e7eb62ece3f23a3fe89b2ce4", + "sha256:b489c36d1327868d207002391f662a1d163bdc8daf10ab2e5f6e41b9b96de3b1", + "sha256:b641161c302efbb860ae6b081f406839a8b7d5573f20a455539823802c655f63", + "sha256:b8ba29306c5de7717b5761b9ea74f9c72b9e2b834e24aa984da99cbfc70157fd", + "sha256:b9934adbd0f6e476f0ecff3c94626529f344f57b38c9a541f87098710b18af0a", + "sha256:ce85c43ae54845272f6f9cd8320d034d7a946e9773c693b27d620edec825e376", + "sha256:cf868e08690cb89360eebc73ba4be7fb461cfbc6168dd88e2fbbe6f31812cd57", + "sha256:d2905ce1df400360463c772b55d8e2518d0e488a87cdea13dd2c71dcb2a1fa16", + "sha256:d57e20ba591727da0c230ab2c3f200ac9d6d333860d85348816e1dca4cc4792e", + "sha256:d6a8c9d4f8692917a3dc7eb25a6fb337bff86909febe2f793ec1928cd97bedfc", + "sha256:d923ff276f1c1f9680d32832f8d6c040fe9306cbfb5d161b0911e9634be9ef0a", + "sha256:daa7197b43c707462f06d2c693ffdbb5991cbb8b80b5b984007de431493a319c", + "sha256:dbd4c177afb8a8d9ba348d925b0b67246147af806f0b104af4d24f144d461cd5", + "sha256:dc4d815b794fd8868c4d67602692c21bf5293a75e4b607bb92a11e821e2b859a", + "sha256:e9d21aaa84557d64209af04ff48e0ad5e28c5cca67ce43444e939579d085da72", + "sha256:ea6b8aa9e08eea388c5f7a276fabb1d4b6b9d6e4ceb12cc477c3d352001768a9", + "sha256:eabe7090db68c981fca689299c2d116400b553f4b713266b130cfc9e2aa9c5a9", + "sha256:f2f6d303f3dee132b322a14cd8765287b8f86cdc10d2cb6a6fae234ea488888e", + "sha256:f33f3258aae89da191c6ebaa3bc517c6c4cbc9b9f689e5d8452f7aedbb913fa8", + "sha256:f7bfb769f7efa0eefcd039dd19d843a4fbfbac52f1878b1da2ed5793ec9b1a65", + "sha256:f89e21afe925fcfa655965ca8ea10f24773a1791400989ff32f467badfe4a064", + "sha256:fa24255ae3c0ab67e613556375a4341af04a084bd58764731972bcbc8baeba36" + ], + "markers": "platform_machine == 'aarch64' or (platform_machine == 'ppc64le' or (platform_machine == 'x86_64' or (platform_machine == 'amd64' or (platform_machine == 'AMD64' or (platform_machine == 'win32' or platform_machine == 'WIN32')))))", + "version": "==3.0.1" + }, "importlib-metadata": { "hashes": [ - "sha256:7efb448ec9a5e313a57655d35aa54cd3e01b7e1fbcf72dce1bf06119420f5bad", - "sha256:e354bedeb60efa6affdcc8ae121b73544a7aa74156d047311948f6d711cd378d" + "sha256:7fc841f8b8332803464e5dc1c63a2e59121f46ca186c0e2e182e80bf8c1319f7", + "sha256:d97503976bb81f40a193d41ee6570868479c69d5068651eb039c40d850c59d67" ], - "index": "pypi", - "version": "==6.0.0" + "markers": "python_version < '3.9'", + "version": "==7.0.0" }, "importlib-resources": { "hashes": [ - "sha256:7d543798b0beca10b6a01ac7cafda9f822c54db9e8376a6bf57e0cbd74d486b6", - "sha256:e4a96c8cc0339647ff9a5e0550d9f276fc5a01ffa276012b58ec108cfd7b8484" + "sha256:3893a00122eafde6894c59914446a512f728a0c1a45f9bb9b63721b6bacf0b4a", + "sha256:e8bf90d8213b486f428c9c39714b920041cb02c184686a3dee24905aaa8105d6" ], - "index": "pypi", - "version": "==5.10.2" + "markers": "python_version < '3.9'", + "version": "==6.1.1" }, "ipdb": { "hashes": [ - "sha256:c23b6736f01fd4586cc2ecbebdf79a5eb454796853e1cd8f2ed3b7b91d4a3e93", - "sha256:f74c2f741c18b909eaf89f19fde973f745ac721744aa1465888ce45813b63a9c" + "sha256:45529994741c4ab6d2388bfa5d7b725c2cf7fe9deffabdb8a6113aa5ed449ed4", + "sha256:e3ac6018ef05126d442af680aad863006ec19d02290561ac88b8b1c0b0cfc726" ], "index": "pypi", - "version": "==0.13.11" + "version": "==0.13.13" }, "ipython": { "hashes": [ - "sha256:da01e6df1501e6e7c32b5084212ddadd4ee2471602e2cf3e0190f4de6b0ea481", - "sha256:f3bf2c08505ad2c3f4ed5c46ae0331a8547d36bf4b21a451e8ae80c0791db95b" + "sha256:ca6f079bb33457c66e233e4580ebfc4128855b4cf6370dddd73842a9563e8a27", + "sha256:e8267419d72d81955ec1177f8a29aaa90ac80ad647499201119e2f05e99aa397" ], - "markers": "python_version < '3.11' and python_version >= '3.7'", - "version": "==8.8.0" + "markers": "python_version > '3.6' and python_version < '3.11'", + "version": "==8.18.1" }, "jedi": { "hashes": [ - "sha256:203c1fd9d969ab8f2119ec0a3342e0b49910045abe6af0a3ae83a5764d54639e", - "sha256:bae794c30d07f6d910d32a7048af09b5a39ed740918da923c6b780790ebac612" + "sha256:cf0496f3651bc65d7174ac1b7d043eff454892c708a87d1b683e57b569927ffd", + "sha256:e983c654fe5c02867aef4cdfce5a2fbb4a50adc0af145f70504238f18ef5e7e0" ], - "markers": "python_version >= '3.6'", - "version": "==0.18.2" + "version": "==0.19.1" }, "mako": { "hashes": [ - "sha256:c97c79c018b9165ac9922ae4f32da095ffd3c4e6872b45eded42926deea46818", - "sha256:d60a3903dc3bb01a18ad6a89cdbe2e4eadc69c0bc8ef1e3773ba53d44c3f7a34" + "sha256:57d4e997349f1a92035aa25c17ace371a4213f2ca42f99bee9a602500cfd54d9", + "sha256:e3a9d388fd00e87043edbe8792f45880ac0114e9c4adc69f6e9bfb2c55e3b11b" ], - "markers": "python_version >= '3.7'", - "version": "==1.2.4" + "version": "==1.3.0" }, "markupsafe": { "hashes": [ - "sha256:0576fe974b40a400449768941d5d0858cc624e3249dfd1e0c33674e5c7ca7aed", - "sha256:085fd3201e7b12809f9e6e9bc1e5c96a368c8523fad5afb02afe3c051ae4afcc", - "sha256:090376d812fb6ac5f171e5938e82e7f2d7adc2b629101cec0db8b267815c85e2", - "sha256:0b462104ba25f1ac006fdab8b6a01ebbfbce9ed37fd37fd4acd70c67c973e460", - "sha256:137678c63c977754abe9086a3ec011e8fd985ab90631145dfb9294ad09c102a7", - "sha256:1bea30e9bf331f3fef67e0a3877b2288593c98a21ccb2cf29b74c581a4eb3af0", - "sha256:22152d00bf4a9c7c83960521fc558f55a1adbc0631fbb00a9471e097b19d72e1", - "sha256:22731d79ed2eb25059ae3df1dfc9cb1546691cc41f4e3130fe6bfbc3ecbbecfa", - "sha256:2298c859cfc5463f1b64bd55cb3e602528db6fa0f3cfd568d3605c50678f8f03", - "sha256:28057e985dace2f478e042eaa15606c7efccb700797660629da387eb289b9323", - "sha256:2e7821bffe00aa6bd07a23913b7f4e01328c3d5cc0b40b36c0bd81d362faeb65", - "sha256:2ec4f2d48ae59bbb9d1f9d7efb9236ab81429a764dedca114f5fdabbc3788013", - "sha256:340bea174e9761308703ae988e982005aedf427de816d1afe98147668cc03036", - "sha256:40627dcf047dadb22cd25ea7ecfe9cbf3bbbad0482ee5920b582f3809c97654f", - "sha256:40dfd3fefbef579ee058f139733ac336312663c6706d1163b82b3003fb1925c4", - "sha256:4cf06cdc1dda95223e9d2d3c58d3b178aa5dacb35ee7e3bbac10e4e1faacb419", - "sha256:50c42830a633fa0cf9e7d27664637532791bfc31c731a87b202d2d8ac40c3ea2", - "sha256:55f44b440d491028addb3b88f72207d71eeebfb7b5dbf0643f7c023ae1fba619", - "sha256:608e7073dfa9e38a85d38474c082d4281f4ce276ac0010224eaba11e929dd53a", - "sha256:63ba06c9941e46fa389d389644e2d8225e0e3e5ebcc4ff1ea8506dce646f8c8a", - "sha256:65608c35bfb8a76763f37036547f7adfd09270fbdbf96608be2bead319728fcd", - "sha256:665a36ae6f8f20a4676b53224e33d456a6f5a72657d9c83c2aa00765072f31f7", - "sha256:6d6607f98fcf17e534162f0709aaad3ab7a96032723d8ac8750ffe17ae5a0666", - "sha256:7313ce6a199651c4ed9d7e4cfb4aa56fe923b1adf9af3b420ee14e6d9a73df65", - "sha256:7668b52e102d0ed87cb082380a7e2e1e78737ddecdde129acadb0eccc5423859", - "sha256:7df70907e00c970c60b9ef2938d894a9381f38e6b9db73c5be35e59d92e06625", - "sha256:7e007132af78ea9df29495dbf7b5824cb71648d7133cf7848a2a5dd00d36f9ff", - "sha256:835fb5e38fd89328e9c81067fd642b3593c33e1e17e2fdbf77f5676abb14a156", - "sha256:8bca7e26c1dd751236cfb0c6c72d4ad61d986e9a41bbf76cb445f69488b2a2bd", - "sha256:8db032bf0ce9022a8e41a22598eefc802314e81b879ae093f36ce9ddf39ab1ba", - "sha256:99625a92da8229df6d44335e6fcc558a5037dd0a760e11d84be2260e6f37002f", - "sha256:9cad97ab29dfc3f0249b483412c85c8ef4766d96cdf9dcf5a1e3caa3f3661cf1", - "sha256:a4abaec6ca3ad8660690236d11bfe28dfd707778e2442b45addd2f086d6ef094", - "sha256:a6e40afa7f45939ca356f348c8e23048e02cb109ced1eb8420961b2f40fb373a", - "sha256:a6f2fcca746e8d5910e18782f976489939d54a91f9411c32051b4aab2bd7c513", - "sha256:a806db027852538d2ad7555b203300173dd1b77ba116de92da9afbc3a3be3eed", - "sha256:abcabc8c2b26036d62d4c746381a6f7cf60aafcc653198ad678306986b09450d", - "sha256:b8526c6d437855442cdd3d87eede9c425c4445ea011ca38d937db299382e6fa3", - "sha256:bb06feb762bade6bf3c8b844462274db0c76acc95c52abe8dbed28ae3d44a147", - "sha256:c0a33bc9f02c2b17c3ea382f91b4db0e6cde90b63b296422a939886a7a80de1c", - "sha256:c4a549890a45f57f1ebf99c067a4ad0cb423a05544accaf2b065246827ed9603", - "sha256:ca244fa73f50a800cf8c3ebf7fd93149ec37f5cb9596aa8873ae2c1d23498601", - "sha256:cf877ab4ed6e302ec1d04952ca358b381a882fbd9d1b07cccbfd61783561f98a", - "sha256:d9d971ec1e79906046aa3ca266de79eac42f1dbf3612a05dc9368125952bd1a1", - "sha256:da25303d91526aac3672ee6d49a2f3db2d9502a4a60b55519feb1a4c7714e07d", - "sha256:e55e40ff0cc8cc5c07996915ad367fa47da6b3fc091fdadca7f5403239c5fec3", - "sha256:f03a532d7dee1bed20bc4884194a16160a2de9ffc6354b3878ec9682bb623c54", - "sha256:f1cd098434e83e656abf198f103a8207a8187c0fc110306691a2e94a78d0abb2", - "sha256:f2bfb563d0211ce16b63c7cb9395d2c682a23187f54c3d79bfec33e6705473c6", - "sha256:f8ffb705ffcf5ddd0e80b65ddf7bed7ee4f5a441ea7d3419e861a12eaf41af58" + "sha256:05fb21170423db021895e1ea1e1f3ab3adb85d1c2333cbc2310f2a26bc77272e", + "sha256:0a4e4a1aff6c7ac4cd55792abf96c915634c2b97e3cc1c7129578aa68ebd754e", + "sha256:10bbfe99883db80bdbaff2dcf681dfc6533a614f700da1287707e8a5d78a8431", + "sha256:134da1eca9ec0ae528110ccc9e48041e0828d79f24121a1a146161103c76e686", + "sha256:14ff806850827afd6b07a5f32bd917fb7f45b046ba40c57abdb636674a8b559c", + "sha256:1577735524cdad32f9f694208aa75e422adba74f1baee7551620e43a3141f559", + "sha256:1b40069d487e7edb2676d3fbdb2b0829ffa2cd63a2ec26c4938b2d34391b4ecc", + "sha256:1b8dd8c3fd14349433c79fa8abeb573a55fc0fdd769133baac1f5e07abf54aeb", + "sha256:1f67c7038d560d92149c060157d623c542173016c4babc0c1913cca0564b9939", + "sha256:282c2cb35b5b673bbcadb33a585408104df04f14b2d9b01d4c345a3b92861c2c", + "sha256:2c1b19b3aaacc6e57b7e25710ff571c24d6c3613a45e905b1fde04d691b98ee0", + "sha256:2ef12179d3a291be237280175b542c07a36e7f60718296278d8593d21ca937d4", + "sha256:338ae27d6b8745585f87218a3f23f1512dbf52c26c28e322dbe54bcede54ccb9", + "sha256:3c0fae6c3be832a0a0473ac912810b2877c8cb9d76ca48de1ed31e1c68386575", + "sha256:3fd4abcb888d15a94f32b75d8fd18ee162ca0c064f35b11134be77050296d6ba", + "sha256:42de32b22b6b804f42c5d98be4f7e5e977ecdd9ee9b660fda1a3edf03b11792d", + "sha256:47d4f1c5f80fc62fdd7777d0d40a2e9dda0a05883ab11374334f6c4de38adffd", + "sha256:504b320cd4b7eff6f968eddf81127112db685e81f7e36e75f9f84f0df46041c3", + "sha256:525808b8019e36eb524b8c68acdd63a37e75714eac50e988180b169d64480a00", + "sha256:56d9f2ecac662ca1611d183feb03a3fa4406469dafe241673d521dd5ae92a155", + "sha256:5bbe06f8eeafd38e5d0a4894ffec89378b6c6a625ff57e3028921f8ff59318ac", + "sha256:65c1a9bcdadc6c28eecee2c119465aebff8f7a584dd719facdd9e825ec61ab52", + "sha256:68e78619a61ecf91e76aa3e6e8e33fc4894a2bebe93410754bd28fce0a8a4f9f", + "sha256:69c0f17e9f5a7afdf2cc9fb2d1ce6aabdb3bafb7f38017c0b77862bcec2bbad8", + "sha256:6b2b56950d93e41f33b4223ead100ea0fe11f8e6ee5f641eb753ce4b77a7042b", + "sha256:715d3562f79d540f251b99ebd6d8baa547118974341db04f5ad06d5ea3eb8007", + "sha256:787003c0ddb00500e49a10f2844fac87aa6ce977b90b0feaaf9de23c22508b24", + "sha256:7ef3cb2ebbf91e330e3bb937efada0edd9003683db6b57bb108c4001f37a02ea", + "sha256:8023faf4e01efadfa183e863fefde0046de576c6f14659e8782065bcece22198", + "sha256:8758846a7e80910096950b67071243da3e5a20ed2546e6392603c096778d48e0", + "sha256:8afafd99945ead6e075b973fefa56379c5b5c53fd8937dad92c662da5d8fd5ee", + "sha256:8c41976a29d078bb235fea9b2ecd3da465df42a562910f9022f1a03107bd02be", + "sha256:8e254ae696c88d98da6555f5ace2279cf7cd5b3f52be2b5cf97feafe883b58d2", + "sha256:8f9293864fe09b8149f0cc42ce56e3f0e54de883a9de90cd427f191c346eb2e1", + "sha256:9402b03f1a1b4dc4c19845e5c749e3ab82d5078d16a2a4c2cd2df62d57bb0707", + "sha256:962f82a3086483f5e5f64dbad880d31038b698494799b097bc59c2edf392fce6", + "sha256:9aad3c1755095ce347e26488214ef77e0485a3c34a50c5a5e2471dff60b9dd9c", + "sha256:9dcdfd0eaf283af041973bff14a2e143b8bd64e069f4c383416ecd79a81aab58", + "sha256:aa57bd9cf8ae831a362185ee444e15a93ecb2e344c8e52e4d721ea3ab6ef1823", + "sha256:aa7bd130efab1c280bed0f45501b7c8795f9fdbeb02e965371bbef3523627779", + "sha256:ab4a0df41e7c16a1392727727e7998a467472d0ad65f3ad5e6e765015df08636", + "sha256:ad9e82fb8f09ade1c3e1b996a6337afac2b8b9e365f926f5a61aacc71adc5b3c", + "sha256:af598ed32d6ae86f1b747b82783958b1a4ab8f617b06fe68795c7f026abbdcad", + "sha256:b076b6226fb84157e3f7c971a47ff3a679d837cf338547532ab866c57930dbee", + "sha256:b7ff0f54cb4ff66dd38bebd335a38e2c22c41a8ee45aa608efc890ac3e3931bc", + "sha256:bfce63a9e7834b12b87c64d6b155fdd9b3b96191b6bd334bf37db7ff1fe457f2", + "sha256:c011a4149cfbcf9f03994ec2edffcb8b1dc2d2aede7ca243746df97a5d41ce48", + "sha256:c9c804664ebe8f83a211cace637506669e7890fec1b4195b505c214e50dd4eb7", + "sha256:ca379055a47383d02a5400cb0d110cef0a776fc644cda797db0c5696cfd7e18e", + "sha256:cb0932dc158471523c9637e807d9bfb93e06a95cbf010f1a38b98623b929ef2b", + "sha256:cd0f502fe016460680cd20aaa5a76d241d6f35a1c3350c474bac1273803893fa", + "sha256:ceb01949af7121f9fc39f7d27f91be8546f3fb112c608bc4029aef0bab86a2a5", + "sha256:d080e0a5eb2529460b30190fcfcc4199bd7f827663f858a226a81bc27beaa97e", + "sha256:dd15ff04ffd7e05ffcb7fe79f1b98041b8ea30ae9234aed2a9168b5797c3effb", + "sha256:df0be2b576a7abbf737b1575f048c23fb1d769f267ec4358296f31c2479db8f9", + "sha256:e09031c87a1e51556fdcb46e5bd4f59dfb743061cf93c4d6831bf894f125eb57", + "sha256:e4dd52d80b8c83fdce44e12478ad2e85c64ea965e75d66dbeafb0a3e77308fcc", + "sha256:f698de3fd0c4e6972b92290a45bd9b1536bffe8c6759c62471efaa8acb4c37bc", + "sha256:fec21693218efe39aa7f8599346e90c705afa52c5b31ae019b2e57e8f6542bb2", + "sha256:ffcc3f7c66b5f5b7931a5aa68fc9cecc51e685ef90282f4a82f0f5e9b704ad11" ], - "markers": "python_version >= '3.7'", - "version": "==2.1.2" + "version": "==2.1.3" }, "matplotlib-inline": { "hashes": [ "sha256:f1f41aab5328aa5aaea9b16d083b128102f8712542f819fe7e6a420ff581b311", "sha256:f887e5f10ba98e8d2b150ddcf4702c1e5f8b3a20005eb0f74bfdbd360ee6f304" ], - "markers": "python_version >= '3.5'", "version": "==0.1.6" }, "parso": { @@ -178,31 +240,22 @@ "sha256:8c07be290bb59f03588915921e29e8a50002acaf2cdc5fa0e0114f91709fafa0", "sha256:c001d4636cd3aecdaf33cbb40aebb59b094be2a74c556778ef5576c175e19e75" ], - "markers": "python_version >= '3.6'", "version": "==0.8.3" }, "pexpect": { "hashes": [ - "sha256:0b48a55dcb3c05f3329815901ea4fc1537514d6ba867a152b581d69ae3710937", - "sha256:fc65a43959d153d0114afe13997d439c22823a27cefceb5ff35c2178c6784c0c" + "sha256:7236d1e080e4936be2dc3e326cec0af72acf9212a7e1d060210e70a47e253523", + "sha256:ee7d41123f3c9911050ea2c2dac107568dc43b2d3b0c7557a33212c398ead30f" ], "markers": "sys_platform != 'win32'", - "version": "==4.8.0" - }, - "pickleshare": { - "hashes": [ - "sha256:87683d47965c1da65cdacaf31c8441d12b8044cdec9aca500cd78fc2c683afca", - "sha256:9649af414d74d4df115d5d718f82acb59c9d418196b7b4290ed47a12ce62df56" - ], - "version": "==0.7.5" + "version": "==4.9.0" }, "prompt-toolkit": { "hashes": [ - "sha256:3e163f254bef5a03b146397d7c1963bd3e2812f0964bb9a24e6ec761fd28db63", - "sha256:aa64ad242a462c5ff0363a7b9cfe696c20d55d9fc60c11fd8e632d064804d305" + "sha256:941367d97fc815548822aa26c2a269fdc4eb21e9ec05fc5d447cf09bad5d75f0", + "sha256:f36fe301fafb7470e86aaf90f036eef600a3210be4decf461a5b1ca8403d3cb2" ], - "markers": "python_full_version >= '3.6.2'", - "version": "==3.0.36" + "version": "==3.0.41" }, "ptyprocess": { "hashes": [ @@ -220,104 +273,116 @@ }, "pygments": { "hashes": [ - "sha256:b3ed06a9e8ac9a9aae5a6f5dbe78a8a58655d17b43b93c078f094ddc476ae297", - "sha256:fa7bd7bd2771287c0de303af8bfdfc731f51bd2c6a47ab69d117138893b82717" + "sha256:b27c2826c47d0f3219f29554824c30c5e8945175d888647acd804ddd04af846c", + "sha256:da46cec9fd2de5be3a8a784f434e4c4ab670b4ff54d605c4c2717e9d49c4c367" ], - "markers": "python_version >= '3.6'", - "version": "==2.14.0" + "version": "==2.17.2" }, "six": { "hashes": [ "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926", "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", "version": "==1.16.0" }, "sqlalchemy": { "hashes": [ - "sha256:07e48cbcdda6b8bc7a59d6728bd3f5f574ffe03f2c9fb384239f3789c2d95c2e", - "sha256:18cafdb27834fa03569d29f571df7115812a0e59fd6a3a03ccb0d33678ec8420", - "sha256:1b1e5e96e2789d89f023d080bee432e2fef64d95857969e70d3cadec80bd26f0", - "sha256:315676344e3558f1f80d02535f410e80ea4e8fddba31ec78fe390eff5fb8f466", - "sha256:31de1e2c45e67a5ec1ecca6ec26aefc299dd5151e355eb5199cd9516b57340be", - "sha256:3d94682732d1a0def5672471ba42a29ff5e21bb0aae0afa00bb10796fc1e28dd", - "sha256:3ec187acf85984263299a3f15c34a6c0671f83565d86d10f43ace49881a82718", - "sha256:4847f4b1d822754e35707db913396a29d874ee77b9c3c3ef3f04d5a9a6209618", - "sha256:4d112b0f3c1bc5ff70554a97344625ef621c1bfe02a73c5d97cac91f8cd7a41e", - "sha256:51e1ba2884c6a2b8e19109dc08c71c49530006c1084156ecadfaadf5f9b8b053", - "sha256:535377e9b10aff5a045e3d9ada8a62d02058b422c0504ebdcf07930599890eb0", - "sha256:5dbf17ac9a61e7a3f1c7ca47237aac93cabd7f08ad92ac5b96d6f8dea4287fc1", - "sha256:5f752676fc126edc1c4af0ec2e4d2adca48ddfae5de46bb40adbd3f903eb2120", - "sha256:64cb0ad8a190bc22d2112001cfecdec45baffdf41871de777239da6a28ed74b6", - "sha256:6913b8247d8a292ef8315162a51931e2b40ce91681f1b6f18f697045200c4a30", - "sha256:69fac0a7054d86b997af12dc23f581cf0b25fb1c7d1fed43257dee3af32d3d6d", - "sha256:7001f16a9a8e06488c3c7154827c48455d1c1507d7228d43e781afbc8ceccf6d", - "sha256:7b81b1030c42b003fc10ddd17825571603117f848814a344d305262d370e7c34", - "sha256:7f8267682eb41a0584cf66d8a697fef64b53281d01c93a503e1344197f2e01fe", - "sha256:887865924c3d6e9a473dc82b70977395301533b3030d0f020c38fd9eba5419f2", - "sha256:9167d4227b56591a4cc5524f1b79ccd7ea994f36e4c648ab42ca995d28ebbb96", - "sha256:939f9a018d2ad04036746e15d119c0428b1e557470361aa798e6e7d7f5875be0", - "sha256:955162ad1a931fe416eded6bb144ba891ccbf9b2e49dc7ded39274dd9c5affc5", - "sha256:984ee13543a346324319a1fb72b698e521506f6f22dc37d7752a329e9cd00a32", - "sha256:9883f5fae4fd8e3f875adc2add69f8b945625811689a6c65866a35ee9c0aea23", - "sha256:a1ad90c97029cc3ab4ffd57443a20fac21d2ec3c89532b084b073b3feb5abff3", - "sha256:a3714e5b33226131ac0da60d18995a102a17dddd42368b7bdd206737297823ad", - "sha256:ae067ab639fa499f67ded52f5bc8e084f045d10b5ac7bb928ae4ca2b6c0429a5", - "sha256:b33ffbdbbf5446cf36cd4cc530c9d9905d3c2fe56ed09e25c22c850cdb9fac92", - "sha256:b6e4cb5c63f705c9d546a054c60d326cbde7421421e2d2565ce3e2eee4e1a01f", - "sha256:b7f4b6aa6e87991ec7ce0e769689a977776db6704947e562102431474799a857", - "sha256:c04144a24103135ea0315d459431ac196fe96f55d3213bfd6d39d0247775c854", - "sha256:c522e496f9b9b70296a7675272ec21937ccfc15da664b74b9f58d98a641ce1b6", - "sha256:c5a99282848b6cae0056b85da17392a26b2d39178394fc25700bcf967e06e97a", - "sha256:c7a46639ba058d320c9f53a81db38119a74b8a7a1884df44d09fbe807d028aaf", - "sha256:d4b1cc7835b39835c75cf7c20c926b42e97d074147c902a9ebb7cf2c840dc4e2", - "sha256:d4d164df3d83d204c69f840da30b292ac7dc54285096c6171245b8d7807185aa", - "sha256:d61e9ecc849d8d44d7f80894ecff4abe347136e9d926560b818f6243409f3c86", - "sha256:d68e1762997bfebf9e5cf2a9fd0bcf9ca2fdd8136ce7b24bbd3bbfa4328f3e4a", - "sha256:e3c1808008124850115a3f7e793a975cfa5c8a26ceeeb9ff9cbb4485cac556df", - "sha256:f8cb80fe8d14307e4124f6fad64dfd87ab749c9d275f82b8b4ec84c84ecebdbe" + "sha256:0666031df46b9badba9bed00092a1ffa3aa063a5e68fa244acd9f08070e936d3", + "sha256:0a8c6aa506893e25a04233bc721c6b6cf844bafd7250535abb56cb6cc1368884", + "sha256:0e680527245895aba86afbd5bef6c316831c02aa988d1aad83c47ffe92655e74", + "sha256:14aebfe28b99f24f8a4c1346c48bc3d63705b1f919a24c27471136d2f219f02d", + "sha256:1e018aba8363adb0599e745af245306cb8c46b9ad0a6fc0a86745b6ff7d940fc", + "sha256:227135ef1e48165f37590b8bfc44ed7ff4c074bf04dc8d6f8e7f1c14a94aa6ca", + "sha256:31952bbc527d633b9479f5f81e8b9dfada00b91d6baba021a869095f1a97006d", + "sha256:3e983fa42164577d073778d06d2cc5d020322425a509a08119bdcee70ad856bf", + "sha256:42d0b0290a8fb0165ea2c2781ae66e95cca6e27a2fbe1016ff8db3112ac1e846", + "sha256:42ede90148b73fe4ab4a089f3126b2cfae8cfefc955c8174d697bb46210c8306", + "sha256:4895a63e2c271ffc7a81ea424b94060f7b3b03b4ea0cd58ab5bb676ed02f4221", + "sha256:4af79c06825e2836de21439cb2a6ce22b2ca129bad74f359bddd173f39582bf5", + "sha256:5f94aeb99f43729960638e7468d4688f6efccb837a858b34574e01143cf11f89", + "sha256:616fe7bcff0a05098f64b4478b78ec2dfa03225c23734d83d6c169eb41a93e55", + "sha256:62d9e964870ea5ade4bc870ac4004c456efe75fb50404c03c5fd61f8bc669a72", + "sha256:638c2c0b6b4661a4fd264f6fb804eccd392745c5887f9317feb64bb7cb03b3ea", + "sha256:63bfc3acc970776036f6d1d0e65faa7473be9f3135d37a463c5eba5efcdb24c8", + "sha256:6463aa765cf02b9247e38b35853923edbf2f6fd1963df88706bc1d02410a5577", + "sha256:64ac935a90bc479fee77f9463f298943b0e60005fe5de2aa654d9cdef46c54df", + "sha256:683ef58ca8eea4747737a1c35c11372ffeb84578d3aab8f3e10b1d13d66f2bc4", + "sha256:75eefe09e98043cff2fb8af9796e20747ae870c903dc61d41b0c2e55128f958d", + "sha256:787af80107fb691934a01889ca8f82a44adedbf5ef3d6ad7d0f0b9ac557e0c34", + "sha256:7c424983ab447dab126c39d3ce3be5bee95700783204a72549c3dceffe0fc8f4", + "sha256:7e0dc9031baa46ad0dd5a269cb7a92a73284d1309228be1d5935dac8fb3cae24", + "sha256:87a3d6b53c39cd173990de2f5f4b83431d534a74f0e2f88bd16eabb5667e65c6", + "sha256:89a01238fcb9a8af118eaad3ffcc5dedaacbd429dc6fdc43fe430d3a941ff965", + "sha256:9585b646ffb048c0250acc7dad92536591ffe35dba624bb8fd9b471e25212a35", + "sha256:964971b52daab357d2c0875825e36584d58f536e920f2968df8d581054eada4b", + "sha256:967c0b71156f793e6662dd839da54f884631755275ed71f1539c95bbada9aaab", + "sha256:9ca922f305d67605668e93991aaf2c12239c78207bca3b891cd51a4515c72e22", + "sha256:a86cb7063e2c9fb8e774f77fbf8475516d270a3e989da55fa05d08089d77f8c4", + "sha256:aeb397de65a0a62f14c257f36a726945a7f7bb60253462e8602d9b97b5cbe204", + "sha256:b41f5d65b54cdf4934ecede2f41b9c60c9f785620416e8e6c48349ab18643855", + "sha256:bd45a5b6c68357578263d74daab6ff9439517f87da63442d244f9f23df56138d", + "sha256:c14eba45983d2f48f7546bb32b47937ee2cafae353646295f0e99f35b14286ab", + "sha256:c1bda93cbbe4aa2aa0aa8655c5aeda505cd219ff3e8da91d1d329e143e4aff69", + "sha256:c4722f3bc3c1c2fcc3702dbe0016ba31148dd6efcd2a2fd33c1b4897c6a19693", + "sha256:c80c38bd2ea35b97cbf7c21aeb129dcbebbf344ee01a7141016ab7b851464f8e", + "sha256:cabafc7837b6cec61c0e1e5c6d14ef250b675fa9c3060ed8a7e38653bd732ff8", + "sha256:cc1d21576f958c42d9aec68eba5c1a7d715e5fc07825a629015fe8e3b0657fb0", + "sha256:d0f7fb0c7527c41fa6fcae2be537ac137f636a41b4c5a4c58914541e2f436b45", + "sha256:d4041ad05b35f1f4da481f6b811b4af2f29e83af253bf37c3c4582b2c68934ab", + "sha256:d5578e6863eeb998980c212a39106ea139bdc0b3f73291b96e27c929c90cd8e1", + "sha256:e3b5036aa326dc2df50cba3c958e29b291a80f604b1afa4c8ce73e78e1c9f01d", + "sha256:e599a51acf3cc4d31d1a0cf248d8f8d863b6386d2b6782c5074427ebb7803bda", + "sha256:f3420d00d2cb42432c1d0e44540ae83185ccbbc67a6054dcc8ab5387add6620b", + "sha256:f48ed89dd11c3c586f45e9eec1e437b355b3b6f6884ea4a4c3111a3358fd0c18", + "sha256:f508ba8f89e0a5ecdfd3761f82dda2a3d7b678a626967608f4273e0dba8f07ac", + "sha256:fd54601ef9cc455a0c61e5245f690c8a3ad67ddb03d3b91c361d076def0b4c60" ], "index": "pypi", - "version": "==1.4.46" + "version": "==2.0.23" }, "stack-data": { "hashes": [ - "sha256:32d2dd0376772d01b6cb9fc996f3c8b57a357089dec328ed4b6553d037eaf815", - "sha256:cbb2a53eb64e5785878201a97ed7c7b94883f48b87bfb0bbe8b623c74679e4a8" + "sha256:836a778de4fec4dcd1dcd89ed8abff8a221f58308462e1c4aa2a3cf30148f0b9", + "sha256:d5558e0c25a4cb0853cddad3d77da9891a08cb85dd9f9f91b9f8cd66e511e695" ], - "version": "==0.6.2" + "version": "==0.6.3" }, "tomli": { "hashes": [ "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc", "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f" ], - "markers": "python_version < '3.11' and python_version >= '3.7'", + "markers": "python_version > '3.6' and python_version < '3.11'", "version": "==2.0.1" }, "traitlets": { "hashes": [ - "sha256:32500888f5ff7bbf3b9267ea31748fa657aaf34d56d85e60f91dda7dc7f5785b", - "sha256:a1ca5df6414f8b5760f7c5f256e326ee21b581742114545b462b35ffe3f04861" + "sha256:f14949d23829023013c47df20b4a76ccd1a85effb786dc060f34de7948361b33", + "sha256:fcdaa8ac49c04dfa0ed3ee3384ef6dfdb5d6f3741502be247279407679296772" ], - "markers": "python_version >= '3.7'", - "version": "==5.8.1" + "version": "==5.14.0" + }, + "typing-extensions": { + "hashes": [ + "sha256:8f92fc8806f9a6b641eaa5318da32b44d401efaac0f6678c9bc448ba3605faa0", + "sha256:df8e4339e9cb77357558cbdbceca33c303714cf861d1eef15e1070055ae8b7ef" + ], + "markers": "python_version < '3.10'", + "version": "==4.8.0" }, "wcwidth": { "hashes": [ - "sha256:795b138f6875577cd91bba52baf9e445cd5118fd32723b460e30a0af30ea230e", - "sha256:a5220780a404dbe3353789870978e472cfe477761f06ee55077256e509b156d0" + "sha256:f01c104efdf57971bcb756f054dd58ddec5204dd15fa31d6503ea57947d97c02", + "sha256:f26ec43d96c8cbfed76a5075dac87680124fa84e0855195a6184da9c187f133c" ], - "version": "==0.2.6" + "version": "==0.2.12" }, "zipp": { "hashes": [ - "sha256:83a28fcb75844b5c0cdaf5aa4003c2d728c77e05f5aeabe8e95e56727005fbaa", - "sha256:a7a22e05929290a67401440b39690ae6563279bced5f314609d9d03798f56766" + "sha256:0e923e726174922dce09c53c59ad483ff7bbb8e572e00c7f7c46b88556409f31", + "sha256:84e64a1c28cf7e91ed2078bb8cc8c259cb19b76942096c8d7b84947690cabaf0" ], - "markers": "python_version < '3.10'", - "version": "==3.11.0" + "version": "==3.17.0" } }, "develop": {} diff --git a/lib/freebies.db b/freebies.db similarity index 60% rename from lib/freebies.db rename to freebies.db index 12beb1c963e832db481e7a7493e3029e691ac4dc..e290790b17ff10716da07e7142f847a998149aa7 100644 GIT binary patch literal 32768 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 RU3Mwzl1D588Pban{{(c05D5SP delta 120 zcmZo@U}{*vI6+#Fm4Sf)gkgYrqK>gBD}!FVEHD2L1{OXk27X@toqY9tQkw+@mhohFoh#AZP diff --git a/lib/__pycache__/debug.cpython-38.pyc b/lib/__pycache__/debug.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..69d2d7f48522506180ee5e410199cb51daa00bbf GIT binary patch literal 359 zcmYjNy-ve05VrHLkg)L(9TE>PAXFiqfTd!|Vma~AShbzhPKCnSnFrw&coeTpyaE#r ztpq3C>F#vjkM5}~bL8XVV-F!l=yMtVN9czKpLXpFM;uF}aD(yE2QpA$<6#i-a2J?c zz&twQCWa7V9>3uxf#isqlqVasO20eq5C8xG literal 0 HcmV?d00001 diff --git a/lib/__pycache__/models.cpython-311.pyc b/lib/__pycache__/models.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..5feb8a4b13cf30c3180baa3ae90d971a6ea9473e GIT binary patch literal 7356 zcmd^EU2GHC6`t|m%=qs*BykcTSuekFfCLJ=EI$F2K(c|7T{ise8Wq>c+<=3B!i)pN z8!A8W;3CvDRkV0pQ1em>+En794?M8yst;8kXQGi}jkHpv)kR<#Ai)?p^x_D_68nA6?;X^F-!r%ur+-FY@PlAyY) zFP)f7rgYz^L}M8mrK!vD6xF%GREA!rlI|MLNb%HVoj*-8vE#8!ENs`k5>3Q1@pMYQ z5}(kyk=W=}iH_-BnaVP7ld-E*3bT4Zq@#(L1d`WjbR;HI-8ObLduZ%xbZch@Umi`x zk~A#Ck>C|wBVY&i=>-{s6aGBCfI|S1VcTSrLBi@#>@mkaCOoUXSRkZG-hy`(Cdh3oB1#=lD85 z^ozo6CPHXHbl+xb=N0h+*RzW27roGx?mavjBr+J1~uqh zziC9BE1T*GD`CXZ?Z@f$CpKM>DL8@%X43uWhS7=i#3cA8l}D|B0phqs@qWsvb}uq+h5=`*Z!Q(q2)f4L4k6at^Vu^lgT)&DpPCySu1+2NH7ej$LcZ1 z*7dL=R&|eBUjSv=hQh4W2qI5hI#&)1y7Ss3m8PV2VC%wIJdvSNbYx1m#YNp7OC+RD zXfU-bb)gJjS;H$jt8liW=w2W><~tJn?AD!I4=<=>t46jike+$c^K9Sq{R-((NuNgg z7RbOn8BocfMg|prP}&LoYBY*pYdFZipz>pAG{eKdAs`MP^DmAc>HR4qx zX4H);R3xi^>#g*J9SXap9uSdsBMAY~9pmYEO81l(97amrW!g$-M-7uoKS5zs{wj+( zFhFL#6%WU!Fv!U#fvi|+SS4?320QtC77683z1pE+<-$en z!ln5`msAqfNOXaW&XZA

oQ9r=|fd7lpA=MTP-?0~Ih})iRj2P1~no#e*Y5k1wrW zw;UNO*fPv)RUL*XmuW|>T3M#1&zg&;R>=r$%;n(F1;|WEBgN^?>#@Wn)$O1lsRLdX zb{MO|um!9IQPf>vfMh%qc1ox~=_rz3Bu9Ygo)ojwhda?sy8PR6eBfA%zcp104Sy zzsk32e5+EqR<9*gieZXhL*<98rRn;Zw6-ajaZBB`Mwzut3NN%utr>2y)9f%Ky$j8t zQOo0XJ}rr65b}+sCsQIqizynDbmv%Hk~3kOZXZp^x<8!|shk1SVZa9&XINIZGzj%< zu%hK!L0ls;z7%}FE%f{L-?q=nYTFL2ZO1~}zWKI&PlvU4`qj1pt!-eT?eu)xX|?SG zt?h%nzeL&1O3FC#i zS}|Hk+mZAmaU;P@D(yq^9+E>yb^y`&2`N26rOcGnhmRhBak2~;>q=TQKKBV@%*=2% zX#;jcg2`2O!OF{7f2F3ka;Fysk`ETR0(VcC5oR-ruu~OwYQoOkv681D|88MhVcWgV znNHQSLGx_L9WOPlFZ37p7x#a0;K2d4X{*+>6~+i`EO?8bJmsEp&jfY%F>UuTCD5k^ z`m{h_?){RdC4ac+e7xc7i;Cxr>N%r%&g70SIap`s5@Qh;Q-R69L}~S#v)$E)v#o=a@4y9=<^w%&riu3pw9!`)u7L3fW81izDR=!@{HVKxR?p; z%y4H!wYNYKrWd^pwVJ$)D<1Ff1#Zs6$LaNugs4E;hNKfn6_haiI_m`?3w5DuTc~Su zAu}_jkj>?b-~5KS_P>t0TJZb3*HQwmbyEqI)Pcd^O)%MU!mGt5=@5&y%lS&lP5 z58Sd%+r}+OHO-ocQ?diNfvkGBL9`7sPwYcy`@=RfpCC{P+fC$xb)Bm?9KLAHgjHdqLGlA764Xd&c5t5TQphf7E@TRsB|8)7 zUL;NVNz*s+WtD=TYxw3bpaP$0TlvIkru;#h04Lg_l^(TNuUcJ}#3QJ!93YwMKxIhh zp#cJPTD*!q~ziyc-qo#!_QTVc%k7YvCP37enE761tLf3dzrq zoJR6mnBd0NI)s4kX+%;9O(T7bIY%gaje1Awi#)zXeha3D&<661W5TZG~VV zc&~M)Rduh|-0O447s-bFbaC+UjmI~hPCohN+%FY!L?uTwas+aJ85!*O`7$1&6i0fyZ0N}y}vrU1FO>d+T7oaxxY-j0z!e+#Qc8z>QT6@V&!`t7SNBL z@7Fk5ss+mtJPKMv$~g3?+wIgH3?W8%UC+8hrMjM8(FI7rCvrgjA`kl^!OZ`dkji+V z391r8$Ql4(Wt5xHvi8Z1XoqlR1t;?~CkxV|1Nhdet>Qa@k4w%dReTrl@qHCO_t1{x zz-;-Utf${RiRz4ty|37vSx?B?%=Koukg=WX&3Z%S9ReH{_GbAIEOD&8V#BcOFv7mI zg)?{3Mm|^*s|3m~wD1bXD>)6sJS95&;DU8ZR3hEQvkxvQq}#lf?QEcDk!&kAJy@@h zZRWM?v<0?^84u&K}sa#4~|#am#}p3h6YjWx){$gVzgTGn85ih6!NI zKn1>dA4qMss4)Z{v(*@&TJhDA51pW7IDX?p=^H6I6boftp)o0)48gY82%*Nt#ZVn? zmg~Wt?t`=1R0aZSCKgY~+2)GsYS`DHr*Rko`db&A>70SY@ey2)o8~&q+Oy2_Y3=BT z=7Yk2R1Tcv2M5j-9LdxJBB#qr|!<2JQpuhy|w_3hJq`*QtDyweHZU=cs-95y29 zTGR}L_)$aQ7Tpae^0CC|6`Guq46Wc2Gt&-+MsthGV-1h2bpMKYcUnqTZB)G|<3kxZ zx33)jO95m!j^Te7T$TS_44eOlFt_;z05kAd2nR3}UTcI`{9$uTeMGtfBIxPzUw|&z zS(Ys^pD6$RRbq}RufIyn4yE>jW$6?Y_rQ|f=C|eC@aS#Izc)Lsc=o8CJ(_1vj$hcb^6MAy4k~^5+S?pKbn^pH_&AmCtmD~;a?Y|1& z4d=K;e`B7O9P3IB{`TpT!=3AgE%W-~`q?41ZLik0_vJAXE(EuKUb6d cmSyC=TxmMVHnQkoYf~H=TVB4V-EhPI0MBs(^8f$< literal 0 HcmV?d00001 diff --git a/lib/__pycache__/models.cpython-38.pyc b/lib/__pycache__/models.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..566a1a6d4d3f14d1d177432c841466d0a7bb9c62 GIT binary patch literal 4419 zcmb_fU2ogS73B;ml9H$oe4zgw(!vFNJsd`EbPjr?20-@mgLg06)sCI z8nUz3mbPe0CW2!oTB3boL+?QERyszPPHN%G=ayI&D^D%4B0I-+xC(t$tU+Hh`Wo~r z;wtp3M!zE7xo`E~{U>&4^*!CVmnk`XnEqZ)bnQXBJ(AkJn~e^VRJR67#)XVz`f!*^ z?R}9J@}X4Py>D46`)f9gelP9S`=E+|fZU^Bki|yf0Os z>8_B2QLJEjD5LE-mzwYFPe0w+kKVst(95GVPGmoaIxrxj56?!hpj1kVXwedjF5y4G z6AiNTP^JU|gMI>V0^p`=`J>UWke_U9Z0sm0w}&!c7uzs#wuh+*gF%*z<8%@Ud6?@) zr47Z)*$mka#e-9(n`1RhVl|2O;Vc*S5v)A=9}KWyM}AevR7CQtVO{{yfPB38)S%o! z%b!9>D`dh7xnQ9!9a%d@ED8IBhb}bl*g|ah#17k{ zE*eiQ#8g)_MevmV8=#N4G5xmah%V-r2%VumvtRN0nwRgANzpj^C$95m672wm} zz0zIUn>po_Das#hZ_2|{uIssk%LN>w+jQX3I2#`z3S>TDFsmNw+h}*u@-~EEN7kP8 zS8Vs04G8wuw0?62qW6;BhNB&d0{YG6Xy?>YKg7RYe!Q`pC2~V$k4JGTHpY`;H%o7f zKe{nH)f*z?*83)uNqpD8ejb?Rzw7VEn9=s>E8`WA+DeP=i-q>8pDnh%Ax^t+ z8|p`}RzD{39SH60Wy4fAXQxbwpxqL;W&^W5b%Tu8NnC{9p&X#~D&#@sUz!*Y%IcvM zaM28E+H7GR@gw^PF#*3iPn?21=SRTLEcEOb77=RcX-C(Q$B7{XT|10N2U6R3f%-O< z={v^ZW@~V>5Zc9ll3~%WsrNCjensLJBz_4IHdFaHn)&tB!w4P{JcoZz*7{^!5mpQ0*=G5@$0;>p0Fc!-%=l98VKhHqWw&XGG1Cc*+D9Z z*d{Voy0$Y^dC}+E9*lC`&PGD!1vt-;*DE_vcd+coXt{AczrvSrVfjk*q@ z{jti%QWX>RDXC3d2zd^+-pz!;y|5RG4@LQ*C=03O??L#?;ceDn4c=vK?mL_{sM)^D znXw$e=-e|W-a`z(5%JbRw~aa7Hf0@j8_ejoHKW_M?9A!5iGD@5tr^{ROR^1@N~$%< zW*kuxY#Fd7E@@W=x%w`8=c4Hi=(BcnQy%uz_h=Dfxr=ht`2IJTtSB(Rf8GlHtTWA%Hwa7g zDLXapoLg-5m({Onjn7CBMzu-eQf|43R_Me`Xe)|sMUkd{N5W9YnJ^?mm)%XYoML1~ zBCk=1$Sc5Q|qbGJ*C=U3ZgJ7+hqQIr1piCm~ z>=r7S%A}4-7?V1;=|$H_yy8}hloYMXn&!Q-Zd^x{yiHJaYU&IWm0jvmP*fA-3!pj` zsM(EqIk0>9*J6n(sOV#5xq1~}bkO)*t3k8pnhVW=<~_5oQqkgXO)FoId87aay&v5#rr6c-i? zSnv(!!GE|N{F^($*VAt0hf6D8x+_iC&{c#Dm7AxU-E5mSOzwDA!v;~i`@QUOn)l+~ z)a~u4Ea{;VqlhT$0Rx-P;-bjWEqqX=1=ysBhok&2Fsp8-wF>4ri~ol*&KyP*xZpKI z6b7NeMGjM6k~j-%(=(JoArDO+YsIAg#V?Rfh(g&*-z+tv<@{mmk<=?wT9VqzO@7 yNfj6DO8YmiIqJ~ruc&Ny>uvyA`C^}E-)AN&{TKAq11 literal 0 HcmV?d00001 diff --git a/lib/debug.py b/lib/debug.py index 4f922eb69..e54fd6d40 100644 --- a/lib/debug.py +++ b/lib/debug.py @@ -1,9 +1,39 @@ #!/usr/bin/env python3 from sqlalchemy import create_engine +from sqlalchemy.orm import sessionmaker -from models import Company, Dev +from models import Company, Dev, Freebie if __name__ == '__main__': engine = create_engine('sqlite:///freebies.db') - import ipdb; ipdb.set_trace() + + Session = sessionmaker(bind=engine) + session = Session() + + # Retrieve a collection of all all the freebies for the Company. + + freebie = session.query(Freebie).filter(Freebie.company_id == 1) + print("<==========printing freebies======>") + for record in freebie: + print("Name: ", record.item_name) + + #returns a collection of all the devs who collected freebies from the company. + freebie_query = session.query(Freebie).filter(Freebie.company_id == 1) + print("<==========printing devs======>") + for record in freebie_query: + print("Dev ID: ", record.dev_id) + + #returns a collection of all the freebies that the Dev has collected. + dev_query = session.query(Freebie).filter(Freebie.dev_id == 1) + print("<==========printing freebies======>") + for record in dev_query: + print("Item Name: ", record.item_name) + + #returns a collection of all the companies that the Dev has collected freebies from. + company_query = session.query(Freebie).filter(Freebie.dev_id == 1) + print("<==========printing companies======>") + for record in company_query: + print("Company ID: ", record.company_id) + + \ No newline at end of file diff --git a/lib/migrations/__pycache__/env.cpython-311.pyc b/lib/migrations/__pycache__/env.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c9a220ba5385a9f5ecf3c7e973c3fed0ce54e7c6 GIT binary patch literal 3078 zcmaJ@&2Q936d$j>yI${CNJxMriYAb-ERY0fLl5+e&=1j85rR}IxvaeQWaHqqm$5e= z2&7c%fl58}P>EBeoKjVA?H>R=^ty{Iv9c5isZyohHXE7?aV*(cfmj1s){ z6RTucq_9NoazP8FQpL7S(8fXHl67|;cxg^`h##ZGtx`*CF9jHu43^RtuYf#2F3@mn zwLd+Su%|BcrsW=TqaFQ9xIO4Da@(neSrJ{-B|~@=-IgF3a0f%^o!$1-n}%7m&n_0u z@3n(8#@KH=0x{qYW9YFP=ma{C9BD1GF5X0IP%JmWC$qnS@^SSG_|)rF3zv-&Rb9ij z9Bf!PXD=<8kl-9H+d7$66bxfw*>G@>>?$P=c9#izWtqlnhP#Ycs*a0Q{O$E`xV>uW z*s?)l;m`SYorNiOwY1!kVDPAF8mYKy(IkA4m5O1Nc)-9D z)+pht{2VzNpsY!RZvDn6ULeC;ZBZCnI*tEyqL2(2%756;}IQ=8Wk7YRku=gTTbs}oZF^qYRja&FzYs-HFumr&I#6b(yv{FH8}Cehr2U2&cH zeB6%(dH1t?mTFi`1G`08J@|?CuFy1lKU5@eJPIyVEl1Uuou8pqtI*lxyg*Z6>99h_ zZ$6q?w##IO+G{3k+Dv5w_Q{&6yf?K(2`L(63Os4I2%RyF;!MZM46#)JmT-dy_BPBg)u#w8{9L+U`h8si2x4x_m zo^2+g(bz5mvd2i1k(U{y9P$#!>xl_3G0{XqbexkNIqS(|bs2jyuF1G5h6=9TWp;aQ zB$Fl-Z4W#YSMwXu;y?`uTXyUfdCPG_X ze0whHw&-9=FY@R@H^Qv6vExx>8&K#W+`+g9ShUqfj8Mv+z34HE?g?%iv=QpGhP#5x zKDae>@sZRU0nn*?9&cXEc)$OBcI^hzYsZ=a`|U?DEBOu#JJ6anly}(!=Ed&(co5)O zZ{gil3(h+Ll%o+#rG^cV6o3l@4u(GfEFrYD0Z(-tTQj(hp^F8F7>-|nk6nNnVn(tH zGx8BXR-t6cSoagGlW8V6TgZ#P(s2}=?<^&jPG~`O3Psh`mgn;+${Gvp1L7wcMmRxW zzdwM6f?*kc@#RpxWhnTVae7K7>LqgkU6Y)F{Xp? z@CWw;08b_z2i-+x`zf3NIR6c<>6m1dL!@GEXEI?WIKvBr_{KR&4~eAg5s31t@n*<+;1 z$V(Yz2EFvjdis=?J_W}&G0DkJYQRe!ucs!w)I=>c0Z`FWa4kSZViKUDTh^J|;R2L+ z+bRjG<4fdZmo0XWk&f)09C!JDrVh*GIj><4+5W zKg0P;(%dKUKO+Lre1x(;B=h+`KV#Y@Xbq+5pe!hZ3Sa3IVNgcAK;qDW%0)v9%7Rx` zU#pndf3X5b{5nRgMVHFe%5fprchuLen&4rhj{V4kv{}c)g&L& zGazGF>AV60TO$Y!G+FDto}+xN_iCV#TJQC|_Z75F89K*LW1BHxB*hblYvRd;T)BgiW)7*&w literal 0 HcmV?d00001 diff --git a/lib/migrations/versions/33ef8a77cf06_added_a_company_user_association_table.py b/lib/migrations/versions/33ef8a77cf06_added_a_company_user_association_table.py new file mode 100644 index 000000000..043f15f9b --- /dev/null +++ b/lib/migrations/versions/33ef8a77cf06_added_a_company_user_association_table.py @@ -0,0 +1,34 @@ +"""Added a company_user Association Table + +Revision ID: 33ef8a77cf06 +Revises: 465c02b1e160 +Create Date: 2023-12-07 09:56:32.969525 + +""" +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = '33ef8a77cf06' +down_revision = '465c02b1e160' +branch_labels = None +depends_on = None + + +def upgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + op.create_table('company_devs', + sa.Column('company_id', sa.Integer(), nullable=False), + sa.Column('dev_id', sa.Integer(), nullable=False), + sa.ForeignKeyConstraint(['company_id'], ['companies.id'], name=op.f('fk_company_devs_company_id_companies')), + sa.ForeignKeyConstraint(['dev_id'], ['devs.id'], name=op.f('fk_company_devs_dev_id_devs')), + sa.PrimaryKeyConstraint('company_id', 'dev_id') + ) + # ### end Alembic commands ### + + +def downgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + op.drop_table('company_devs') + # ### end Alembic commands ### diff --git a/lib/migrations/versions/465c02b1e160_added_a_freebie_model.py b/lib/migrations/versions/465c02b1e160_added_a_freebie_model.py new file mode 100644 index 000000000..039a756ac --- /dev/null +++ b/lib/migrations/versions/465c02b1e160_added_a_freebie_model.py @@ -0,0 +1,37 @@ +"""Added a Freebie Model + +Revision ID: 465c02b1e160 +Revises: 5f72c58bf48c +Create Date: 2023-12-07 09:12:37.536464 + +""" +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = '465c02b1e160' +down_revision = '5f72c58bf48c' +branch_labels = None +depends_on = None + + +def upgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + op.create_table('freebies', + sa.Column('id', sa.Integer(), nullable=False), + sa.Column('item_name', sa.String(), nullable=True), + sa.Column('value', sa.Integer(), nullable=True), + sa.Column('company_id', sa.Integer(), nullable=True), + sa.Column('dev_id', sa.Integer(), nullable=True), + sa.ForeignKeyConstraint(['company_id'], ['companies.id'], name=op.f('fk_freebies_company_id_companies')), + sa.ForeignKeyConstraint(['dev_id'], ['devs.id'], name=op.f('fk_freebies_dev_id_devs')), + sa.PrimaryKeyConstraint('id') + ) + # ### end Alembic commands ### + + +def downgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + op.drop_table('freebies') + # ### end Alembic commands ### diff --git a/lib/migrations/versions/__pycache__/33ef8a77cf06_added_a_company_user_association_table.cpython-311.pyc b/lib/migrations/versions/__pycache__/33ef8a77cf06_added_a_company_user_association_table.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c9542d5899935dad1b941ae8ac65e2caf9e4e822 GIT binary patch literal 1731 zcmbUhO>Y}Tbay>oZ#FgxBI*Z4;8rbZa}5sjSTJ}~Xb3zz$BbA5VbqA@ctgaoMgo?EmvG`S zYAnGn!7k(2XIw_!|MC{b1gF)sW}A*`^^~qlX!@4x+M2Fpd&R43X zaW`$mO^POn(MgSl~mV=g^037!n+gJx6`88Af&sRuLD+7x@3rTNEc2+B_E9{KAXG zFesep!|R683!h8>65*-OIQU#T*Qfj+d?unu1RU=}OAf=fKX=XG+zXG(!`YlF>gk-$<6n1rexmDuFHGoVh~hO^?hk+t zxId8i_~R$_-(cJN%6Rtv(cP!pN83M^MyN7Il?kfMC7ox&k^D4ylpJ(Ns5C~U2`YhP zg039iJFE|OM(^DCweZXJ(FfMJW>0GN2svZqOpp^OeQ|hqaCxx&^R=JWM(^DlSMN`% z_eW@FjCLkyC(zj*ygf$62`c`zEXKvZIY84zL@z?j8mtIdvDi9U2Xy|ZFE(+|enOo} zV3iT(C6_U^oq59O1>nyvqnF_1FJXJnny2p#px=V!GQm83A3a$gqpK5ibrgOxQ}D|g zzMfh36N-XuO;P-WY7n!jYr&1~BSST`4l#Rl1yp^B2LDq(#coti$tG1Tt)sv+5Ci4} z6NgyXRcvckPs*ZtDd-o{4b#S5gWRNRAZ33AcMs4s#`FAC5P1a21@sEXUmS54&VI)n raDs0tamm*Yq~n!04^qb~tAJ9k9>`Ns;-NT;=#s!+n{wx%SxWu^Zb_rc literal 0 HcmV?d00001 diff --git a/lib/migrations/versions/__pycache__/465c02b1e160_added_a_freebie_model.cpython-311.pyc b/lib/migrations/versions/__pycache__/465c02b1e160_added_a_freebie_model.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..fbc96213778237f44365e3c3c6bd603c955e4c20 GIT binary patch literal 2024 zcmb_d&2Jk;6yIHszczMBMMR+`(YE415RT)IIH_9|(L@mmX+V@iYav$aor$x}de@y@ zCvwz7go?z0Lo20fB01M!lpgvAzzy!Z(jKCbI3W()jKZm0c50wx`r7#Yc zA~;lv0>y9~M<1e69L5-oA`ac=CdKXA#~2eVDbgY(q^uF?mWhcjieHdT&C*OmT3RSd z`NE7koh@fbrZ637h*gwk)@HNn%v^abKc|ZGlqfcl7JwC{>~uDl%4Ad1v(og{VkTS6 z%}&ka3i(1_6#w+EKglz}tgW)dATmn~BC-f2cAXk(_j5bLDDV)_$v5DIr<~27D)05@ zn76|Na({oPVPQxPehu0o3`e~MheOZMA=n)C?S`!SQXC$V_fLEYE%J(J(IK?6?)Iu^ zvDb(C@$6|tp7a_4@MqSsHvQAiBvq@Dplq&g>g*O$wPMD~g)tX{7 zWDTGH>ejs==a5hD|DjvdC?lYDR^PEt-^Q72{LVm^Tf}riy0Rj9+78pHr=> z(8iGBNAART#|x5PH>)H~%`IIqaJts8*G(f;%cZ&>k^&rcgV40DmD5$NLKPcIiQ|(xT7yOFH8915j>DmE0$Kk6+u{B|k%yl>TK)}&rSI^Q zo4d=8S9VugGY-nQDC40_pxHRcHm~kqYhHUk=AeR$3LYv1n#vQpyZ!jV?t>O~P|ig; z59I=lesHt7yuZ?1d7gLBoQvi>G#6;r4}_+;pJ*mpwuAC6%6lje8V_CC`)Y5s^|kZi z^8oR1?=nsIh@+vWENJbpZ$|UkToKvW-Z7W zdJ*KE!|1y(V{vS589^u{SYH9M-Ub$g;?|=NTr}>Xai`Zirhw}|*wx7q7L{des`n^HHy3AjoNC8AYi*_Q3fA&1xm+$3&DLJqnttDTX(^?t~+ zD;tFze8?e32OQEudUaCNL;n;BbT9)wl^%LiaC^xmd83cDWKbzRb(s0h%zN|Ry!Yn4 zd6iBZ2-?ci9r{i|=y$OhHhHi(xekjLh@dhe5|LfWlgqLs){3i?F~Q{oNt9Khlr1!J|ZXAP8i;Hgo~JT|;3JS}#&Tm)F_k37=<$tbw5k76n>MCxl5PL2O&vNxjBTCyu{qHmJoo7Il!-mz>cGbw8q;lyUWb#6Xx& z-DQqvvBoXhSPlFzVwU4aKcf@zHg9QuEAVKZ1$(aLlYFfaZ3TX=HlM39N-GY{!Et+= zvb^h5@}9HFtO#l_%JxK^)$D52~ET>1%&@EBkp{ejgd z-yPig4W{*{}mX<`r-)cQ%nrUX-1#?AxqBnkHX z{-a!k{TDF8D**jRxpVMk8&7xebPG?5NZmR3s*Ptlc&0V%Jymdz$o!4$2V65v64<86 zHOr-5#jyt#ggdU~+FR6Xu#ey<*V*7B=V@VqdAhAI%eS{or~&GR+#s|@eG;01-^&^% ztUTkyTm70Bkh)8+v(JGmzL#(hpsPrd)Rk2UcaeY(k#wPj&X4wE1e8JV>L_(_Uq3!K fv!6abHwBRXc;D!%DG6S795RaZSr<)!UP#^paoCA* literal 0 HcmV?d00001 diff --git a/lib/migrations/versions/__pycache__/7a71dbf71c64_create_db.cpython-311.pyc b/lib/migrations/versions/__pycache__/7a71dbf71c64_create_db.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..685d1b901ea500de0424db0db2a27cc6cc7a5cb7 GIT binary patch literal 764 zcmah`yKdVs6eT4^55@{wq-cOnT0JPT;>re;B1^q=@z9_^t3{ARrWUGKC^?2ZY3R^D z=qD8Un~nz8PTd4#%T&^GQM*eC-gEEe<>MUQ@1}_WAD3Tm$vX(ZPm%l?(k^(o;=wn7 zK>#qsQU-G=kf4a=Ob!&R1V>m7RBjqK9qU;Aq67x_8utjx*I;OTexFbhHN?U(LT|}k zTBl`Uy_xyeG@80NzL~noH51on^H4ZJs{i0O3KC1#3?!@p@vqas;^Srn73W(bpt z6u1t{VylXZ$N%B>sK3ffyv)cI6|_VT>J^7hh7fj=3Y88BI05kN2Y9|eH-N9~W~YO} di&oz}dDfaem`_{OsSp|+I0XGLJ*;kj' + + #Company.freebies returns a collection of all the freebies for the Company. + @property + def freebies(self): + return session.query(Freebie).filter_by(company_id=self.id).all() + + #Company.devs returns a collection of all the devs who collected freebies from the company. + @property + def devs(self): + return session.query(Dev).join(company_dev).filter(company_dev.c.company_id == self.id).all() + + def give_freebie(self, dev, item_name, value): + new_freebie = Freebie(item_name=item_name, value=value, dev=dev, company=self) + # Assuming you have a session variable for database operations + session.add(new_freebie) + session.commit() + @classmethod + def oldest_company(cls): + oldest_company = session.query(cls).order_by(cls.founding_year).first() + return oldest_company + + + class Dev(Base): __tablename__ = 'devs' id = Column(Integer(), primary_key=True) name= Column(String()) - + + freebies = relationship('Freebie', backref=backref('dev')) + companies = relationship('Company', secondary=company_dev, back_populates='devs') + def __repr__(self): return f'' + + #Dev.freebies returns a collection of all the freebies that the Dev has collected + @property + def freebies(self): + return session.query(Freebie).filter_by(dev_id=self.id).all() + + #Dev.companiesreturns a collection of all the companies that the Dev has collected freebies from. + @property + def companies(self): + return session.query(Company).join(company_dev).filter(company_dev.c.dev_id == self.id).all() + + def received_one(self, item_name): + for freebie in self.freebies: + if freebie.item_name == item_name: + return True + return False + + def give_away(self, other_dev, freebie): + # Check if the freebie belongs to the current dev + if freebie.dev == self: + # Update the freebie's dev to be the given dev + freebie.dev = other_dev + # Assuming you have a session variable for database operations + session.commit() + return True + else: + return False + +class Freebie(Base): + __tablename__ = 'freebies' + + id = Column(Integer(), primary_key=True) + item_name = Column(String()) + value = Column(Integer()) + company_id = Column(Integer(),ForeignKey('companies.id')) + dev_id = Column(Integer(),ForeignKey('devs.id')) + + + #Freebie.dev returns the Dev instance for this Freebie. + @property + def dev(self): + return session.query(Dev).filter(Dev.id == self.dev_id).first() + + #Freebie.company returns the Company instance for this Freebie. + @property + def company(self): + return session.query(Company).filter(Company.id == self.company_id).first() + + def __repr__(self): + return f'Freebie(id={self.id},' + \ + f' item_name={self.item_name},' + \ + f' value={self.value},' + \ + f' company_id={self.company_id},' + \ + f' dev_id={self.dev_id})' + + def print_details(self): + return f"{self.dev.name} owns a {self.item_name} from {self.company.name}" + + + diff --git a/lib/seed.py b/lib/seed.py index b16becbbb..2cafed064 100644 --- a/lib/seed.py +++ b/lib/seed.py @@ -1,3 +1,99 @@ #!/usr/bin/env python3 # Script goes here! + +import random + +from sqlalchemy import create_engine +from sqlalchemy.orm import sessionmaker + +from models import Company, Freebie, Dev + +if __name__ == '__main__': + engine = create_engine('sqlite:///freebies.db') + Session = sessionmaker(bind=engine) + session = Session() + + session.query(Company).delete() + session.query(Freebie).delete() + session.query(Dev).delete() + + + + company_names = [ + 'Quantum Innovations Ltd.', + 'TechVortex Solutions', + 'EpicByte Dynamics', + 'NebulaCraft Innovations', + 'SynthWave Systems', + 'PixelGalaxy Technologies' +] + founding_years = [2005, 2010, 2008, 2012, 2016, 2014] + + companies = [] + for i in range(30): + company = Company( + name=random.choice(company_names), + founding_year=random.choice(founding_years) + + ) + + # add and commit individually to get IDs back + session.add(company) + session.commit() + + companies.append(company) + + developer_names = [ + 'CodeWizardX', + 'ByteMancer', + 'TechNinja42', + 'CyberSorcerer', + 'BugBard', + 'ScriptJester' +] + + devs = [] + for i in range(15): + dev = Dev( + name=random.choice(developer_names), + ) + + session.add(dev) + session.commit() + + devs.append(dev) + + freebie_names = [ + 'FreeJoy', + 'GratisGems', + 'GiveawayGrove', + 'ZeroCostZen', + 'LibertyLoot', + 'GratisTreasure', + 'FreeFlowFinds', + 'SerenitySwag', + 'BountyBliss', + 'ZeroExpenseZing' +] + freebies = [] + for company in companies: + for i in range(random.randint(1,5)): + dev = random.choice(devs) + if company not in dev.companies: + dev.companies.append(company) + session.add(dev) + session.commit() + + freebie = Freebie( + value=random.randint(0, 10000), + item_name=random.choice(freebie_names), + company_id=company.id, + dev_id=dev.id, + ) + + freebies.append(freebie) + + session.bulk_save_objects(freebies) + session.commit() + session.close() \ No newline at end of file