mirror of
https://github.com/lemeow125/Borrowing-TrackerBackend.git
synced 2024-11-16 22:09:27 +08:00
Migrate to postgres, add memcache and vastly improve available equipment instance query time from 1min 30 seconds to 12 seconds
This commit is contained in:
parent
0af8efa793
commit
b0b1f4db86
24 changed files with 1253 additions and 292 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -69,6 +69,7 @@ equipment_tracker/db.sqlite3
|
||||||
equipment_tracker/.env
|
equipment_tracker/.env
|
||||||
equipment_tracker/static/*
|
equipment_tracker/static/*
|
||||||
equipment_tracker/static/
|
equipment_tracker/static/
|
||||||
|
postgres_data/
|
||||||
|
|
||||||
# Flask stuff:
|
# Flask stuff:
|
||||||
instance/
|
instance/
|
||||||
|
|
11
Dockerfile
11
Dockerfile
|
@ -13,16 +13,7 @@ WORKDIR /code
|
||||||
ADD . /code/
|
ADD . /code/
|
||||||
|
|
||||||
# Install pipenv
|
# Install pipenv
|
||||||
RUN pip install --no-cache-dir -r requirements.txt
|
RUN pip install -r requirements.txt
|
||||||
|
|
||||||
# Make migrations
|
|
||||||
RUN python equipment_tracker/manage.py makemigrations
|
|
||||||
|
|
||||||
# Run custom migrate
|
|
||||||
RUN python equipment_tracker/manage.py migrate
|
|
||||||
|
|
||||||
# Generate DRF Spectacular Documentation
|
|
||||||
RUN python equipment_tracker/manage.py spectacular --color --file equipment_tracker/schema.yml
|
|
||||||
|
|
||||||
# Expose port 8000 for the web server
|
# Expose port 8000 for the web server
|
||||||
EXPOSE 8000
|
EXPOSE 8000
|
||||||
|
|
1
Pipfile
1
Pipfile
|
@ -16,6 +16,7 @@ pillow = "*"
|
||||||
psycopg2 = "*"
|
psycopg2 = "*"
|
||||||
django-simple-history = "*"
|
django-simple-history = "*"
|
||||||
django-unfold = "*"
|
django-unfold = "*"
|
||||||
|
pymemcache = "*"
|
||||||
|
|
||||||
[dev-packages]
|
[dev-packages]
|
||||||
|
|
||||||
|
|
727
Pipfile.lock
generated
727
Pipfile.lock
generated
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"_meta": {
|
"_meta": {
|
||||||
"hash": {
|
"hash": {
|
||||||
"sha256": "0dcfc730d5d2c4983b2e6db83e9eeb630ebe9a0146c582c00d4dc4f7e76d74b2"
|
"sha256": "190cc1ffee47d2b15e2ea2fff3a73415c30040f0f8f1c85b965c8f18fd28ea2d"
|
||||||
},
|
},
|
||||||
"pipfile-spec": 6,
|
"pipfile-spec": 6,
|
||||||
"requires": {
|
"requires": {
|
||||||
|
@ -16,6 +16,14 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"default": {
|
"default": {
|
||||||
|
"annotated-types": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:0641064de18ba7a25dee8f96403ebc39113d0cb953a01429249d5c7564666a43",
|
||||||
|
"sha256:563339e807e53ffd9c267e99fc6d9ea23eb8443c08f112651963e24e22f84a5d"
|
||||||
|
],
|
||||||
|
"markers": "python_version >= '3.8'",
|
||||||
|
"version": "==0.6.0"
|
||||||
|
},
|
||||||
"asgiref": {
|
"asgiref": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:89b2ef2247e3b562a16eef663bc0e2e703ec6468e2fa8a5cd61cd449786d4f6e",
|
"sha256:89b2ef2247e3b562a16eef663bc0e2e703ec6468e2fa8a5cd61cd449786d4f6e",
|
||||||
|
@ -26,11 +34,11 @@
|
||||||
},
|
},
|
||||||
"attrs": {
|
"attrs": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:1f28b4522cdc2fb4256ac1a020c78acf9cba2c6b461ccd2c126f3aa8e8335d04",
|
"sha256:935dc3b529c262f6cf76e50877d35a4bd3c1de194fd41f47a2b7ae8f19971f30",
|
||||||
"sha256:6279836d581513a26f1bf235f9acd333bc9115683f14f7e8fae46c98fc50e015"
|
"sha256:99b87a485a5820b23b879f04c2305b44b951b502fd64be915879d77a7e8fc6f1"
|
||||||
],
|
],
|
||||||
"markers": "python_version >= '3.7'",
|
"markers": "python_version >= '3.7'",
|
||||||
"version": "==23.1.0"
|
"version": "==23.2.0"
|
||||||
},
|
},
|
||||||
"certifi": {
|
"certifi": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
|
@ -194,6 +202,22 @@
|
||||||
"markers": "python_full_version >= '3.7.0'",
|
"markers": "python_full_version >= '3.7.0'",
|
||||||
"version": "==3.3.2"
|
"version": "==3.3.2"
|
||||||
},
|
},
|
||||||
|
"click": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28",
|
||||||
|
"sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de"
|
||||||
|
],
|
||||||
|
"markers": "python_version >= '3.7'",
|
||||||
|
"version": "==8.1.7"
|
||||||
|
},
|
||||||
|
"colorama": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44",
|
||||||
|
"sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"
|
||||||
|
],
|
||||||
|
"markers": "platform_system == 'Windows'",
|
||||||
|
"version": "==0.4.6"
|
||||||
|
},
|
||||||
"cryptography": {
|
"cryptography": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:079b85658ea2f59c4f43b70f8119a52414cdb7be34da5d019a77bf96d473b960",
|
"sha256:079b85658ea2f59c4f43b70f8119a52414cdb7be34da5d019a77bf96d473b960",
|
||||||
|
@ -233,11 +257,11 @@
|
||||||
},
|
},
|
||||||
"django": {
|
"django": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:8e0f1c2c2786b5c0e39fe1afce24c926040fad47c8ea8ad30aaf1188df29fc41",
|
"sha256:8c8659665bc6e3a44fefe1ab0a291e5a3fb3979f9a8230be29de975e57e8f854",
|
||||||
"sha256:e1d37c51ad26186de355cbcec16613ebdabfa9689bbade9c538835205a8abbe9"
|
"sha256:f47a37a90b9bbe2c8ec360235192c7fddfdc832206fcf618bb849b39256affc1"
|
||||||
],
|
],
|
||||||
"index": "pypi",
|
"index": "pypi",
|
||||||
"version": "==4.2.7"
|
"version": "==5.0.1"
|
||||||
},
|
},
|
||||||
"django-cors-headers": {
|
"django-cors-headers": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
|
@ -271,11 +295,11 @@
|
||||||
},
|
},
|
||||||
"django-unfold": {
|
"django-unfold": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:1863e7aea57812a29ed7230fc5c6fa338082b1e32d480720b426a20b4f23b8bd",
|
"sha256:65b1fb44bdba851259d5e788ff699cf8617895aad6e60a6a3c922a64c08e02be",
|
||||||
"sha256:27b170f1bf9e0c349d20bde53e5b90d9d02a73a8f786def86121c9d6c56dbe41"
|
"sha256:743e55950f6045780f1dade1c31fc250a6acf041d122371bdc493e100560e051"
|
||||||
],
|
],
|
||||||
"index": "pypi",
|
"index": "pypi",
|
||||||
"version": "==0.17.1"
|
"version": "==0.19.0"
|
||||||
},
|
},
|
||||||
"djangorestframework": {
|
"djangorestframework": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
|
@ -287,11 +311,11 @@
|
||||||
},
|
},
|
||||||
"djangorestframework-simplejwt": {
|
"djangorestframework-simplejwt": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:631d7ae2ed4365d7196a35d3cc0f6d382f7bd3361fb24c894f8f92b4da5db27d",
|
"sha256:381bc966aa46913905629d472cd72ad45faa265509764e20ffd440164c88d220",
|
||||||
"sha256:8e4c5dfca8d11c0b8a66dfd8a4e3fc1c6aa7ea188d10907ff91c942f4b52ed66"
|
"sha256:6c4bd37537440bc439564ebf7d6085e74c5411485197073f508ebdfa34bc9fae"
|
||||||
],
|
],
|
||||||
"markers": "python_version >= '3.7'",
|
"markers": "python_version >= '3.8'",
|
||||||
"version": "==5.3.0"
|
"version": "==5.3.1"
|
||||||
},
|
},
|
||||||
"djoser": {
|
"djoser": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
|
@ -301,23 +325,47 @@
|
||||||
"index": "pypi",
|
"index": "pypi",
|
||||||
"version": "==2.2.2"
|
"version": "==2.2.2"
|
||||||
},
|
},
|
||||||
|
"dotty-dict": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:4b016e03b8ae265539757a53eba24b9bfda506fb94fbce0bee843c6f05541a15",
|
||||||
|
"sha256:5022d234d9922f13aa711b4950372a06a6d64cb6d6db9ba43d0ba133ebfce31f"
|
||||||
|
],
|
||||||
|
"markers": "python_version >= '3.5' and python_version < '4.0'",
|
||||||
|
"version": "==1.3.1"
|
||||||
|
},
|
||||||
"drf-spectacular": {
|
"drf-spectacular": {
|
||||||
"extras": [
|
"extras": [
|
||||||
"sidecar"
|
"sidecar"
|
||||||
],
|
],
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:aee55330a774ba8a9cbdb125714d1c9ee05a8aafd3ce3be8bfd26527649aeb44",
|
"sha256:18d7ae74b2b5d533fd31f1c591ebaa5cce1447e0976ced927401e3163040dea9",
|
||||||
"sha256:c0002a820b11771fdbf37853deb371947caf0159d1afeeffe7598e964bc1db94"
|
"sha256:6ab2d20674244e8c940c2883f744b43c34fc68c70ea3aefa802f574108c9699b"
|
||||||
],
|
],
|
||||||
"index": "pypi",
|
"index": "pypi",
|
||||||
"version": "==0.26.5"
|
"version": "==0.27.0"
|
||||||
},
|
},
|
||||||
"drf-spectacular-sidecar": {
|
"drf-spectacular-sidecar": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:3d042a6772512f4d238f0385d3430acf5f669f595fd0be2641fe6bbfb4c7b376",
|
"sha256:099ec58b6af6a90e851a9329b12a57aa1ee7daa6cef62fb504f2ed302f10da76",
|
||||||
"sha256:546a83c173589715e530fad211af60cbcda2db54eb9e0935d44251639332af6d"
|
"sha256:4b9e33b4dcfa43f84e3db2659d31766a018a2b98b02d8856d9cd69580a4911c9"
|
||||||
],
|
],
|
||||||
"version": "==2023.10.1"
|
"version": "==2024.1.1"
|
||||||
|
},
|
||||||
|
"gitdb": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:81a3407ddd2ee8df444cbacea00e2d038e40150acfa3001696fe0dcf1d3adfa4",
|
||||||
|
"sha256:bf5421126136d6d0af55bc1e7c1af1c397a34f5b7bd79e776cd3e89785c2b04b"
|
||||||
|
],
|
||||||
|
"markers": "python_version >= '3.7'",
|
||||||
|
"version": "==4.0.11"
|
||||||
|
},
|
||||||
|
"gitpython": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:22b126e9ffb671fdd0c129796343a02bf67bf2994b35449ffc9321aa755e18a4",
|
||||||
|
"sha256:cf14627d5a8049ffbf49915732e5eddbe8134c3bdb9d476e6182b676fc573f8a"
|
||||||
|
],
|
||||||
|
"markers": "python_version >= '3.7'",
|
||||||
|
"version": "==3.1.40"
|
||||||
},
|
},
|
||||||
"idna": {
|
"idna": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
|
@ -327,6 +375,14 @@
|
||||||
"markers": "python_version >= '3.5'",
|
"markers": "python_version >= '3.5'",
|
||||||
"version": "==3.6"
|
"version": "==3.6"
|
||||||
},
|
},
|
||||||
|
"importlib-resources": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:3893a00122eafde6894c59914446a512f728a0c1a45f9bb9b63721b6bacf0b4a",
|
||||||
|
"sha256:e8bf90d8213b486f428c9c39714b920041cb02c184686a3dee24905aaa8105d6"
|
||||||
|
],
|
||||||
|
"markers": "python_version >= '3.8'",
|
||||||
|
"version": "==6.1.1"
|
||||||
|
},
|
||||||
"inflection": {
|
"inflection": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:1a29730d366e996aaacffb2f1f1cb9593dc38e2ddd30c91250c6dde09ea9b417",
|
"sha256:1a29730d366e996aaacffb2f1f1cb9593dc38e2ddd30c91250c6dde09ea9b417",
|
||||||
|
@ -335,6 +391,14 @@
|
||||||
"markers": "python_version >= '3.5'",
|
"markers": "python_version >= '3.5'",
|
||||||
"version": "==0.5.1"
|
"version": "==0.5.1"
|
||||||
},
|
},
|
||||||
|
"jinja2": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:31351a702a408a9e7595a8fc6150fc3f43bb6bf7e319770cbc0db9df9437e852",
|
||||||
|
"sha256:6088930bfe239f0e6710546ab9c19c9ef35e29792895fed6e6e31a023a182a61"
|
||||||
|
],
|
||||||
|
"markers": "python_version >= '3.7'",
|
||||||
|
"version": "==3.1.2"
|
||||||
|
},
|
||||||
"jsonschema": {
|
"jsonschema": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:4f614fd46d8d61258610998997743ec5492a648b33cf478c1ddc23ed4598a5fa",
|
"sha256:4f614fd46d8d61258610998997743ec5492a648b33cf478c1ddc23ed4598a5fa",
|
||||||
|
@ -345,11 +409,93 @@
|
||||||
},
|
},
|
||||||
"jsonschema-specifications": {
|
"jsonschema-specifications": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:9472fc4fea474cd74bea4a2b190daeccb5a9e4db2ea80efcf7a1b582fc9a81b8",
|
"sha256:48a76787b3e70f5ed53f1160d2b81f586e4ca6d1548c5de7085d1682674764cc",
|
||||||
"sha256:e74ba7c0a65e8cb49dc26837d6cfe576557084a8b423ed16a420984228104f93"
|
"sha256:87e4fdf3a94858b8a2ba2778d9ba57d8a9cafca7c7489c46ba0d30a8bc6a9c3c"
|
||||||
],
|
],
|
||||||
"markers": "python_version >= '3.8'",
|
"markers": "python_version >= '3.8'",
|
||||||
"version": "==2023.11.2"
|
"version": "==2023.12.1"
|
||||||
|
},
|
||||||
|
"markdown-it-py": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1",
|
||||||
|
"sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb"
|
||||||
|
],
|
||||||
|
"markers": "python_version >= '3.8'",
|
||||||
|
"version": "==3.0.0"
|
||||||
|
},
|
||||||
|
"markupsafe": {
|
||||||
|
"hashes": [
|
||||||
|
"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.3"
|
||||||
|
},
|
||||||
|
"mdurl": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8",
|
||||||
|
"sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba"
|
||||||
|
],
|
||||||
|
"markers": "python_version >= '3.7'",
|
||||||
|
"version": "==0.1.2"
|
||||||
},
|
},
|
||||||
"oauthlib": {
|
"oauthlib": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
|
@ -361,63 +507,77 @@
|
||||||
},
|
},
|
||||||
"pillow": {
|
"pillow": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:00f438bb841382b15d7deb9a05cc946ee0f2c352653c7aa659e75e592f6fa17d",
|
"sha256:0304004f8067386b477d20a518b50f3fa658a28d44e4116970abfcd94fac34a8",
|
||||||
"sha256:0248f86b3ea061e67817c47ecbe82c23f9dd5d5226200eb9090b3873d3ca32de",
|
"sha256:0689b5a8c5288bc0504d9fcee48f61a6a586b9b98514d7d29b840143d6734f39",
|
||||||
"sha256:04f6f6149f266a100374ca3cc368b67fb27c4af9f1cc8cb6306d849dcdf12616",
|
"sha256:0eae2073305f451d8ecacb5474997c08569fb4eb4ac231ffa4ad7d342fdc25ac",
|
||||||
"sha256:062a1610e3bc258bff2328ec43f34244fcec972ee0717200cb1425214fe5b839",
|
"sha256:0fb3e7fc88a14eacd303e90481ad983fd5b69c761e9e6ef94c983f91025da869",
|
||||||
"sha256:0a026c188be3b443916179f5d04548092e253beb0c3e2ee0a4e2cdad72f66099",
|
"sha256:11fa2e5984b949b0dd6d7a94d967743d87c577ff0b83392f17cb3990d0d2fd6e",
|
||||||
"sha256:0f7c276c05a9767e877a0b4c5050c8bee6a6d960d7f0c11ebda6b99746068c2a",
|
"sha256:127cee571038f252a552760076407f9cff79761c3d436a12af6000cd182a9d04",
|
||||||
"sha256:1a8413794b4ad9719346cd9306118450b7b00d9a15846451549314a58ac42219",
|
"sha256:154e939c5f0053a383de4fd3d3da48d9427a7e985f58af8e94d0b3c9fcfcf4f9",
|
||||||
"sha256:1ab05f3db77e98f93964697c8efc49c7954b08dd61cff526b7f2531a22410106",
|
"sha256:15587643b9e5eb26c48e49a7b33659790d28f190fc514a322d55da2fb5c2950e",
|
||||||
"sha256:1c3ac5423c8c1da5928aa12c6e258921956757d976405e9467c5f39d1d577a4b",
|
"sha256:170aeb00224ab3dc54230c797f8404507240dd868cf52066f66a41b33169bdbe",
|
||||||
"sha256:1c41d960babf951e01a49c9746f92c5a7e0d939d1652d7ba30f6b3090f27e412",
|
"sha256:1b5e1b74d1bd1b78bc3477528919414874748dd363e6272efd5abf7654e68bef",
|
||||||
"sha256:1fafabe50a6977ac70dfe829b2d5735fd54e190ab55259ec8aea4aaea412fa0b",
|
"sha256:1da3b2703afd040cf65ec97efea81cfba59cdbed9c11d8efc5ab09df9509fc56",
|
||||||
"sha256:1fb29c07478e6c06a46b867e43b0bcdb241b44cc52be9bc25ce5944eed4648e7",
|
"sha256:1e23412b5c41e58cec602f1135c57dfcf15482013ce6e5f093a86db69646a5aa",
|
||||||
"sha256:24fadc71218ad2b8ffe437b54876c9382b4a29e030a05a9879f615091f42ffc2",
|
"sha256:2247178effb34a77c11c0e8ac355c7a741ceca0a732b27bf11e747bbc950722f",
|
||||||
"sha256:2cdc65a46e74514ce742c2013cd4a2d12e8553e3a2563c64879f7c7e4d28bce7",
|
"sha256:257d8788df5ca62c980314053197f4d46eefedf4e6175bc9412f14412ec4ea2f",
|
||||||
"sha256:2ef6721c97894a7aa77723740a09547197533146fba8355e86d6d9a4a1056b14",
|
"sha256:3031709084b6e7852d00479fd1d310b07d0ba82765f973b543c8af5061cf990e",
|
||||||
"sha256:3b834f4b16173e5b92ab6566f0473bfb09f939ba14b23b8da1f54fa63e4b623f",
|
"sha256:322209c642aabdd6207517e9739c704dc9f9db943015535783239022002f054a",
|
||||||
"sha256:3d929a19f5469b3f4df33a3df2983db070ebb2088a1e145e18facbc28cae5b27",
|
"sha256:322bdf3c9b556e9ffb18f93462e5f749d3444ce081290352c6070d014c93feb2",
|
||||||
"sha256:41f67248d92a5e0a2076d3517d8d4b1e41a97e2df10eb8f93106c89107f38b57",
|
"sha256:33870dc4653c5017bf4c8873e5488d8f8d5f8935e2f1fb9a2208c47cdd66efd2",
|
||||||
"sha256:47e5bf85b80abc03be7455c95b6d6e4896a62f6541c1f2ce77a7d2bb832af262",
|
"sha256:35bb52c37f256f662abdfa49d2dfa6ce5d93281d323a9af377a120e89a9eafb5",
|
||||||
"sha256:4d0152565c6aa6ebbfb1e5d8624140a440f2b99bf7afaafbdbf6430426497f28",
|
"sha256:3c31822339516fb3c82d03f30e22b1d038da87ef27b6a78c9549888f8ceda39a",
|
||||||
"sha256:50d08cd0a2ecd2a8657bd3d82c71efd5a58edb04d9308185d66c3a5a5bed9610",
|
"sha256:3eedd52442c0a5ff4f887fab0c1c0bb164d8635b32c894bc1faf4c618dd89df2",
|
||||||
"sha256:61f1a9d247317fa08a308daaa8ee7b3f760ab1809ca2da14ecc88ae4257d6172",
|
"sha256:3ff074fc97dd4e80543a3e91f69d58889baf2002b6be64347ea8cf5533188213",
|
||||||
"sha256:6932a7652464746fcb484f7fc3618e6503d2066d853f68a4bd97193a3996e273",
|
"sha256:47c0995fc4e7f79b5cfcab1fc437ff2890b770440f7696a3ba065ee0fd496563",
|
||||||
"sha256:7a7e3daa202beb61821c06d2517428e8e7c1aab08943e92ec9e5755c2fc9ba5e",
|
"sha256:49d9ba1ed0ef3e061088cd1e7538a0759aab559e2e0a80a36f9fd9d8c0c21591",
|
||||||
"sha256:7dbaa3c7de82ef37e7708521be41db5565004258ca76945ad74a8e998c30af8d",
|
"sha256:51f1a1bffc50e2e9492e87d8e09a17c5eea8409cda8d3f277eb6edc82813c17c",
|
||||||
"sha256:7df5608bc38bd37ef585ae9c38c9cd46d7c81498f086915b0f97255ea60c2818",
|
"sha256:52a50aa3fb3acb9cf7213573ef55d31d6eca37f5709c69e6858fe3bc04a5c2a2",
|
||||||
"sha256:806abdd8249ba3953c33742506fe414880bad78ac25cc9a9b1c6ae97bedd573f",
|
"sha256:54f1852cd531aa981bc0965b7d609f5f6cc8ce8c41b1139f6ed6b3c54ab82bfb",
|
||||||
"sha256:883f216eac8712b83a63f41b76ddfb7b2afab1b74abbb413c5df6680f071a6b9",
|
"sha256:609448742444d9290fd687940ac0b57fb35e6fd92bdb65386e08e99af60bf757",
|
||||||
"sha256:912e3812a1dbbc834da2b32299b124b5ddcb664ed354916fd1ed6f193f0e2d01",
|
"sha256:69ffdd6120a4737710a9eee73e1d2e37db89b620f702754b8f6e62594471dee0",
|
||||||
"sha256:937bdc5a7f5343d1c97dc98149a0be7eb9704e937fe3dc7140e229ae4fc572a7",
|
"sha256:6fad5ff2f13d69b7e74ce5b4ecd12cc0ec530fcee76356cac6742785ff71c452",
|
||||||
"sha256:9882a7451c680c12f232a422730f986a1fcd808da0fd428f08b671237237d651",
|
"sha256:7049e301399273a0136ff39b84c3678e314f2158f50f517bc50285fb5ec847ad",
|
||||||
"sha256:9a92109192b360634a4489c0c756364c0c3a2992906752165ecb50544c251312",
|
"sha256:70c61d4c475835a19b3a5aa42492409878bbca7438554a1f89d20d58a7c75c01",
|
||||||
"sha256:9d7bc666bd8c5a4225e7ac71f2f9d12466ec555e89092728ea0f5c0c2422ea80",
|
"sha256:716d30ed977be8b37d3ef185fecb9e5a1d62d110dfbdcd1e2a122ab46fddb03f",
|
||||||
"sha256:a5f63b5a68daedc54c7c3464508d8c12075e56dcfbd42f8c1bf40169061ae666",
|
"sha256:753cd8f2086b2b80180d9b3010dd4ed147efc167c90d3bf593fe2af21265e5a5",
|
||||||
"sha256:a646e48de237d860c36e0db37ecaecaa3619e6f3e9d5319e527ccbc8151df061",
|
"sha256:773efe0603db30c281521a7c0214cad7836c03b8ccff897beae9b47c0b657d61",
|
||||||
"sha256:a89b8312d51715b510a4fe9fc13686283f376cfd5abca8cd1c65e4c76e21081b",
|
"sha256:7823bdd049099efa16e4246bdf15e5a13dbb18a51b68fa06d6c1d4d8b99a796e",
|
||||||
"sha256:a92386125e9ee90381c3369f57a2a50fa9e6aa8b1cf1d9c4b200d41a7dd8e992",
|
"sha256:7c8f97e8e7a9009bcacbe3766a36175056c12f9a44e6e6f2d5caad06dcfbf03b",
|
||||||
"sha256:ae88931f93214777c7a3aa0a8f92a683f83ecde27f65a45f95f22d289a69e593",
|
"sha256:823ef7a27cf86df6597fa0671066c1b596f69eba53efa3d1e1cb8b30f3533068",
|
||||||
"sha256:afc8eef765d948543a4775f00b7b8c079b3321d6b675dde0d02afa2ee23000b4",
|
"sha256:8373c6c251f7ef8bda6675dd6d2b3a0fcc31edf1201266b5cf608b62a37407f9",
|
||||||
"sha256:b0eb01ca85b2361b09480784a7931fc648ed8b7836f01fb9241141b968feb1db",
|
"sha256:83b2021f2ade7d1ed556bc50a399127d7fb245e725aa0113ebd05cfe88aaf588",
|
||||||
"sha256:b1c25762197144e211efb5f4e8ad656f36c8d214d390585d1d21281f46d556ba",
|
"sha256:870ea1ada0899fd0b79643990809323b389d4d1d46c192f97342eeb6ee0b8483",
|
||||||
"sha256:b4005fee46ed9be0b8fb42be0c20e79411533d1fd58edabebc0dd24626882cfd",
|
"sha256:8d12251f02d69d8310b046e82572ed486685c38f02176bd08baf216746eb947f",
|
||||||
"sha256:b920e4d028f6442bea9a75b7491c063f0b9a3972520731ed26c83e254302eb1e",
|
"sha256:9c23f307202661071d94b5e384e1e1dc7dfb972a28a2310e4ee16103e66ddb67",
|
||||||
"sha256:baada14941c83079bf84c037e2d8b7506ce201e92e3d2fa0d1303507a8538212",
|
"sha256:9d189550615b4948f45252d7f005e53c2040cea1af5b60d6f79491a6e147eef7",
|
||||||
"sha256:bb40c011447712d2e19cc261c82655f75f32cb724788df315ed992a4d65696bb",
|
"sha256:a086c2af425c5f62a65e12fbf385f7c9fcb8f107d0849dba5839461a129cf311",
|
||||||
"sha256:c0949b55eb607898e28eaccb525ab104b2d86542a85c74baf3a6dc24002edec2",
|
"sha256:a2b56ba36e05f973d450582fb015594aaa78834fefe8dfb8fcd79b93e64ba4c6",
|
||||||
"sha256:c9aeea7b63edb7884b031a35305629a7593272b54f429a9869a4f63a1bf04c34",
|
"sha256:aebb6044806f2e16ecc07b2a2637ee1ef67a11840a66752751714a0d924adf72",
|
||||||
"sha256:cfe96560c6ce2f4c07d6647af2d0f3c54cc33289894ebd88cfbb3bcd5391e256",
|
"sha256:b1b3020d90c2d8e1dae29cf3ce54f8094f7938460fb5ce8bc5c01450b01fbaf6",
|
||||||
"sha256:d27b5997bdd2eb9fb199982bb7eb6164db0426904020dc38c10203187ae2ff2f",
|
"sha256:b4b6b1e20608493548b1f32bce8cca185bf0480983890403d3b8753e44077129",
|
||||||
"sha256:d921bc90b1defa55c9917ca6b6b71430e4286fc9e44c55ead78ca1a9f9eba5f2",
|
"sha256:b6f491cdf80ae540738859d9766783e3b3c8e5bd37f5dfa0b76abdecc5081f13",
|
||||||
"sha256:e6bf8de6c36ed96c86ea3b6e1d5273c53f46ef518a062464cd7ef5dd2cf92e38",
|
"sha256:b792a349405fbc0163190fde0dc7b3fef3c9268292586cf5645598b48e63dc67",
|
||||||
"sha256:eaed6977fa73408b7b8a24e8b14e59e1668cfc0f4c40193ea7ced8e210adf996",
|
"sha256:b7c2286c23cd350b80d2fc9d424fc797575fb16f854b831d16fd47ceec078f2c",
|
||||||
"sha256:fa1d323703cfdac2036af05191b969b910d8f115cf53093125e4058f62012c9a",
|
"sha256:babf5acfede515f176833ed6028754cbcd0d206f7f614ea3447d67c33be12516",
|
||||||
"sha256:fe1e26e1ffc38be097f0ba1d0d07fcade2bcfd1d023cda5b29935ae8052bd793"
|
"sha256:c365fd1703040de1ec284b176d6af5abe21b427cb3a5ff68e0759e1e313a5e7e",
|
||||||
|
"sha256:c4225f5220f46b2fde568c74fca27ae9771536c2e29d7c04f4fb62c83275ac4e",
|
||||||
|
"sha256:c570f24be1e468e3f0ce7ef56a89a60f0e05b30a3669a459e419c6eac2c35364",
|
||||||
|
"sha256:c6dafac9e0f2b3c78df97e79af707cdc5ef8e88208d686a4847bab8266870023",
|
||||||
|
"sha256:c8de2789052ed501dd829e9cae8d3dcce7acb4777ea4a479c14521c942d395b1",
|
||||||
|
"sha256:cb28c753fd5eb3dd859b4ee95de66cc62af91bcff5db5f2571d32a520baf1f04",
|
||||||
|
"sha256:cb4c38abeef13c61d6916f264d4845fab99d7b711be96c326b84df9e3e0ff62d",
|
||||||
|
"sha256:d1b35bcd6c5543b9cb547dee3150c93008f8dd0f1fef78fc0cd2b141c5baf58a",
|
||||||
|
"sha256:d8e6aeb9201e655354b3ad049cb77d19813ad4ece0df1249d3c793de3774f8c7",
|
||||||
|
"sha256:d8ecd059fdaf60c1963c58ceb8997b32e9dc1b911f5da5307aab614f1ce5c2fb",
|
||||||
|
"sha256:da2b52b37dad6d9ec64e653637a096905b258d2fc2b984c41ae7d08b938a67e4",
|
||||||
|
"sha256:e87f0b2c78157e12d7686b27d63c070fd65d994e8ddae6f328e0dcf4a0cd007e",
|
||||||
|
"sha256:edca80cbfb2b68d7b56930b84a0e45ae1694aeba0541f798e908a49d66b837f1",
|
||||||
|
"sha256:f379abd2f1e3dddb2b61bc67977a6b5a0a3f7485538bcc6f39ec76163891ee48",
|
||||||
|
"sha256:fe4c15f6c9285dc54ce6553a3ce908ed37c8f3825b5a51a15c91442bb955b868"
|
||||||
],
|
],
|
||||||
"index": "pypi",
|
"index": "pypi",
|
||||||
"version": "==10.1.0"
|
"version": "==10.2.0"
|
||||||
},
|
},
|
||||||
"psycopg2": {
|
"psycopg2": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
|
@ -445,6 +605,133 @@
|
||||||
],
|
],
|
||||||
"version": "==2.21"
|
"version": "==2.21"
|
||||||
},
|
},
|
||||||
|
"pydantic": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:b3ef57c62535b0941697cce638c08900d87fcb67e29cfa99e8a68f747f393f7a",
|
||||||
|
"sha256:d0caf5954bee831b6bfe7e338c32b9e30c85dfe080c843680783ac2b631673b4"
|
||||||
|
],
|
||||||
|
"markers": "python_version >= '3.7'",
|
||||||
|
"version": "==2.5.3"
|
||||||
|
},
|
||||||
|
"pydantic-core": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:00646784f6cd993b1e1c0e7b0fdcbccc375d539db95555477771c27555e3c556",
|
||||||
|
"sha256:00b1087dabcee0b0ffd104f9f53d7d3eaddfaa314cdd6726143af6bc713aa27e",
|
||||||
|
"sha256:0348b1dc6b76041516e8a854ff95b21c55f5a411c3297d2ca52f5528e49d8411",
|
||||||
|
"sha256:036137b5ad0cb0004c75b579445a1efccd072387a36c7f217bb8efd1afbe5245",
|
||||||
|
"sha256:095b707bb287bfd534044166ab767bec70a9bba3175dcdc3371782175c14e43c",
|
||||||
|
"sha256:0c08de15d50fa190d577e8591f0329a643eeaed696d7771760295998aca6bc66",
|
||||||
|
"sha256:1302a54f87b5cd8528e4d6d1bf2133b6aa7c6122ff8e9dc5220fbc1e07bffebd",
|
||||||
|
"sha256:172de779e2a153d36ee690dbc49c6db568d7b33b18dc56b69a7514aecbcf380d",
|
||||||
|
"sha256:1b027c86c66b8627eb90e57aee1f526df77dc6d8b354ec498be9a757d513b92b",
|
||||||
|
"sha256:1ce830e480f6774608dedfd4a90c42aac4a7af0a711f1b52f807130c2e434c06",
|
||||||
|
"sha256:1fd0c1d395372843fba13a51c28e3bb9d59bd7aebfeb17358ffaaa1e4dbbe948",
|
||||||
|
"sha256:23598acb8ccaa3d1d875ef3b35cb6376535095e9405d91a3d57a8c7db5d29341",
|
||||||
|
"sha256:24368e31be2c88bd69340fbfe741b405302993242ccb476c5c3ff48aeee1afe0",
|
||||||
|
"sha256:26a92ae76f75d1915806b77cf459811e772d8f71fd1e4339c99750f0e7f6324f",
|
||||||
|
"sha256:27e524624eace5c59af499cd97dc18bb201dc6a7a2da24bfc66ef151c69a5f2a",
|
||||||
|
"sha256:2b8719037e570639e6b665a4050add43134d80b687288ba3ade18b22bbb29dd2",
|
||||||
|
"sha256:2c5bcf3414367e29f83fd66f7de64509a8fd2368b1edf4351e862910727d3e51",
|
||||||
|
"sha256:2dbe357bc4ddda078f79d2a36fc1dd0494a7f2fad83a0a684465b6f24b46fe80",
|
||||||
|
"sha256:2f5fa187bde8524b1e37ba894db13aadd64faa884657473b03a019f625cee9a8",
|
||||||
|
"sha256:2f6ffc6701a0eb28648c845f4945a194dc7ab3c651f535b81793251e1185ac3d",
|
||||||
|
"sha256:314ccc4264ce7d854941231cf71b592e30d8d368a71e50197c905874feacc8a8",
|
||||||
|
"sha256:36026d8f99c58d7044413e1b819a67ca0e0b8ebe0f25e775e6c3d1fabb3c38fb",
|
||||||
|
"sha256:36099c69f6b14fc2c49d7996cbf4f87ec4f0e66d1c74aa05228583225a07b590",
|
||||||
|
"sha256:36fa402dcdc8ea7f1b0ddcf0df4254cc6b2e08f8cd80e7010d4c4ae6e86b2a87",
|
||||||
|
"sha256:370ffecb5316ed23b667d99ce4debe53ea664b99cc37bfa2af47bc769056d534",
|
||||||
|
"sha256:3860c62057acd95cc84044e758e47b18dcd8871a328ebc8ccdefd18b0d26a21b",
|
||||||
|
"sha256:399ac0891c284fa8eb998bcfa323f2234858f5d2efca3950ae58c8f88830f145",
|
||||||
|
"sha256:3a0b5db001b98e1c649dd55afa928e75aa4087e587b9524a4992316fa23c9fba",
|
||||||
|
"sha256:3dcf1978be02153c6a31692d4fbcc2a3f1db9da36039ead23173bc256ee3b91b",
|
||||||
|
"sha256:4241204e4b36ab5ae466ecec5c4c16527a054c69f99bba20f6f75232a6a534e2",
|
||||||
|
"sha256:438027a975cc213a47c5d70672e0d29776082155cfae540c4e225716586be75e",
|
||||||
|
"sha256:43e166ad47ba900f2542a80d83f9fc65fe99eb63ceec4debec160ae729824052",
|
||||||
|
"sha256:478e9e7b360dfec451daafe286998d4a1eeaecf6d69c427b834ae771cad4b622",
|
||||||
|
"sha256:4ce8299b481bcb68e5c82002b96e411796b844d72b3e92a3fbedfe8e19813eab",
|
||||||
|
"sha256:4f86f1f318e56f5cbb282fe61eb84767aee743ebe32c7c0834690ebea50c0a6b",
|
||||||
|
"sha256:55a23dcd98c858c0db44fc5c04fc7ed81c4b4d33c653a7c45ddaebf6563a2f66",
|
||||||
|
"sha256:599c87d79cab2a6a2a9df4aefe0455e61e7d2aeede2f8577c1b7c0aec643ee8e",
|
||||||
|
"sha256:5aa90562bc079c6c290f0512b21768967f9968e4cfea84ea4ff5af5d917016e4",
|
||||||
|
"sha256:64634ccf9d671c6be242a664a33c4acf12882670b09b3f163cd00a24cffbd74e",
|
||||||
|
"sha256:667aa2eac9cd0700af1ddb38b7b1ef246d8cf94c85637cbb03d7757ca4c3fdec",
|
||||||
|
"sha256:6a31d98c0d69776c2576dda4b77b8e0c69ad08e8b539c25c7d0ca0dc19a50d6c",
|
||||||
|
"sha256:6af4b3f52cc65f8a0bc8b1cd9676f8c21ef3e9132f21fed250f6958bd7223bed",
|
||||||
|
"sha256:6c8edaea3089bf908dd27da8f5d9e395c5b4dc092dbcce9b65e7156099b4b937",
|
||||||
|
"sha256:71d72ca5eaaa8d38c8df16b7deb1a2da4f650c41b58bb142f3fb75d5ad4a611f",
|
||||||
|
"sha256:72f9a942d739f09cd42fffe5dc759928217649f070056f03c70df14f5770acf9",
|
||||||
|
"sha256:747265448cb57a9f37572a488a57d873fd96bf51e5bb7edb52cfb37124516da4",
|
||||||
|
"sha256:75ec284328b60a4e91010c1acade0c30584f28a1f345bc8f72fe8b9e46ec6a96",
|
||||||
|
"sha256:78d0768ee59baa3de0f4adac9e3748b4b1fffc52143caebddfd5ea2961595277",
|
||||||
|
"sha256:78ee52ecc088c61cce32b2d30a826f929e1708f7b9247dc3b921aec367dc1b23",
|
||||||
|
"sha256:7be719e4d2ae6c314f72844ba9d69e38dff342bc360379f7c8537c48e23034b7",
|
||||||
|
"sha256:7e1f4744eea1501404b20b0ac059ff7e3f96a97d3e3f48ce27a139e053bb370b",
|
||||||
|
"sha256:7e90d6cc4aad2cc1f5e16ed56e46cebf4877c62403a311af20459c15da76fd91",
|
||||||
|
"sha256:7ebe3416785f65c28f4f9441e916bfc8a54179c8dea73c23023f7086fa601c5d",
|
||||||
|
"sha256:7f41533d7e3cf9520065f610b41ac1c76bc2161415955fbcead4981b22c7611e",
|
||||||
|
"sha256:7f5025db12fc6de7bc1104d826d5aee1d172f9ba6ca936bf6474c2148ac336c1",
|
||||||
|
"sha256:86c963186ca5e50d5c8287b1d1c9d3f8f024cbe343d048c5bd282aec2d8641f2",
|
||||||
|
"sha256:86ce5fcfc3accf3a07a729779d0b86c5d0309a4764c897d86c11089be61da160",
|
||||||
|
"sha256:8a14c192c1d724c3acbfb3f10a958c55a2638391319ce8078cb36c02283959b9",
|
||||||
|
"sha256:8b93785eadaef932e4fe9c6e12ba67beb1b3f1e5495631419c784ab87e975670",
|
||||||
|
"sha256:8ed1af8692bd8d2a29d702f1a2e6065416d76897d726e45a1775b1444f5928a7",
|
||||||
|
"sha256:92879bce89f91f4b2416eba4429c7b5ca22c45ef4a499c39f0c5c69257522c7c",
|
||||||
|
"sha256:94fc0e6621e07d1e91c44e016cc0b189b48db053061cc22d6298a611de8071bb",
|
||||||
|
"sha256:982487f8931067a32e72d40ab6b47b1628a9c5d344be7f1a4e668fb462d2da42",
|
||||||
|
"sha256:9862bf828112e19685b76ca499b379338fd4c5c269d897e218b2ae8fcb80139d",
|
||||||
|
"sha256:99b14dbea2fdb563d8b5a57c9badfcd72083f6006caf8e126b491519c7d64ca8",
|
||||||
|
"sha256:9c6a5c79b28003543db3ba67d1df336f253a87d3112dac3a51b94f7d48e4c0e1",
|
||||||
|
"sha256:a19b794f8fe6569472ff77602437ec4430f9b2b9ec7a1105cfd2232f9ba355e6",
|
||||||
|
"sha256:a306cdd2ad3a7d795d8e617a58c3a2ed0f76c8496fb7621b6cd514eb1532cae8",
|
||||||
|
"sha256:a3dde6cac75e0b0902778978d3b1646ca9f438654395a362cb21d9ad34b24acf",
|
||||||
|
"sha256:a874f21f87c485310944b2b2734cd6d318765bcbb7515eead33af9641816506e",
|
||||||
|
"sha256:a983cca5ed1dd9a35e9e42ebf9f278d344603bfcb174ff99a5815f953925140a",
|
||||||
|
"sha256:aca48506a9c20f68ee61c87f2008f81f8ee99f8d7f0104bff3c47e2d148f89d9",
|
||||||
|
"sha256:b2602177668f89b38b9f84b7b3435d0a72511ddef45dc14446811759b82235a1",
|
||||||
|
"sha256:b3e5fe4538001bb82e2295b8d2a39356a84694c97cb73a566dc36328b9f83b40",
|
||||||
|
"sha256:b6ca36c12a5120bad343eef193cc0122928c5c7466121da7c20f41160ba00ba2",
|
||||||
|
"sha256:b89f4477d915ea43b4ceea6756f63f0288941b6443a2b28c69004fe07fde0d0d",
|
||||||
|
"sha256:b9a9d92f10772d2a181b5ca339dee066ab7d1c9a34ae2421b2a52556e719756f",
|
||||||
|
"sha256:c99462ffc538717b3e60151dfaf91125f637e801f5ab008f81c402f1dff0cd0f",
|
||||||
|
"sha256:cb92f9061657287eded380d7dc455bbf115430b3aa4741bdc662d02977e7d0af",
|
||||||
|
"sha256:cdee837710ef6b56ebd20245b83799fce40b265b3b406e51e8ccc5b85b9099b7",
|
||||||
|
"sha256:cf10b7d58ae4a1f07fccbf4a0a956d705356fea05fb4c70608bb6fa81d103cda",
|
||||||
|
"sha256:d15687d7d7f40333bd8266f3814c591c2e2cd263fa2116e314f60d82086e353a",
|
||||||
|
"sha256:d5c28525c19f5bb1e09511669bb57353d22b94cf8b65f3a8d141c389a55dec95",
|
||||||
|
"sha256:d5f916acf8afbcab6bacbb376ba7dc61f845367901ecd5e328fc4d4aef2fcab0",
|
||||||
|
"sha256:dab03ed811ed1c71d700ed08bde8431cf429bbe59e423394f0f4055f1ca0ea60",
|
||||||
|
"sha256:db453f2da3f59a348f514cfbfeb042393b68720787bbef2b4c6068ea362c8149",
|
||||||
|
"sha256:de2a0645a923ba57c5527497daf8ec5df69c6eadf869e9cd46e86349146e5975",
|
||||||
|
"sha256:dea7fcd62915fb150cdc373212141a30037e11b761fbced340e9db3379b892d4",
|
||||||
|
"sha256:dfcbebdb3c4b6f739a91769aea5ed615023f3c88cb70df812849aef634c25fbe",
|
||||||
|
"sha256:dfcebb950aa7e667ec226a442722134539e77c575f6cfaa423f24371bb8d2e94",
|
||||||
|
"sha256:e0641b506486f0b4cd1500a2a65740243e8670a2549bb02bc4556a83af84ae03",
|
||||||
|
"sha256:e33b0834f1cf779aa839975f9d8755a7c2420510c0fa1e9fa0497de77cd35d2c",
|
||||||
|
"sha256:e4ace1e220b078c8e48e82c081e35002038657e4b37d403ce940fa679e57113b",
|
||||||
|
"sha256:e4cf2d5829f6963a5483ec01578ee76d329eb5caf330ecd05b3edd697e7d768a",
|
||||||
|
"sha256:e574de99d735b3fc8364cba9912c2bec2da78775eba95cbb225ef7dda6acea24",
|
||||||
|
"sha256:e646c0e282e960345314f42f2cea5e0b5f56938c093541ea6dbf11aec2862391",
|
||||||
|
"sha256:e8a5ac97ea521d7bde7621d86c30e86b798cdecd985723c4ed737a2aa9e77d0c",
|
||||||
|
"sha256:eedf97be7bc3dbc8addcef4142f4b4164066df0c6f36397ae4aaed3eb187d8ab",
|
||||||
|
"sha256:ef633add81832f4b56d3b4c9408b43d530dfca29e68fb1b797dcb861a2c734cd",
|
||||||
|
"sha256:f27207e8ca3e5e021e2402ba942e5b4c629718e665c81b8b306f3c8b1ddbb786",
|
||||||
|
"sha256:f85f3843bdb1fe80e8c206fe6eed7a1caeae897e496542cee499c374a85c6e08",
|
||||||
|
"sha256:f8e81e4b55930e5ffab4a68db1af431629cf2e4066dbdbfef65348b8ab804ea8",
|
||||||
|
"sha256:f96ae96a060a8072ceff4cfde89d261837b4294a4f28b84a28765470d502ccc6",
|
||||||
|
"sha256:fd9e98b408384989ea4ab60206b8e100d8687da18b5c813c11e92fd8212a98e0",
|
||||||
|
"sha256:ffff855100bc066ff2cd3aa4a60bc9534661816b110f0243e59503ec2df38421"
|
||||||
|
],
|
||||||
|
"markers": "python_version >= '3.7'",
|
||||||
|
"version": "==2.14.6"
|
||||||
|
},
|
||||||
|
"pygments": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:b27c2826c47d0f3219f29554824c30c5e8945175d888647acd804ddd04af846c",
|
||||||
|
"sha256:da46cec9fd2de5be3a8a784f434e4c4ab670b4ff54d605c4c2717e9d49c4c367"
|
||||||
|
],
|
||||||
|
"markers": "python_version >= '3.7'",
|
||||||
|
"version": "==2.17.2"
|
||||||
|
},
|
||||||
"pyjwt": {
|
"pyjwt": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:57e28d156e3d5c10088e0c68abb90bfac3df82b40a71bd0daa20c65ccd5c23de",
|
"sha256:57e28d156e3d5c10088e0c68abb90bfac3df82b40a71bd0daa20c65ccd5c23de",
|
||||||
|
@ -453,6 +740,14 @@
|
||||||
"markers": "python_version >= '3.7'",
|
"markers": "python_version >= '3.7'",
|
||||||
"version": "==2.8.0"
|
"version": "==2.8.0"
|
||||||
},
|
},
|
||||||
|
"pymemcache": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:27bf9bd1bbc1e20f83633208620d56de50f14185055e49504f4f5e94e94aff94",
|
||||||
|
"sha256:f507bc20e0dc8d562f8df9d872107a278df049fa496805c1431b926f3ddd0eab"
|
||||||
|
],
|
||||||
|
"index": "pypi",
|
||||||
|
"version": "==4.0.0"
|
||||||
|
},
|
||||||
"python-dotenv": {
|
"python-dotenv": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:a8df96034aae6d2d50a4ebe8216326c61c3eb64836776504fcca410e5937a3ba",
|
"sha256:a8df96034aae6d2d50a4ebe8216326c61c3eb64836776504fcca410e5937a3ba",
|
||||||
|
@ -461,6 +756,22 @@
|
||||||
"index": "pypi",
|
"index": "pypi",
|
||||||
"version": "==1.0.0"
|
"version": "==1.0.0"
|
||||||
},
|
},
|
||||||
|
"python-gitlab": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:cc1dc49c562c02ffbad3656e668234c45ea6210688ade59865b284313f45000d",
|
||||||
|
"sha256:eb31d1f2bfd8653f74996f9d0bf84ce7afb0843f9122a257c9a93b0e027d1df0"
|
||||||
|
],
|
||||||
|
"markers": "python_full_version >= '3.8.0'",
|
||||||
|
"version": "==4.3.0"
|
||||||
|
},
|
||||||
|
"python-semantic-release": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:6bbd11b1e8ac70e0946ed6d257094c851b2507edfbc393eef6093d0ed1dbe0b4",
|
||||||
|
"sha256:a016b1cf43a5f3667ce2cfddd8e30b6210a2d52b0e2f6b487aae1164f2540eaa"
|
||||||
|
],
|
||||||
|
"markers": "python_version >= '3.7'",
|
||||||
|
"version": "==8.7.0"
|
||||||
|
},
|
||||||
"python3-openid": {
|
"python3-openid": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:33fbf6928f401e0b790151ed2b5290b02545e8775f982485205a066f874aaeaf",
|
"sha256:33fbf6928f401e0b790151ed2b5290b02545e8775f982485205a066f874aaeaf",
|
||||||
|
@ -533,11 +844,11 @@
|
||||||
},
|
},
|
||||||
"referencing": {
|
"referencing": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:81a1471c68c9d5e3831c30ad1dd9815c45b558e596653db751a2bfdd17b3b9ec",
|
"sha256:3c57da0513e9563eb7e203ebe9bb3a1b509b042016433bd1e45a2853466c3dd3",
|
||||||
"sha256:c19c4d006f1757e3dd75c4f784d38f8698d87b649c54f9ace14e5e8c9667c01d"
|
"sha256:7e4dc12271d8e15612bfe35792f5ea1c40970dadf8624602e33db2758f7ee554"
|
||||||
],
|
],
|
||||||
"markers": "python_version >= '3.8'",
|
"markers": "python_version >= '3.8'",
|
||||||
"version": "==0.31.1"
|
"version": "==0.32.1"
|
||||||
},
|
},
|
||||||
"requests": {
|
"requests": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
|
@ -555,110 +866,142 @@
|
||||||
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'",
|
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'",
|
||||||
"version": "==1.3.1"
|
"version": "==1.3.1"
|
||||||
},
|
},
|
||||||
|
"requests-toolbelt": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6",
|
||||||
|
"sha256:cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06"
|
||||||
|
],
|
||||||
|
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'",
|
||||||
|
"version": "==1.0.0"
|
||||||
|
},
|
||||||
|
"rich": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:5cb5123b5cf9ee70584244246816e9114227e0b98ad9176eede6ad54bf5403fa",
|
||||||
|
"sha256:6da14c108c4866ee9520bbffa71f6fe3962e193b7da68720583850cd4548e235"
|
||||||
|
],
|
||||||
|
"markers": "python_full_version >= '3.7.0'",
|
||||||
|
"version": "==13.7.0"
|
||||||
|
},
|
||||||
"rpds-py": {
|
"rpds-py": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:06d218e4464d31301e943b65b2c6919318ea6f69703a351961e1baaf60347276",
|
"sha256:0474df4ade9a3b4af96c3d36eb81856cb9462e4c6657d4caecfd840d2a13f3c9",
|
||||||
"sha256:12ecf89bd54734c3c2c79898ae2021dca42750c7bcfb67f8fb3315453738ac8f",
|
"sha256:071980663c273bf3d388fe5c794c547e6f35ba3335477072c713a3176bf14a60",
|
||||||
"sha256:15253fff410873ebf3cfba1cc686a37711efcd9b8cb30ea21bb14a973e393f60",
|
"sha256:07aab64e2808c3ebac2a44f67e9dc0543812b715126dfd6fe4264df527556cb6",
|
||||||
"sha256:188435794405c7f0573311747c85a96b63c954a5f2111b1df8018979eca0f2f0",
|
"sha256:088396c7c70e59872f67462fcac3ecbded5233385797021976a09ebd55961dfe",
|
||||||
"sha256:1ceebd0ae4f3e9b2b6b553b51971921853ae4eebf3f54086be0565d59291e53d",
|
"sha256:162d7cd9cd311c1b0ff1c55a024b8f38bd8aad1876b648821da08adc40e95734",
|
||||||
"sha256:244e173bb6d8f3b2f0c4d7370a1aa341f35da3e57ffd1798e5b2917b91731fd3",
|
"sha256:19f00f57fdd38db4bb5ad09f9ead1b535332dbf624200e9029a45f1f35527ebb",
|
||||||
"sha256:25b28b3d33ec0a78e944aaaed7e5e2a94ac811bcd68b557ca48a0c30f87497d2",
|
"sha256:1bdbc5fcb04a7309074de6b67fa9bc4b418ab3fc435fec1f2779a0eced688d04",
|
||||||
"sha256:25ea41635d22b2eb6326f58e608550e55d01df51b8a580ea7e75396bafbb28e9",
|
"sha256:1be2f033df1b8be8c3167ba3c29d5dca425592ee31e35eac52050623afba5772",
|
||||||
"sha256:29d311e44dd16d2434d5506d57ef4d7036544fc3c25c14b6992ef41f541b10fb",
|
"sha256:24f7a2eb3866a9e91f4599851e0c8d39878a470044875c49bd528d2b9b88361c",
|
||||||
"sha256:2a1472956c5bcc49fb0252b965239bffe801acc9394f8b7c1014ae9258e4572b",
|
"sha256:290a81cfbe4673285cdf140ec5cd1658ffbf63ab359f2b352ebe172e7cfa5bf0",
|
||||||
"sha256:2a7bef6977043673750a88da064fd513f89505111014b4e00fbdd13329cd4e9a",
|
"sha256:2946b120718eba9af2b4dd103affc1164a87b9e9ebff8c3e4c05d7b7a7e274e2",
|
||||||
"sha256:2ac26f50736324beb0282c819668328d53fc38543fa61eeea2c32ea8ea6eab8d",
|
"sha256:2bd82db36cd70b3628c0c57d81d2438e8dd4b7b32a6a9f25f24ab0e657cb6c4e",
|
||||||
"sha256:2e72f750048b32d39e87fc85c225c50b2a6715034848dbb196bf3348aa761fa1",
|
"sha256:2ddef620e70eaffebed5932ce754d539c0930f676aae6212f8e16cd9743dd365",
|
||||||
"sha256:31e220a040b89a01505128c2f8a59ee74732f666439a03e65ccbf3824cdddae7",
|
"sha256:2e53b9b25cac9065328901713a7e9e3b12e4f57ef4280b370fbbf6fef2052eef",
|
||||||
"sha256:35f53c76a712e323c779ca39b9a81b13f219a8e3bc15f106ed1e1462d56fcfe9",
|
"sha256:302bd4983bbd47063e452c38be66153760112f6d3635c7eeefc094299fa400a9",
|
||||||
"sha256:38d4f822ee2f338febcc85aaa2547eb5ba31ba6ff68d10b8ec988929d23bb6b4",
|
"sha256:349cb40897fd529ca15317c22c0eab67f5ac5178b5bd2c6adc86172045210acc",
|
||||||
"sha256:38f9bf2ad754b4a45b8210a6c732fe876b8a14e14d5992a8c4b7c1ef78740f53",
|
"sha256:358dafc89ce3894c7f486c615ba914609f38277ef67f566abc4c854d23b997fa",
|
||||||
"sha256:3a44c8440183b43167fd1a0819e8356692bf5db1ad14ce140dbd40a1485f2dea",
|
"sha256:35953f4f2b3216421af86fd236b7c0c65935936a94ea83ddbd4904ba60757773",
|
||||||
"sha256:3ab96754d23372009638a402a1ed12a27711598dd49d8316a22597141962fe66",
|
"sha256:35ae5ece284cf36464eb160880018cf6088a9ac5ddc72292a6092b6ef3f4da53",
|
||||||
"sha256:3c55d7f2d817183d43220738270efd3ce4e7a7b7cbdaefa6d551ed3d6ed89190",
|
"sha256:3b811d182ad17ea294f2ec63c0621e7be92a1141e1012383461872cead87468f",
|
||||||
"sha256:46e1ed994a0920f350a4547a38471217eb86f57377e9314fbaaa329b71b7dfe3",
|
"sha256:3da5a4c56953bdbf6d04447c3410309616c54433146ccdb4a277b9cb499bc10e",
|
||||||
"sha256:4a5375c5fff13f209527cd886dc75394f040c7d1ecad0a2cb0627f13ebe78a12",
|
"sha256:3dc6a7620ba7639a3db6213da61312cb4aa9ac0ca6e00dc1cbbdc21c2aa6eb57",
|
||||||
"sha256:4c2d26aa03d877c9730bf005621c92da263523a1e99247590abbbe252ccb7824",
|
"sha256:3f91df8e6dbb7360e176d1affd5fb0246d2b88d16aa5ebc7db94fd66b68b61da",
|
||||||
"sha256:4c4e314d36d4f31236a545696a480aa04ea170a0b021e9a59ab1ed94d4c3ef27",
|
"sha256:4022b9dc620e14f30201a8a73898a873c8e910cb642bcd2f3411123bc527f6ac",
|
||||||
"sha256:4d0c10d803549427f427085ed7aebc39832f6e818a011dcd8785e9c6a1ba9b3e",
|
"sha256:413b9c17388bbd0d87a329d8e30c1a4c6e44e2bb25457f43725a8e6fe4161e9e",
|
||||||
"sha256:4dcc5ee1d0275cb78d443fdebd0241e58772a354a6d518b1d7af1580bbd2c4e8",
|
"sha256:43d4dd5fb16eb3825742bad8339d454054261ab59fed2fbac84e1d84d5aae7ba",
|
||||||
"sha256:51967a67ea0d7b9b5cd86036878e2d82c0b6183616961c26d825b8c994d4f2c8",
|
"sha256:44627b6ca7308680a70766454db5249105fa6344853af6762eaad4158a2feebe",
|
||||||
"sha256:530190eb0cd778363bbb7596612ded0bb9fef662daa98e9d92a0419ab27ae914",
|
"sha256:44a54e99a2b9693a37ebf245937fd6e9228b4cbd64b9cc961e1f3391ec6c7391",
|
||||||
"sha256:5379e49d7e80dca9811b36894493d1c1ecb4c57de05c36f5d0dd09982af20211",
|
"sha256:47713dc4fce213f5c74ca8a1f6a59b622fc1b90868deb8e8e4d993e421b4b39d",
|
||||||
"sha256:5493569f861fb7b05af6d048d00d773c6162415ae521b7010197c98810a14cab",
|
"sha256:495a14b72bbe217f2695dcd9b5ab14d4f8066a00f5d209ed94f0aca307f85f6e",
|
||||||
"sha256:5a4c1058cdae6237d97af272b326e5f78ee7ee3bbffa6b24b09db4d828810468",
|
"sha256:4c46ad6356e1561f2a54f08367d1d2e70a0a1bb2db2282d2c1972c1d38eafc3b",
|
||||||
"sha256:5d75d6d220d55cdced2f32cc22f599475dbe881229aeddba6c79c2e9df35a2b3",
|
"sha256:4d6a9f052e72d493efd92a77f861e45bab2f6be63e37fa8ecf0c6fd1a58fedb0",
|
||||||
"sha256:5d97e9ae94fb96df1ee3cb09ca376c34e8a122f36927230f4c8a97f469994bff",
|
"sha256:509b617ac787cd1149600e731db9274ebbef094503ca25158e6f23edaba1ca8f",
|
||||||
"sha256:5feae2f9aa7270e2c071f488fab256d768e88e01b958f123a690f1cc3061a09c",
|
"sha256:5552f328eaef1a75ff129d4d0c437bf44e43f9436d3996e8eab623ea0f5fcf73",
|
||||||
"sha256:603d5868f7419081d616dab7ac3cfa285296735e7350f7b1e4f548f6f953ee7d",
|
"sha256:5a80e2f83391ad0808b4646732af2a7b67550b98f0cae056cb3b40622a83dbb3",
|
||||||
"sha256:61d42d2b08430854485135504f672c14d4fc644dd243a9c17e7c4e0faf5ed07e",
|
"sha256:5cf6af100ffb5c195beec11ffaa8cf8523057f123afa2944e6571d54da84cdc9",
|
||||||
"sha256:61dbc1e01dc0c5875da2f7ae36d6e918dc1b8d2ce04e871793976594aad8a57a",
|
"sha256:5e6caa3809e50690bd92fa490f5c38caa86082c8c3315aa438bce43786d5e90d",
|
||||||
"sha256:65cfed9c807c27dee76407e8bb29e6f4e391e436774bcc769a037ff25ad8646e",
|
"sha256:5ef00873303d678aaf8b0627e111fd434925ca01c657dbb2641410f1cdaef261",
|
||||||
"sha256:67a429520e97621a763cf9b3ba27574779c4e96e49a27ff8a1aa99ee70beb28a",
|
"sha256:69ac7ea9897ec201ce68b48582f3eb34a3f9924488a5432a93f177bf76a82a7e",
|
||||||
"sha256:6aadae3042f8e6db3376d9e91f194c606c9a45273c170621d46128f35aef7cd0",
|
"sha256:6a61226465bda9283686db8f17d02569a98e4b13c637be5a26d44aa1f1e361c2",
|
||||||
"sha256:6ba8858933f0c1a979781272a5f65646fca8c18c93c99c6ddb5513ad96fa54b1",
|
"sha256:6d904c5693e08bad240f16d79305edba78276be87061c872a4a15e2c301fa2c0",
|
||||||
"sha256:6bc568b05e02cd612be53900c88aaa55012e744930ba2eeb56279db4c6676eb3",
|
"sha256:6dace7b26a13353e24613417ce2239491b40a6ad44e5776a18eaff7733488b44",
|
||||||
"sha256:729408136ef8d45a28ee9a7411917c9e3459cf266c7e23c2f7d4bb8ef9e0da42",
|
"sha256:6df15846ee3fb2e6397fe25d7ca6624af9f89587f3f259d177b556fed6bebe2c",
|
||||||
"sha256:751758d9dd04d548ec679224cc00e3591f5ebf1ff159ed0d4aba6a0746352452",
|
"sha256:703d95c75a72e902544fda08e965885525e297578317989fd15a6ce58414b41d",
|
||||||
"sha256:76d59d4d451ba77f08cb4cd9268dec07be5bc65f73666302dbb5061989b17198",
|
"sha256:726ac36e8a3bb8daef2fd482534cabc5e17334052447008405daca7ca04a3108",
|
||||||
"sha256:79bf58c08f0756adba691d480b5a20e4ad23f33e1ae121584cf3a21717c36dfa",
|
"sha256:781ef8bfc091b19960fc0142a23aedadafa826bc32b433fdfe6fd7f964d7ef44",
|
||||||
"sha256:7de12b69d95072394998c622cfd7e8cea8f560db5fca6a62a148f902a1029f8b",
|
"sha256:80443fe2f7b3ea3934c5d75fb0e04a5dbb4a8e943e5ff2de0dec059202b70a8b",
|
||||||
"sha256:7f55cd9cf1564b7b03f238e4c017ca4794c05b01a783e9291065cb2858d86ce4",
|
"sha256:83640a5d7cd3bff694747d50436b8b541b5b9b9782b0c8c1688931d6ee1a1f2d",
|
||||||
"sha256:80e5acb81cb49fd9f2d5c08f8b74ffff14ee73b10ca88297ab4619e946bcb1e1",
|
"sha256:84c5a4d1f9dd7e2d2c44097fb09fffe728629bad31eb56caf97719e55575aa82",
|
||||||
"sha256:87a90f5545fd61f6964e65eebde4dc3fa8660bb7d87adb01d4cf17e0a2b484ad",
|
"sha256:882ce6e25e585949c3d9f9abd29202367175e0aab3aba0c58c9abbb37d4982ff",
|
||||||
"sha256:881df98f0a8404d32b6de0fd33e91c1b90ed1516a80d4d6dc69d414b8850474c",
|
"sha256:888a97002e986eca10d8546e3c8b97da1d47ad8b69726dcfeb3e56348ebb28a3",
|
||||||
"sha256:8a776a29b77fe0cc28fedfd87277b0d0f7aa930174b7e504d764e0b43a05f381",
|
"sha256:8aad80645a011abae487d356e0ceb359f4938dfb6f7bcc410027ed7ae4f7bb8b",
|
||||||
"sha256:8c2a61c0e4811012b0ba9f6cdcb4437865df5d29eab5d6018ba13cee1c3064a0",
|
"sha256:8cb6fe8ecdfffa0e711a75c931fb39f4ba382b4b3ccedeca43f18693864fe850",
|
||||||
"sha256:8fa6bd071ec6d90f6e7baa66ae25820d57a8ab1b0a3c6d3edf1834d4b26fafa2",
|
"sha256:8d6b6937ae9eac6d6c0ca3c42774d89fa311f55adff3970fb364b34abde6ed3d",
|
||||||
"sha256:96f2975fb14f39c5fe75203f33dd3010fe37d1c4e33177feef1107b5ced750e3",
|
"sha256:90123853fc8b1747f80b0d354be3d122b4365a93e50fc3aacc9fb4c2488845d6",
|
||||||
"sha256:96fb0899bb2ab353f42e5374c8f0789f54e0a94ef2f02b9ac7149c56622eaf31",
|
"sha256:96f957d6ab25a78b9e7fc9749d754b98eac825a112b4e666525ce89afcbd9ed5",
|
||||||
"sha256:97163a1ab265a1073a6372eca9f4eeb9f8c6327457a0b22ddfc4a17dcd613e74",
|
"sha256:981d135c7cdaf6cd8eadae1c950de43b976de8f09d8e800feed307140d3d6d00",
|
||||||
"sha256:9c95a1a290f9acf7a8f2ebbdd183e99215d491beea52d61aa2a7a7d2c618ddc6",
|
"sha256:9b32f742ce5b57201305f19c2ef7a184b52f6f9ba6871cc042c2a61f0d6b49b8",
|
||||||
"sha256:9d94d78418203904730585efa71002286ac4c8ac0689d0eb61e3c465f9e608ff",
|
"sha256:9f0350ef2fba5f34eb0c9000ea328e51b9572b403d2f7f3b19f24085f6f598e8",
|
||||||
"sha256:a6ba2cb7d676e9415b9e9ac7e2aae401dc1b1e666943d1f7bc66223d3d73467b",
|
"sha256:a297a4d08cc67c7466c873c78039d87840fb50d05473db0ec1b7b03d179bf322",
|
||||||
"sha256:aa0379c1935c44053c98826bc99ac95f3a5355675a297ac9ce0dfad0ce2d50ca",
|
"sha256:a3d7e2ea25d3517c6d7e5a1cc3702cffa6bd18d9ef8d08d9af6717fc1c700eed",
|
||||||
"sha256:ac96d67b37f28e4b6ecf507c3405f52a40658c0a806dffde624a8fcb0314d5fd",
|
"sha256:a4b682c5775d6a3d21e314c10124599976809455ee67020e8e72df1769b87bc3",
|
||||||
"sha256:ade2ccb937060c299ab0dfb2dea3d2ddf7e098ed63ee3d651ebfc2c8d1e8632a",
|
"sha256:a4ebb8b20bd09c5ce7884c8f0388801100f5e75e7f733b1b6613c713371feefc",
|
||||||
"sha256:aefbdc934115d2f9278f153952003ac52cd2650e7313750390b334518c589568",
|
"sha256:a61f659665a39a4d17d699ab3593d7116d66e1e2e3f03ef3fb8f484e91908808",
|
||||||
"sha256:b07501b720cf060c5856f7b5626e75b8e353b5f98b9b354a21eb4bfa47e421b1",
|
"sha256:a9880b4656efe36ccad41edc66789e191e5ee19a1ea8811e0aed6f69851a82f4",
|
||||||
"sha256:b5267feb19070bef34b8dea27e2b504ebd9d31748e3ecacb3a4101da6fcb255c",
|
"sha256:ac08472f41ea77cd6a5dae36ae7d4ed3951d6602833af87532b556c1b4601d63",
|
||||||
"sha256:b5f6328e8e2ae8238fc767703ab7b95785521c42bb2b8790984e3477d7fa71ad",
|
"sha256:adc0c3d6fc6ae35fee3e4917628983f6ce630d513cbaad575b4517d47e81b4bb",
|
||||||
"sha256:b8996ffb60c69f677245f5abdbcc623e9442bcc91ed81b6cd6187129ad1fa3e7",
|
"sha256:af27423662f32d7501a00c5e7342f7dbd1e4a718aea7a239781357d15d437133",
|
||||||
"sha256:b981a370f8f41c4024c170b42fbe9e691ae2dbc19d1d99151a69e2c84a0d194d",
|
"sha256:b2e75e17bd0bb66ee34a707da677e47c14ee51ccef78ed6a263a4cc965a072a1",
|
||||||
"sha256:b9d121be0217787a7d59a5c6195b0842d3f701007333426e5154bf72346aa658",
|
"sha256:b634c5ec0103c5cbebc24ebac4872b045cccb9456fc59efdcf6fe39775365bd2",
|
||||||
"sha256:bcef4f2d3dc603150421de85c916da19471f24d838c3c62a4f04c1eb511642c1",
|
"sha256:b6f5549d6ed1da9bfe3631ca9483ae906f21410be2445b73443fa9f017601c6f",
|
||||||
"sha256:bed0252c85e21cf73d2d033643c945b460d6a02fc4a7d644e3b2d6f5f2956c64",
|
"sha256:bd4b677d929cf1f6bac07ad76e0f2d5de367e6373351c01a9c0a39f6b21b4a8b",
|
||||||
"sha256:bfdfbe6a36bc3059fff845d64c42f2644cf875c65f5005db54f90cdfdf1df815",
|
"sha256:bf721ede3eb7b829e4a9b8142bd55db0bdc82902720548a703f7e601ee13bdc3",
|
||||||
"sha256:c0095b8aa3e432e32d372e9a7737e65b58d5ed23b9620fea7cb81f17672f1fa1",
|
"sha256:c647ca87fc0ebe808a41de912e9a1bfef9acb85257e5d63691364ac16b81c1f0",
|
||||||
"sha256:c1f41d32a2ddc5a94df4b829b395916a4b7f103350fa76ba6de625fcb9e773ac",
|
"sha256:ca57468da2d9a660bcf8961637c85f2fbb2aa64d9bc3f9484e30c3f9f67b1dd7",
|
||||||
"sha256:c45008ca79bad237cbc03c72bc5205e8c6f66403773929b1b50f7d84ef9e4d07",
|
"sha256:cad0f59ee3dc35526039f4bc23642d52d5f6616b5f687d846bfc6d0d6d486db0",
|
||||||
"sha256:c82bbf7e03748417c3a88c1b0b291288ce3e4887a795a3addaa7a1cfd9e7153e",
|
"sha256:cc97f0640e91d7776530f06e6836c546c1c752a52de158720c4224c9e8053cad",
|
||||||
"sha256:c918621ee0a3d1fe61c313f2489464f2ae3d13633e60f520a8002a5e910982ee",
|
"sha256:ccd4e400309e1f34a5095bf9249d371f0fd60f8a3a5c4a791cad7b99ce1fd38d",
|
||||||
"sha256:d204957169f0b3511fb95395a9da7d4490fb361763a9f8b32b345a7fe119cb45",
|
"sha256:cffa76b385dfe1e38527662a302b19ffb0e7f5cf7dd5e89186d2c94a22dd9d0c",
|
||||||
"sha256:d329896c40d9e1e5c7715c98529e4a188a1f2df51212fd65102b32465612b5dc",
|
"sha256:d0dd7ed2f16df2e129496e7fbe59a34bc2d7fc8db443a606644d069eb69cbd45",
|
||||||
"sha256:d3a61e928feddc458a55110f42f626a2a20bea942ccedb6fb4cee70b4830ed41",
|
"sha256:d452817e0d9c749c431a1121d56a777bd7099b720b3d1c820f1725cb40928f58",
|
||||||
"sha256:d48db29bd47814671afdd76c7652aefacc25cf96aad6daefa82d738ee87461e2",
|
"sha256:d8dda2a806dfa4a9b795950c4f5cc56d6d6159f7d68080aedaff3bdc9b5032f5",
|
||||||
"sha256:d5593855b5b2b73dd8413c3fdfa5d95b99d657658f947ba2c4318591e745d083",
|
"sha256:dcbe1f8dd179e4d69b70b1f1d9bb6fd1e7e1bdc9c9aad345cdeb332e29d40748",
|
||||||
"sha256:d79c159adea0f1f4617f54aa156568ac69968f9ef4d1e5fefffc0a180830308e",
|
"sha256:e0441fb4fdd39a230477b2ca9be90868af64425bfe7b122b57e61e45737a653b",
|
||||||
"sha256:db09b98c7540df69d4b47218da3fbd7cb466db0fb932e971c321f1c76f155266",
|
"sha256:e04e56b4ca7a770593633556e8e9e46579d66ec2ada846b401252a2bdcf70a6d",
|
||||||
"sha256:ddf23960cb42b69bce13045d5bc66f18c7d53774c66c13f24cf1b9c144ba3141",
|
"sha256:e061de3b745fe611e23cd7318aec2c8b0e4153939c25c9202a5811ca911fd733",
|
||||||
"sha256:e06cfea0ece444571d24c18ed465bc93afb8c8d8d74422eb7026662f3d3f779b",
|
"sha256:e93ec1b300acf89730cf27975ef574396bc04edecc358e9bd116fb387a123239",
|
||||||
"sha256:e7c564c58cf8f248fe859a4f0fe501b050663f3d7fbc342172f259124fb59933",
|
"sha256:e9e557db6a177470316c82f023e5d571811c9a4422b5ea084c85da9aa3c035fc",
|
||||||
"sha256:e86593bf8637659e6a6ed58854b6c87ec4e9e45ee8a4adfd936831cef55c2d21",
|
"sha256:eab36eae3f3e8e24b05748ec9acc66286662f5d25c52ad70cadab544e034536b",
|
||||||
"sha256:eaffbd8814bb1b5dc3ea156a4c5928081ba50419f9175f4fc95269e040eff8f0",
|
"sha256:ec23fcad480e77ede06cf4127a25fc440f7489922e17fc058f426b5256ee0edb",
|
||||||
"sha256:ee353bb51f648924926ed05e0122b6a0b1ae709396a80eb583449d5d477fcdf7",
|
"sha256:ec2e1cf025b2c0f48ec17ff3e642661da7ee332d326f2e6619366ce8e221f018",
|
||||||
"sha256:ee6faebb265e28920a6f23a7d4c362414b3f4bb30607141d718b991669e49ddc",
|
"sha256:ed99b4f7179d2111702020fd7d156e88acd533f5a7d3971353e568b6051d5c97",
|
||||||
"sha256:efe093acc43e869348f6f2224df7f452eab63a2c60a6c6cd6b50fd35c4e075ba",
|
"sha256:ee94cb58c0ba2c62ee108c2b7c9131b2c66a29e82746e8fa3aa1a1effbd3dcf1",
|
||||||
"sha256:f03a1b3a4c03e3e0161642ac5367f08479ab29972ea0ffcd4fa18f729cd2be0a",
|
"sha256:f19afcfc0dd0dca35694df441e9b0f95bc231b512f51bded3c3d8ca32153ec19",
|
||||||
"sha256:f0d320e70b6b2300ff6029e234e79fe44e9dbbfc7b98597ba28e054bd6606a57",
|
"sha256:f1b9d9260e06ea017feb7172976ab261e011c1dc2f8883c7c274f6b2aabfe01a",
|
||||||
"sha256:f252dfb4852a527987a9156cbcae3022a30f86c9d26f4f17b8c967d7580d65d2",
|
"sha256:f28ac0e8e7242d140f99402a903a2c596ab71550272ae9247ad78f9a932b5698",
|
||||||
"sha256:f5f4424cb87a20b016bfdc157ff48757b89d2cc426256961643d443c6c277007",
|
"sha256:f42e25c016927e2a6b1ce748112c3ab134261fc2ddc867e92d02006103e1b1b7",
|
||||||
"sha256:f8eae66a1304de7368932b42d801c67969fd090ddb1a7a24f27b435ed4bed68f",
|
"sha256:f4bd4578e44f26997e9e56c96dedc5f1af43cc9d16c4daa29c771a00b2a26851",
|
||||||
"sha256:fdb82eb60d31b0c033a8e8ee9f3fc7dfbaa042211131c29da29aea8531b4f18f"
|
"sha256:f811771019f063bbd0aa7bb72c8a934bc13ebacb4672d712fc1639cfd314cccc"
|
||||||
],
|
],
|
||||||
"markers": "python_version >= '3.8'",
|
"markers": "python_version >= '3.8'",
|
||||||
"version": "==0.13.2"
|
"version": "==0.16.2"
|
||||||
|
},
|
||||||
|
"shellingham": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:7ecfff8f2fd72616f7481040475a65b2bf8af90a56c89140852d1120324e8686",
|
||||||
|
"sha256:8dbca0739d487e5bd35ab3ca4b36e11c4078f3a234bfce294b0a0291363404de"
|
||||||
|
],
|
||||||
|
"markers": "python_version >= '3.7'",
|
||||||
|
"version": "==1.5.4"
|
||||||
|
},
|
||||||
|
"smmap": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:dceeb6c0028fdb6734471eb07c0cd2aae706ccaecab45965ee83f11c8d3b1f62",
|
||||||
|
"sha256:e6d8668fa5f93e706934a62d7b4db19c8d9eb8cf2adbb75ef1b675aa332b69da"
|
||||||
|
],
|
||||||
|
"markers": "python_version >= '3.7'",
|
||||||
|
"version": "==5.0.1"
|
||||||
},
|
},
|
||||||
"social-auth-app-django": {
|
"social-auth-app-django": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
|
@ -684,13 +1027,29 @@
|
||||||
"markers": "python_version >= '3.5'",
|
"markers": "python_version >= '3.5'",
|
||||||
"version": "==0.4.4"
|
"version": "==0.4.4"
|
||||||
},
|
},
|
||||||
|
"tomlkit": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:75baf5012d06501f07bee5bf8e801b9f343e7aac5a92581f20f80ce632e6b5a4",
|
||||||
|
"sha256:b0a645a9156dc7cb5d3a1f0d4bab66db287fcb8e0430bdd4664a095ea16414ba"
|
||||||
|
],
|
||||||
|
"markers": "python_version >= '3.7'",
|
||||||
|
"version": "==0.12.3"
|
||||||
|
},
|
||||||
|
"typing-extensions": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:23478f88c37f27d76ac8aee6c905017a143b0b1b886c3c9f66bc2fd94f9f5783",
|
||||||
|
"sha256:af72aea155e91adfc61c3ae9e0e342dbc0cba726d6cba4b6c72c1f34e47291cd"
|
||||||
|
],
|
||||||
|
"markers": "python_version >= '3.8'",
|
||||||
|
"version": "==4.9.0"
|
||||||
|
},
|
||||||
"tzdata": {
|
"tzdata": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:11ef1e08e54acb0d4f95bdb1be05da659673de4acbd21bf9c69e94cc5e907a3a",
|
"sha256:aa3ace4329eeacda5b7beb7ea08ece826c28d761cda36e747cfbf97996d39bf3",
|
||||||
"sha256:7e65763eef3120314099b6939b5546db7adce1e7d6f2e179e3df563c70511eda"
|
"sha256:dd54c94f294765522c77399649b4fefd95522479a664a0cec87f41bebc6148c9"
|
||||||
],
|
],
|
||||||
"markers": "sys_platform == 'win32'",
|
"markers": "sys_platform == 'win32'",
|
||||||
"version": "==2023.3"
|
"version": "==2023.4"
|
||||||
},
|
},
|
||||||
"uritemplate": {
|
"uritemplate": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
|
|
0
available_equipment_instances.txt
Normal file
0
available_equipment_instances.txt
Normal file
|
@ -8,17 +8,39 @@ services:
|
||||||
dockerfile: Dockerfile
|
dockerfile: Dockerfile
|
||||||
image: csm_equipment_tracker:latest
|
image: csm_equipment_tracker:latest
|
||||||
ports:
|
ports:
|
||||||
- "8092:8000"
|
- "8000:8000"
|
||||||
environment:
|
environment:
|
||||||
- PYTHONBUFFERED=1
|
- PYTHONBUFFERED=1
|
||||||
command:
|
command:
|
||||||
[
|
[
|
||||||
"sh",
|
"sh",
|
||||||
"-c",
|
"-c",
|
||||||
"python equipment_tracker/manage.py spectacular --color --file equipment_tracker/schema.yml && python equipment_tracker/manage.py collectstatic --noinput && python equipment_tracker/manage.py makemigrations && python equipment_tracker/manage.py migrate && python equipment_tracker/manage.py runserver 0.0.0.0:8000",
|
"python equipment_tracker/manage.py collectstatic --noinput && python equipment_tracker/manage.py spectacular --color --file equipment_tracker/schema.yml && python equipment_tracker/manage.py makemigrations && python equipment_tracker/manage.py migrate && python equipment_tracker/manage.py runserver 0.0.0.0:8000",
|
||||||
]
|
]
|
||||||
volumes:
|
volumes:
|
||||||
- .:/code # For hotreloading
|
- .:/code # For hotreloading
|
||||||
|
depends_on:
|
||||||
|
- memcached
|
||||||
|
- postgres
|
||||||
|
|
||||||
|
memcached:
|
||||||
|
image: memcached
|
||||||
|
ports:
|
||||||
|
- "11211:11211"
|
||||||
|
entrypoint:
|
||||||
|
- memcached
|
||||||
|
- -m 64
|
||||||
|
|
||||||
|
postgres:
|
||||||
|
image: postgres
|
||||||
|
volumes:
|
||||||
|
- ./postgres_data:/var/lib/postgresql/data
|
||||||
|
environment:
|
||||||
|
- POSTGRES_DB=${DB_NAME}
|
||||||
|
- POSTGRES_USER=${DB_USER}
|
||||||
|
- POSTGRES_PASSWORD=${DB_PASSWORD}
|
||||||
|
ports:
|
||||||
|
- "5432:5432"
|
||||||
|
|
||||||
volumes:
|
volumes:
|
||||||
csm_equipment_tracker:
|
csm_equipment_tracker:
|
||||||
|
|
Binary file not shown.
|
@ -28,9 +28,9 @@ BASE_DIR = Path(__file__).resolve().parent.parent
|
||||||
SECRET_KEY = str(os.getenv('SECRET_KEY'))
|
SECRET_KEY = str(os.getenv('SECRET_KEY'))
|
||||||
|
|
||||||
# SECURITY WARNING: don't run with debug turned on in production!
|
# SECURITY WARNING: don't run with debug turned on in production!
|
||||||
DEBUG = False
|
DEBUG = True
|
||||||
|
|
||||||
ALLOWED_HOSTS = ['*']
|
ALLOWED_HOSTS = ['127.0.0.1', 'localhost', '*']
|
||||||
CSRF_TRUSTED_ORIGINS = [
|
CSRF_TRUSTED_ORIGINS = [
|
||||||
"https://csm-frontend.keannu1.duckdns.org", "https://csm-backend.keannu1.duckdns.org"]
|
"https://csm-frontend.keannu1.duckdns.org", "https://csm-backend.keannu1.duckdns.org"]
|
||||||
|
|
||||||
|
@ -156,10 +156,21 @@ WSGI_APPLICATION = 'config.wsgi.application'
|
||||||
# Database
|
# Database
|
||||||
# https://docs.djangoproject.com/en/4.2/ref/settings/#databases
|
# https://docs.djangoproject.com/en/4.2/ref/settings/#databases
|
||||||
|
|
||||||
|
# DATABASES = {
|
||||||
|
# 'default': {
|
||||||
|
# 'ENGINE': 'django.db.backends.sqlite3',
|
||||||
|
# 'NAME': BASE_DIR / 'db.sqlite3',
|
||||||
|
# }
|
||||||
|
# }
|
||||||
|
|
||||||
DATABASES = {
|
DATABASES = {
|
||||||
'default': {
|
'default': {
|
||||||
'ENGINE': 'django.db.backends.sqlite3',
|
'ENGINE': 'django.db.backends.postgresql',
|
||||||
'NAME': BASE_DIR / 'db.sqlite3',
|
'NAME': os.getenv('DB_NAME'),
|
||||||
|
'USER': os.getenv('DB_USER'),
|
||||||
|
'PASSWORD': os.getenv('DB_PASSWORD'),
|
||||||
|
'HOST': os.getenv('DB_HOST', 'postgres'),
|
||||||
|
'PORT': os.getenv('DB_PORT', '5432'),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -229,3 +240,10 @@ SESSION_CACHE_ALIAS = "default"
|
||||||
|
|
||||||
CORS_ALLOW_ALL_ORIGINS = True
|
CORS_ALLOW_ALL_ORIGINS = True
|
||||||
CORS_ALLOW_CREDENTIALS = True
|
CORS_ALLOW_CREDENTIALS = True
|
||||||
|
|
||||||
|
CACHES = {
|
||||||
|
'default': {
|
||||||
|
'BACKEND': "django.core.cache.backends.memcached.PyMemcacheCache",
|
||||||
|
'LOCATION': 'memcached:11211',
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,23 @@
|
||||||
|
# Generated by Django 5.0.1 on 2024-01-06 16:28
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('equipments', '0001_initial'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='equipmentinstance',
|
||||||
|
name='status',
|
||||||
|
field=models.CharField(choices=[('Available', 'Available'), ('Pending', 'Pending'), ('Broken', 'Broken'), ('Borrowed', 'Borrowed')], db_index=True, default='Available', max_length=20),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='historicalequipmentinstance',
|
||||||
|
name='status',
|
||||||
|
field=models.CharField(choices=[('Available', 'Available'), ('Pending', 'Pending'), ('Broken', 'Broken'), ('Borrowed', 'Borrowed')], db_index=True, default='Available', max_length=20),
|
||||||
|
),
|
||||||
|
]
|
|
@ -0,0 +1,23 @@
|
||||||
|
# Generated by Django 5.0.1 on 2024-01-06 18:06
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('equipments', '0002_alter_equipmentinstance_status_and_more'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='equipment',
|
||||||
|
name='name',
|
||||||
|
field=models.CharField(max_length=100),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='historicalequipment',
|
||||||
|
name='name',
|
||||||
|
field=models.CharField(max_length=100),
|
||||||
|
),
|
||||||
|
]
|
Binary file not shown.
|
@ -4,6 +4,7 @@ from simple_history.models import HistoricalRecords
|
||||||
from django.db.models.signals import post_migrate
|
from django.db.models.signals import post_migrate
|
||||||
from django.dispatch import receiver
|
from django.dispatch import receiver
|
||||||
from config import settings
|
from config import settings
|
||||||
|
from django.core.cache import cache
|
||||||
import csv
|
import csv
|
||||||
import os
|
import os
|
||||||
|
|
||||||
|
@ -13,7 +14,7 @@ class Equipment(models.Model):
|
||||||
('Glassware', 'Glassware'),
|
('Glassware', 'Glassware'),
|
||||||
('Miscellaneous', 'Miscellaneous')
|
('Miscellaneous', 'Miscellaneous')
|
||||||
)
|
)
|
||||||
name = models.CharField(max_length=40)
|
name = models.CharField(max_length=100)
|
||||||
category = models.CharField(
|
category = models.CharField(
|
||||||
max_length=20, choices=EQUIPMENT_CATEGORY_CHOICES, default='Miscellaneous')
|
max_length=20, choices=EQUIPMENT_CATEGORY_CHOICES, default='Miscellaneous')
|
||||||
description = models.TextField(max_length=512, null=True)
|
description = models.TextField(max_length=512, null=True)
|
||||||
|
@ -24,6 +25,10 @@ class Equipment(models.Model):
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return f'{self.name}'
|
return f'{self.name}'
|
||||||
|
|
||||||
|
def save(self, *args, **kwargs):
|
||||||
|
cache.delete('equipments')
|
||||||
|
return super().save(*args, **kwargs)
|
||||||
|
|
||||||
|
|
||||||
class EquipmentInstance(models.Model):
|
class EquipmentInstance(models.Model):
|
||||||
EQUIPMENT_INSTANCE_STATUS_CHOICES = (
|
EQUIPMENT_INSTANCE_STATUS_CHOICES = (
|
||||||
|
@ -34,7 +39,7 @@ class EquipmentInstance(models.Model):
|
||||||
)
|
)
|
||||||
equipment = models.ForeignKey(Equipment, on_delete=models.CASCADE)
|
equipment = models.ForeignKey(Equipment, on_delete=models.CASCADE)
|
||||||
status = models.CharField(
|
status = models.CharField(
|
||||||
max_length=20, choices=EQUIPMENT_INSTANCE_STATUS_CHOICES, default='Available')
|
max_length=20, choices=EQUIPMENT_INSTANCE_STATUS_CHOICES, default='Available', db_index=True)
|
||||||
remarks = models.TextField(max_length=512, null=True)
|
remarks = models.TextField(max_length=512, null=True)
|
||||||
date_added = models.DateTimeField(default=now, editable=False)
|
date_added = models.DateTimeField(default=now, editable=False)
|
||||||
last_updated = models.DateTimeField(auto_now=True, editable=False)
|
last_updated = models.DateTimeField(auto_now=True, editable=False)
|
||||||
|
@ -43,67 +48,77 @@ class EquipmentInstance(models.Model):
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return f'{self.equipment.name}'
|
return f'{self.equipment.name}'
|
||||||
|
|
||||||
|
def save(self, *args, **kwargs):
|
||||||
|
cache.delete('equipments')
|
||||||
|
return super().save(*args, **kwargs)
|
||||||
|
|
||||||
|
|
||||||
|
seed_database = False
|
||||||
|
|
||||||
|
|
||||||
@receiver(post_migrate)
|
@receiver(post_migrate)
|
||||||
def create_superuser(sender, **kwargs):
|
def create_superuser(sender, **kwargs):
|
||||||
if sender.name == 'equipments':
|
if sender.name == 'equipments':
|
||||||
root_path = os.path.join(settings.MEDIA_ROOT, 'equipment_records')
|
if seed_database:
|
||||||
csv_files = [f for f in os.listdir(root_path) if f.endswith('.csv')]
|
root_path = os.path.join(settings.MEDIA_ROOT, 'equipment_records')
|
||||||
print('Warning: Postmigration script will migrate without checking for existing item instances')
|
csv_files = [f for f in os.listdir(
|
||||||
for csv_file in csv_files:
|
root_path) if f.endswith('.csv')]
|
||||||
csv_file_path = os.path.join(root_path, csv_file)
|
print(
|
||||||
filename = os.path.splitext(csv_file)[0]
|
'Warning: Postmigration script will migrate without checking for existing item instances')
|
||||||
print('---', 'Adding Equipments from', filename, '---')
|
for csv_file in csv_files:
|
||||||
with open(csv_file_path, newline='') as csvfile:
|
csv_file_path = os.path.join(root_path, csv_file)
|
||||||
|
filename = os.path.splitext(csv_file)[0]
|
||||||
|
print('---', 'Adding Equipments from', filename, '---')
|
||||||
|
with open(csv_file_path, newline='') as csvfile:
|
||||||
|
|
||||||
reader = csv.reader(csvfile)
|
reader = csv.reader(csvfile)
|
||||||
next(reader) # Skip the header row
|
next(reader) # Skip the header row
|
||||||
for row in reader:
|
for row in reader:
|
||||||
if not any(row):
|
if not any(row):
|
||||||
continue
|
continue
|
||||||
|
|
||||||
# Get equipment information
|
# Get equipment information
|
||||||
category = filename.split('-')[0]
|
category = filename.split('-')[0]
|
||||||
name = row[2] + ' ' + row[1]
|
name = row[2] + ' ' + row[1]
|
||||||
# If quantity is missing, set value as 0
|
# If quantity is missing, set value as 0
|
||||||
if (row[3] == ''):
|
if (row[3] == ''):
|
||||||
available = 0
|
available = 0
|
||||||
else:
|
else:
|
||||||
available = int(row[3])
|
available = int(row[3])
|
||||||
# If quantity of broken instances is missing, set value as 0
|
# If quantity of broken instances is missing, set value as 0
|
||||||
if (row[4] == ''):
|
if (row[4] == ''):
|
||||||
broken = 0
|
broken = 0
|
||||||
else:
|
else:
|
||||||
available = available - int(row[4])
|
available = available - int(row[4])
|
||||||
broken = int(row[4])
|
broken = int(row[4])
|
||||||
|
|
||||||
def create_instances(a, b, c):
|
def create_instances(a, b, c):
|
||||||
print('Adding', a, 'number of working', c.name)
|
print('Adding', a, 'number of working', c.name)
|
||||||
# Add working equipments
|
# Add working equipments
|
||||||
if (a >= 1):
|
if (a >= 1):
|
||||||
for i in range(a):
|
for i in range(a):
|
||||||
EquipmentInstance.objects.create(
|
EquipmentInstance.objects.create(
|
||||||
equipment=c, status='Available')
|
equipment=c, status='Available')
|
||||||
|
|
||||||
if (b >= 1):
|
if (b >= 1):
|
||||||
print('Adding', a, 'number of broken', c.name)
|
print('Adding', b, 'number of broken', c.name)
|
||||||
# Add broken equipments
|
# Add broken equipments
|
||||||
for i in range(b):
|
for i in range(b):
|
||||||
EquipmentInstance.objects.create(
|
EquipmentInstance.objects.create(
|
||||||
equipment=c, status='Broken')
|
equipment=c, status='Broken')
|
||||||
|
|
||||||
EQUIPMENT = Equipment.objects.filter(
|
EQUIPMENT = Equipment.objects.filter(
|
||||||
name=name, category=category).first()
|
name=name, category=category).first()
|
||||||
|
|
||||||
# Check if equipment exists
|
# Check if equipment exists
|
||||||
if (EQUIPMENT):
|
if (EQUIPMENT):
|
||||||
# If so, add equipment instances
|
# If so, add equipment instances
|
||||||
create_instances(available, broken, EQUIPMENT)
|
create_instances(available, broken, EQUIPMENT)
|
||||||
|
|
||||||
# If not, create equipment
|
# If not, create equipment
|
||||||
else:
|
else:
|
||||||
# Create the equipment first
|
# Create the equipment first
|
||||||
EQUIPMENT = Equipment.objects.create(
|
EQUIPMENT = Equipment.objects.create(
|
||||||
name=name, category=category)
|
name=name, category=category)
|
||||||
# Then create the instances
|
# Then create the instances
|
||||||
create_instances(available, broken, EQUIPMENT)
|
create_instances(available, broken, EQUIPMENT)
|
||||||
|
|
|
@ -155,7 +155,6 @@ class EquipmentInstanceSerializer(serializers.HyperlinkedModelSerializer):
|
||||||
format="%m-%d-%Y %I:%M %p", read_only=True)
|
format="%m-%d-%Y %I:%M %p", read_only=True)
|
||||||
last_updated = serializers.DateTimeField(
|
last_updated = serializers.DateTimeField(
|
||||||
format="%m-%d-%Y %I:%M %p", read_only=True)
|
format="%m-%d-%Y %I:%M %p", read_only=True)
|
||||||
last_updated_by = serializers.SerializerMethodField()
|
|
||||||
status = serializers.ChoiceField(
|
status = serializers.ChoiceField(
|
||||||
choices=EquipmentInstance.EQUIPMENT_INSTANCE_STATUS_CHOICES)
|
choices=EquipmentInstance.EQUIPMENT_INSTANCE_STATUS_CHOICES)
|
||||||
|
|
||||||
|
@ -221,19 +220,11 @@ class EquipmentInstanceSerializer(serializers.HyperlinkedModelSerializer):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = EquipmentInstance
|
model = EquipmentInstance
|
||||||
fields = ('id', 'equipment', 'equipment_name', 'category', 'status', 'remarks',
|
fields = ('id', 'equipment', 'equipment_name', 'category', 'status', 'remarks',
|
||||||
'last_updated', 'last_updated_by', 'date_added')
|
'last_updated', 'date_added')
|
||||||
read_only_fields = ('id', 'last_updated', 'equipment_name', 'category',
|
read_only_fields = ('id', 'last_upated', 'equipment_name', 'category',
|
||||||
'last_updated_by', 'date_added', 'equipment_name')
|
'date_added', 'equipment_name')
|
||||||
extra_kwargs = {"remarks": {"required": False, "allow_null": True}}
|
extra_kwargs = {"remarks": {"required": False, "allow_null": True}}
|
||||||
|
|
||||||
@extend_schema_field(OpenApiTypes.STR)
|
|
||||||
def get_history_user(self, obj):
|
|
||||||
return obj.history_user.username if obj.history_user else None
|
|
||||||
|
|
||||||
@extend_schema_field(OpenApiTypes.STR)
|
|
||||||
def get_last_updated_by(self, obj):
|
|
||||||
return obj.history.first().history_user.username if obj.history.first().history_user else None
|
|
||||||
|
|
||||||
|
|
||||||
class EquipmentInstanceLogsSerializer(serializers.HyperlinkedModelSerializer):
|
class EquipmentInstanceLogsSerializer(serializers.HyperlinkedModelSerializer):
|
||||||
history_date = serializers.DateTimeField(
|
history_date = serializers.DateTimeField(
|
||||||
|
|
|
@ -6,7 +6,7 @@ from . import serializers
|
||||||
from config.settings import DEBUG
|
from config.settings import DEBUG
|
||||||
from accounts.permissions import IsTechnician
|
from accounts.permissions import IsTechnician
|
||||||
from transactions.models import Transaction
|
from transactions.models import Transaction
|
||||||
|
from django.core.cache import cache
|
||||||
# -- Equipment Viewsets
|
# -- Equipment Viewsets
|
||||||
|
|
||||||
|
|
||||||
|
@ -16,6 +16,15 @@ class EquipmentViewSet(viewsets.ModelViewSet):
|
||||||
serializer_class = serializers.EquipmentSerializer
|
serializer_class = serializers.EquipmentSerializer
|
||||||
queryset = Equipment.objects.all().order_by('id')
|
queryset = Equipment.objects.all().order_by('id')
|
||||||
|
|
||||||
|
def get_queryset(self):
|
||||||
|
key = 'equipments'
|
||||||
|
|
||||||
|
queryset = cache.get(key)
|
||||||
|
if not queryset:
|
||||||
|
queryset = super().get_queryset()
|
||||||
|
cache.set(key, queryset, timeout=60*60*24)
|
||||||
|
return queryset
|
||||||
|
|
||||||
# For viewing all logs for all equipments
|
# For viewing all logs for all equipments
|
||||||
|
|
||||||
|
|
||||||
|
@ -69,19 +78,28 @@ class AvailableEquipmentInstanceViewSet(generics.ListAPIView):
|
||||||
This view should return a list of all the equipment instances
|
This view should return a list of all the equipment instances
|
||||||
that are not associated with a non-finalized transaction.
|
that are not associated with a non-finalized transaction.
|
||||||
"""
|
"""
|
||||||
# Get all non-finalized transactions
|
key = 'available_equipment_instances'
|
||||||
non_finalized_transactions = Transaction.objects.filter(
|
|
||||||
~Q(transaction_status__in=['Finalized', 'Rejected', 'Cancelled']))
|
|
||||||
|
|
||||||
# Get all equipment instances associated with non-finalized transactions
|
queryset = cache.get(key)
|
||||||
non_finalized_equipments = EquipmentInstance.objects.filter(
|
if not queryset:
|
||||||
transaction__in=non_finalized_transactions)
|
# Get all non-finalized transactions
|
||||||
|
non_finalized_transactions = Transaction.objects.filter(
|
||||||
|
~Q(transaction_status__in=[
|
||||||
|
'Finalized', 'Rejected', 'Cancelled'])
|
||||||
|
).prefetch_related('equipments')
|
||||||
|
|
||||||
# Get all equipment instances which are not associated with non-finalized transactions
|
# Get all equipment instances associated with non-finalized transactions
|
||||||
queryset = EquipmentInstance.objects.exclude(
|
non_finalized_equipments = EquipmentInstance.objects.filter(
|
||||||
id__in=non_finalized_equipments.values_list('id', flat=True)).order_by('id')
|
transaction__in=non_finalized_transactions
|
||||||
|
).prefetch_related('equipment')
|
||||||
|
|
||||||
return queryset
|
# Get all equipment instances which are not associated with non-finalized transactions
|
||||||
|
queryset = EquipmentInstance.objects.exclude(
|
||||||
|
id__in=non_finalized_equipments.values_list('id', flat=True)
|
||||||
|
)
|
||||||
|
cache.set(key, list(queryset), timeout=60*60*24)
|
||||||
|
|
||||||
|
return queryset.prefetch_related('equipment')
|
||||||
|
|
||||||
# For viewing all equipment instance logs
|
# For viewing all equipment instance logs
|
||||||
|
|
||||||
|
|
125
equipment_tracker/media/Glassware-2nd Floor Chemlab.csv
Normal file
125
equipment_tracker/media/Glassware-2nd Floor Chemlab.csv
Normal file
|
@ -0,0 +1,125 @@
|
||||||
|
,NAME,Brand/Supplier,Qty.,Breakages,Remarks
|
||||||
|
1,"Beaker, 1000mL",Pyrex,1,,
|
||||||
|
3,"Beaker, 100mL",Mars Lab,108,12,
|
||||||
|
5,"Beaker, 150mL",Pyrex,50,11,
|
||||||
|
8,"Beaker, 250mL",Pyrex,50,13,
|
||||||
|
11,"Beaker, 400mL",Pyrex,20,1,
|
||||||
|
14,"Beaker, 50mL",Mars Lab,44,13,
|
||||||
|
15,"Beaker, 600mL",Pyrex,15,1,
|
||||||
|
17,"Bell Jar, Micro, Bottom Plate, 1000ml",,1,,PKI donated
|
||||||
|
18,"Bell Jar, Micro, Bottom Plate, 200ml",,1,,PKI donated
|
||||||
|
19,"Bell Jar, Micro, Bottom Plate, 500ml",,1,,PKI donated
|
||||||
|
31,"Bottle, BOD, 300mL",,3,,
|
||||||
|
34,"Buret, Automatic Auto Refill, 50mL",Kimax,2,,
|
||||||
|
35,"Buret, Automatic Straight",,3,,
|
||||||
|
36,"Buret, Glass Stopcock, 50mL",Pyrex,2,,
|
||||||
|
39,"Buret, Teflon Stopcock, 10mL",Pyrex,1,,
|
||||||
|
40,"Buret, Teflon Stopcock, 25mL",Pyrex,2,,
|
||||||
|
41,"Buret, Teflon Stopcock, 50mL",Pyrex,4,,
|
||||||
|
42,"Buret, Teflon Stopcock, 50mL",Mars Lab,,,
|
||||||
|
46,"Column, Distilling, Drip Tip",,1,,PKI donated
|
||||||
|
47,"Column, Vigreux, Pattern-Multi",,1,,PKI donated
|
||||||
|
48,"Concentrator, 250mL",,1,,PKI donated
|
||||||
|
49,"Concentrator, 500mL",,1,,PKI donated
|
||||||
|
50,"Condenser, Allihn, 24/38",,1,,PKI donated
|
||||||
|
51,"Condenser, Allihn, 24/40, 300mm",,1,,PKI donated
|
||||||
|
52,"Condenser, Allihn, Drip – Tip",,1,,PKI donated
|
||||||
|
53,"Condenser, Allihn, Rotary Evaporator",,1,,PKI donated
|
||||||
|
54,"Condenser, Coiled-Distillation",,1,,PKI donated
|
||||||
|
55,"Condenser, Graham, Drip Tip, 19/38",,1,,PKI donated
|
||||||
|
56,"Condenser, Graham, TS-Joint, 55/50",,1,,PKI donated
|
||||||
|
57,"Condenser, Leibig, Drip – tip",,1,,PKI donated
|
||||||
|
58,"Condenser, Leibig, Drip tip, 24/40, 41x 300mm",,1,,PKI donated
|
||||||
|
59,"Condenser, West Drip Tip, 55/50",,1,,PKI donated
|
||||||
|
60,"Condenser, with Still Head",,1,,PKI donated
|
||||||
|
61,Connecting Bulb for Kjeldal,,1,,PKI donated
|
||||||
|
62,"Connecting Tube, Clasein, 24/29",,1,,PKI donated
|
||||||
|
63,"Cuvette, Glass, 3.5mL capacity",Mars Lab,8,,
|
||||||
|
64,"Cylinder, Graduated, 1000mL",Pyrex,1,,
|
||||||
|
66,"Cylinder, Graduated, 100mL",Mars Lab,52,4,
|
||||||
|
67,"Cylinder, Graduated, 10mL",Pyrex,7,,
|
||||||
|
69,"Cylinder, Graduated, 25mL",Pyrex,10,,
|
||||||
|
70,"Cylinder, Graduated, 50mL",Pyrex,5,,
|
||||||
|
72,"Cylinder, Graduated, 250mL",Mars Lab,10,,
|
||||||
|
72,"Cylinder, Graduated,Plastic 100mL",,1,,
|
||||||
|
73,"Dessicator, Glass, 10.4in.(O.D) x 8.11in.",,1,,
|
||||||
|
74,"Dessicator, Glass, 10.5in.(O.D) x 8.30in.",,1,,
|
||||||
|
75,"Dessicator, Glass, 10.5in.(O.D) x 9.23in.",,1,,
|
||||||
|
76,"Dessicator, Glass, 12.6in.(O.D) x 12.7in.",,1,,
|
||||||
|
77,"Dessicator, Glass, 6.63in.(O.D) x 6.00in.",,1,,
|
||||||
|
78,"Dessicator, Glass, 6.74in.(O.D) x 6.16in.",,1,,
|
||||||
|
79,"Dessicator, Glass, 7,500mL",Mars Lab,4,,
|
||||||
|
80,"Dessicator, Glass, 8.63in.(O.D) x 7.91in.",,1,,
|
||||||
|
81,"Dessicator, Glass, 8.67in.(O.D) x 7.61in.",,1,,
|
||||||
|
82,"Dessicator, Glass, 8.92in.(O.D) x 6.89in.",,1,,
|
||||||
|
83,"Dessicator, Glass, 8.93in.(O.D) x 9.10in.",,1,,
|
||||||
|
84,"Distillation Set up, Distilling Flask(1000mL) and Condenser",Mars Lab,3,,
|
||||||
|
85,"Distilling Flask, 1000mL",Pyrex,6,,
|
||||||
|
86,"Distilling Flask, Round Bottom, 100mL",,3,,
|
||||||
|
87,"Distilling Reciever, Dean Stark",,2,,
|
||||||
|
92,"Flask, Centrifuge, TS-Joint, 1000mL",,1,,PKI donated
|
||||||
|
93,"Flask, Centrifuge, TS-Joint, 1000mL",Vidrex,2,,
|
||||||
|
94,"Flask, Conical 500mL",Mars Lab,20,,
|
||||||
|
95,"Flask, Distilling, Round Bottom, 1000mL",,1,,PKI donated
|
||||||
|
96,"Flask, Distilling, Round Bottom, 1000mL",Pyrex,1,,
|
||||||
|
98,"Flask, Erlenmeyer, Low Actinic, 250mL",Pyrex,4,,
|
||||||
|
99,"Flask, Erlenmeyer, Narrowmouth, 1000mL",Pyrex,5,,
|
||||||
|
11,"Flask, Erlenmeyer, Narrowmouth, 125mL",Pyrex,11,,
|
||||||
|
103,"Flask, Erlenmeyer, Narrowmouth, 250mL",Pyrex,9,,
|
||||||
|
105,"Flask, Erlenmeyer, Narrowmouth, 300mL",Pyrex,3,,
|
||||||
|
63,"Flask, Erlenmeyer, Narrowmouth, 500mL",Pyrex,63,6,
|
||||||
|
116,"Flask, Kjeldal, 200mL",,8,,
|
||||||
|
117,"Flask, Kjeldal, 500mL",,1,,
|
||||||
|
118,"Flask, Kjeldal, 500mL",Mars Lab,33,,
|
||||||
|
119,"Flask, Pear Shape, Shortneck, 1000mL",Pyrex,4,,
|
||||||
|
120,"Flask, Pear Shape, Shortneck, 100mL",Pyrex,8,,
|
||||||
|
121,"Flask, Pear Shape, Shortneck, 500mL",Pyrex,5,,
|
||||||
|
122,"Flask, Pear Shape, Shortneck, 50mL",Pyrex,2,,
|
||||||
|
131,"Flask, Volumetric, 100mL",Pyrex,7,,
|
||||||
|
132,"Flask, Volumetric, 100mL",Mars Lab,4,,
|
||||||
|
134,"Flask, Volumetric, 200mL",Pyrex,4,,
|
||||||
|
136,"Flask, Volumetric, 250mL",Pyrex,15,,
|
||||||
|
139,"Flask, Volumetric, 500mL",Pyrex,1,,
|
||||||
|
141,"Flask, Volumetric, 50mL",Pyrex,1,,
|
||||||
|
142,"Flask, Volumetric, 50mL",Mars Lab,7,,flasks have a broken stoppers
|
||||||
|
143,"Funnel, Dropping, 1000mL",Pyrex,1,,PKI donated
|
||||||
|
145,"Funnel, Separatory, Pear Shape, 100mL",Vidrex,3,,
|
||||||
|
147,"Funnel, Separatory, Pear Shape, 250mL",Mars Lab,23,,
|
||||||
|
148,"Funnel, Separatory, Pear Shape, 500mL",Pyrex,11,,
|
||||||
|
149,"Funnel, Separatory, Pear Shape, 500mL",Pyrex,1,,
|
||||||
|
149,"Funnel, Separatory, Pear Shape, 50mL",Pyrex,1,,
|
||||||
|
150,"Funnel, Short Stem, 100mm",Pyrex,4,,
|
||||||
|
152,"Funnel, Short Stem, 60° angle",Mars Lab,23,,
|
||||||
|
171,"Pipet, Measuring, 10mL",Mars Lab,11,,
|
||||||
|
172,"Pipet, Measuring, 1mL",,3,,
|
||||||
|
174,"Pipet, Measuring, 25mL",,19,,
|
||||||
|
190,"Pycnometer, 25mL",Mars Lab,1,,
|
||||||
|
192,Recovery Bend w/ 2 Vertical Cones,,1,,
|
||||||
|
193,Retort,,3,2,
|
||||||
|
194,"Slide Glass, 100pcs. Per box",Matsunami,8,,
|
||||||
|
197,"Slide Glass, 72pcs. Per pack",Sail Brand,1,,
|
||||||
|
198,"Soxhlet Extraction Tube, TS-Joint, 34/28",Vidrex,4,,
|
||||||
|
199,"Soxhlet Extraction Tube, TS-Joint, Large",,12,,
|
||||||
|
200,Stirring Rod,,5,,
|
||||||
|
221,Tilting Dispense,,5,,
|
||||||
|
223,"Watch Glass, 100mm dia. ",Mars Lab,50,,
|
||||||
|
,,,,,
|
||||||
|
,,,,,
|
||||||
|
,,,,,
|
||||||
|
,,,,,
|
||||||
|
,,,,,
|
||||||
|
,,,,,
|
||||||
|
,,,,,
|
||||||
|
,,,,,
|
||||||
|
,,,,,
|
||||||
|
,,,,,
|
||||||
|
,,,,,
|
||||||
|
,,,,,
|
||||||
|
,,,,,
|
||||||
|
,,,,,
|
||||||
|
,,,,,
|
||||||
|
,,,,,
|
||||||
|
,,,,,
|
||||||
|
,,,,,
|
||||||
|
,,,,,
|
||||||
|
,,,,,
|
|
75
equipment_tracker/media/Glassware-Dispensing Room.csv
Normal file
75
equipment_tracker/media/Glassware-Dispensing Room.csv
Normal file
|
@ -0,0 +1,75 @@
|
||||||
|
,NAME,Brand/Supplier,Qty.,Breakages,Remarks
|
||||||
|
1,"Beaker, 1000mL",,2,,
|
||||||
|
3,"Beaker, 100mL",,148,3,
|
||||||
|
6,"Beaker, 150mL",,48,,
|
||||||
|
8,"Beaker, 250mL",,132,8,
|
||||||
|
11,"Beaker, 400mL",,26,,
|
||||||
|
14,"Beaker, 50mL",,122,3,
|
||||||
|
15,"Beaker, 500mL",,1,,
|
||||||
|
16,"Beaker, 600mL",,14,,
|
||||||
|
17,"Beaker, 800mL",,1,,
|
||||||
|
38,"Buret, Teflon Stopcock, 100mL",,13,,
|
||||||
|
40,"Buret, Teflon Stopcock, 25mL",,9,,
|
||||||
|
41,"Buret, Teflon Stopcock, 50mL",,11,,
|
||||||
|
64,"Cylinder, Graduated, 250mL",,7,,
|
||||||
|
65,"Cylinder, Graduated, 100mL",,38,2,
|
||||||
|
67,"Cylinder, Graduated, 10mL",,44,1,
|
||||||
|
69,"Cylinder, Graduated, 25mL",,16,1,
|
||||||
|
70,"Cylinder, Graduated, 50mL",,20,2,
|
||||||
|
84,"Distillation Set up, Distilling Flask(1000mL) and Condenser",,3,,
|
||||||
|
99,"Flask, Erlenmeyer, Narrowmouth, 1000mL",,18,,
|
||||||
|
100,"Flask, Erlenmeyer, Narrowmouth, 125mL",,37,2,
|
||||||
|
102,"Flask, Erlenmeyer, Narrowmouth, 2000mL",,2,,
|
||||||
|
103,"Flask, Erlenmeyer, Narrowmouth, 250mL",,52,4,
|
||||||
|
105,"Flask, Erlenmeyer, Narrowmouth, 300mL",,21,,
|
||||||
|
106,"Flask, Erlenmeyer, Narrowmouth, 500mL",,41,,
|
||||||
|
112,"Flask, Filtering 500mL",,11,2,
|
||||||
|
129,"Flask, Volumetric, 1000mL",,10,,
|
||||||
|
131,"Flask, Volumetric, 100mL",,,,
|
||||||
|
132,"Flask, Volumetric, 100mL",,38,,
|
||||||
|
134,"Flask, Volumetric, 200mL",,5,,
|
||||||
|
137,"Flask, Volumetric, 250mL",,10,,
|
||||||
|
139,"Flask, Volumetric, 500mL",,15,,
|
||||||
|
141,"Flask, Volumetric, 50mL",,11,,
|
||||||
|
146,"Funnel, Separatory, Pear Shape, 250mL",,13,1,
|
||||||
|
148,"Funnel, Separatory, Pear Shape, 500mL",,2,,
|
||||||
|
151,"Funnel, Short Stem, 50mm",,28,1,
|
||||||
|
163,"Petridish with cover, Glass, 100x15mm",,23,,
|
||||||
|
165,"Petridish without cover, Glass, 100x15mm",,3,,
|
||||||
|
166,"Petridish, with cover, Glass,140mmx17mm",,3,,
|
||||||
|
167,"Petridish, with cover, Glass,60mmx15mm",,5,,
|
||||||
|
168,"Petridish, without cover, Glass,140x17mm",,7,,
|
||||||
|
171,"Pipet, Measuring, 10mL",,15,,
|
||||||
|
172,"Pipet, Measuring, 1mL",,11,,
|
||||||
|
174,"Pipet, Measuring, 25mL",,12,,
|
||||||
|
176,"Pipet, Measuring, 2mL",,4,,
|
||||||
|
178,"Pipet, Measuring, 5mL",,5,,
|
||||||
|
179,"Pipet, Volumetric 15mL",,2,,
|
||||||
|
180,"Pipet, Volumetric, 10mL",,22,1,
|
||||||
|
181,"Pipet, Volumetric, 1mL",,2,,
|
||||||
|
182,"Pipet, Volumetric, 20mL",,1,,
|
||||||
|
186,"Pipet, Volumetric, 50mL",,2,,
|
||||||
|
187,"Pipet, Volumetric, 5mL",,4,,
|
||||||
|
189,"Pycnometer, 25mL",,8,,
|
||||||
|
200,Stirring Rod,,64,,
|
||||||
|
223,"Watch Glass, 100mm dia. ",,46,,
|
||||||
|
,,,,,
|
||||||
|
,,,,,
|
||||||
|
,,,,,
|
||||||
|
,,,,,
|
||||||
|
,,,,,
|
||||||
|
,,,,,
|
||||||
|
,,,,,
|
||||||
|
,,,,,
|
||||||
|
,,,,,
|
||||||
|
,,,,,
|
||||||
|
,,,,,
|
||||||
|
,,,,,
|
||||||
|
,,,,,
|
||||||
|
,,,,,
|
||||||
|
,,,,,
|
||||||
|
,,,,,
|
||||||
|
,,,,,
|
||||||
|
,,,,,
|
||||||
|
,,,,,
|
||||||
|
,,,,,
|
|
88
equipment_tracker/media/Glassware-Main Stockroom.csv
Normal file
88
equipment_tracker/media/Glassware-Main Stockroom.csv
Normal file
|
@ -0,0 +1,88 @@
|
||||||
|
,NAME,Brand/Supplier,Qty.,Breakages,Remarks
|
||||||
|
3,"Beaker, 100mL",,27,,
|
||||||
|
6,"Beaker, 150mL",,2,,
|
||||||
|
8,"Beaker, 250mL",,116,,
|
||||||
|
11,"Beaker, 400mL",,185,,
|
||||||
|
15,"Beaker, 50mL",,30,,
|
||||||
|
20,"Bottle Reagent, Clear, NM, 1000mL",,6,,
|
||||||
|
21,"Bottle Reagent, Clear, NM, 1000mL",Mars Lab,15,,
|
||||||
|
22,"Bottle Reagent, Clear, NM, 100mL",,13,,
|
||||||
|
23,"Bottle Reagent, Clear, NM, 2000mL",,5,,
|
||||||
|
24,"Bottle Reagent, Clear, NM, 2500mL",,2,,
|
||||||
|
25,"Bottle Reagent, Clear, NM, 5000mL",,6,,
|
||||||
|
26,"Bottle Reagent, Clear, NM, 500mL",,32,,
|
||||||
|
27,"Bottle Reagent, Clear, WM, 250mL",,11,,
|
||||||
|
28,"Bottle Reagent, Clear, WM, 40mL",,3,,
|
||||||
|
29,"Bottle Reagent, Clear, WM, 500mL",,4,,
|
||||||
|
30,"Bottle, BOD, 100mL",,12,,
|
||||||
|
31,"Bottle, BOD, 300mL",,48,26,
|
||||||
|
32,"Bottle, Media, 250mL",,6,,
|
||||||
|
33,"Bottle, Media, 500mL",,2,,
|
||||||
|
,"Buret, Teflon Stopcock, 100mL",,5,,
|
||||||
|
41,"Buret, Teflon Stopcock, 50mL",,84,,
|
||||||
|
64,"Cylinder, Graduated, 100mL",,36,,
|
||||||
|
65,"Cylinder, Graduated, 10mL",,38,,
|
||||||
|
67,"Cylinder, Graduated, 250mL",,3,,
|
||||||
|
70,"Cylinder, Graduated, 50mL",,28,,
|
||||||
|
84,"Distillation Set up, Distilling Flask(1000mL) and Condenser",,5,,
|
||||||
|
99,"Flask, Erlenmeyer, Narrowmouth, 1000mL",,17,,
|
||||||
|
100,"Flask, Erlenmeyer, Narrowmouth, 125mL",,13,,
|
||||||
|
102,"Flask, Erlenmeyer, Narrowmouth, 2000mL",,7,,
|
||||||
|
103,"Flask, Erlenmeyer, Narrowmouth, 250mL",,68,,
|
||||||
|
105,"Flask, Erlenmeyer, Narrowmouth, 300mL",,1,,
|
||||||
|
106,"Flask, Erlenmeyer, Narrowmouth, 500mL",,9,,
|
||||||
|
112,"Flask, Filtering 500mL",,55,,
|
||||||
|
124,"Flask, Round Bottom, Longneck, 500mL",,19,,
|
||||||
|
132,"Flask, Volumetric, 100mL",,7,,
|
||||||
|
139,"Flask, Volumetric, 500mL",,20,,
|
||||||
|
146,"Funnel, Separatory, Pear Shape, 250mL",,23,,
|
||||||
|
162,Nitrogen Distillation Apparatus,,1,,
|
||||||
|
174,"Pipet, Measuring, 25mL",,37,,
|
||||||
|
189,"Pycnometer, 25mL",,19,,
|
||||||
|
200,Stirring Rod,,68,,
|
||||||
|
194,"Slide Glass, 100pcs. Per box",Matsunami,10,,
|
||||||
|
195,"Slide Glass, 100pcs. Per box",Mars Lab,18,,
|
||||||
|
196,"Slide Glass, 50pcs. Per pack",Toshinriko,1,,
|
||||||
|
197,"Slide Glass, 72pcs. Per pack",Sail Brand,1,,
|
||||||
|
198,"Soxhlet Extraction Tube, TS-Joint, 34/28",Vidrex,4,,
|
||||||
|
199,"Soxhlet Extraction Tube, TS-Joint, Large",,12,,
|
||||||
|
202,Test Tube with Stopper 10mL,Mars Lab,18,,
|
||||||
|
203,Test Tube with screw caps 30mL,Mars Lab,236,,
|
||||||
|
204,"Test Tube, 10mL",Mars Lab,1924,45,
|
||||||
|
205,"Test Tube, 12mm OD x 120mmL",Hach,400,42,
|
||||||
|
206,"Test Tube, 12mm OD x 7mmL",,60,,
|
||||||
|
207,"Test Tube, 13mm OD x 110mmL",,88,,
|
||||||
|
208,"Test Tube, 13mm OD x 75mmL",,5,,
|
||||||
|
209,"Test Tube, 15mm OD x 100mmL",,16,,
|
||||||
|
210,"Test Tube, 16mm OD x 100mmL",,65,,
|
||||||
|
211,"Test Tube, 16mm OD x 125mmL",,191,20,
|
||||||
|
212,"Test Tube, 16mm OD x 60mmL",,64,,
|
||||||
|
213,"Test Tube, 18mm OD x 165mmL",,98,,
|
||||||
|
214,"Test Tube, 18mm OD x 16mmL",,54,,
|
||||||
|
215,"Test Tube, 20mL",Mars Lab,237,,
|
||||||
|
216,"Test Tube, 25mm OD x 200mmL",,81,,
|
||||||
|
217,"Test Tube, 50mL",Mars Lab,90,,
|
||||||
|
218,"Test Tube, Borosilicate Glass, 10/15",,2,,
|
||||||
|
219,"Test Tube, Borosilicate Glass, 100mL",,34,,
|
||||||
|
220,"Test Tube, Borosilicate Glass, 50mL",,55,,
|
||||||
|
223,"Watch Glass, 100mm dia. ",,86,23,
|
||||||
|
,,,,,
|
||||||
|
,,,,,
|
||||||
|
,,,,,
|
||||||
|
,,,,,
|
||||||
|
,,,,,
|
||||||
|
,,,,,
|
||||||
|
,,,,,
|
||||||
|
,,,,,
|
||||||
|
,,,,,
|
||||||
|
,,,,,
|
||||||
|
,,,,,
|
||||||
|
,,,,,
|
||||||
|
,,,,,
|
||||||
|
,,,,,
|
||||||
|
,,,,,
|
||||||
|
,,,,,
|
||||||
|
,,,,,
|
||||||
|
,,,,,
|
||||||
|
,,,,,
|
||||||
|
,,,,,
|
|
49
equipment_tracker/media/Miscellaneous-2nd Floor Chemlab.csv
Normal file
49
equipment_tracker/media/Miscellaneous-2nd Floor Chemlab.csv
Normal file
|
@ -0,0 +1,49 @@
|
||||||
|
,NAME,Brand/Supplier,Qty.,Breakages,Remarks
|
||||||
|
1,Alcohol Lamp,Mars Lab,20,,
|
||||||
|
2,"Basin, Plastic, 12inch Dia.",Mars Lab,1,,
|
||||||
|
3,"Bottle, Washing, Assorted, 500mL",Mars Lab,83,,
|
||||||
|
4,"Brush, Test Tube, Nylon, Regular",,12,,
|
||||||
|
5,Bunsen Burner,Mars Lab,53,,
|
||||||
|
6,"Clamp, Double Buret",Mars Lab,70,,
|
||||||
|
7,"Clamp, Extension",,268,,
|
||||||
|
8,"Clamp, Holder",Mars Lab,108,,
|
||||||
|
9,Conductivity Apparatus,Mars Lab,76,,
|
||||||
|
10,"Crucible Tong, 9 ¾cm",,68,,
|
||||||
|
11,"Crucible with cover,Porcelain 30mL",Mars Lab,76,,
|
||||||
|
14,"Iron Ring, 117mm I.D",Mars Lab,46,,
|
||||||
|
16,"Mortar & Pestle, Porcelain, 400mL Vol.",Mars Lab,20,,
|
||||||
|
17,"Spot Plate, Porcelain, 12 Crates",Mars Lab,92,,
|
||||||
|
18,Test Tube Holder,Mars Lab,244,,
|
||||||
|
19,"Test Tube Rack, Stainless, 50holes (ID)",,131,,
|
||||||
|
20,"Test Tube Rack, Stainless, 50holes (ID), Big",,16,,
|
||||||
|
21,"Thermometer, Alcohol -10° - 350°C",Mars Lab,119,,
|
||||||
|
22,"Thermometer, Mercury -10° - 350°C",Mars Lab,113,,
|
||||||
|
23,Triple Beam Balance,Mars Lab,28,,
|
||||||
|
24,Water Bath,Mars Lab,73,,
|
||||||
|
25,"Wire Gauze, Ceramic Centered, 5x5",Mars Lab,6,,
|
||||||
|
,,,,,
|
||||||
|
,,,,,
|
||||||
|
,,,,,
|
||||||
|
,,,,,
|
||||||
|
,,,,,
|
||||||
|
,,,,,
|
||||||
|
,,,,,
|
||||||
|
,,,,,
|
||||||
|
,,,,,
|
||||||
|
,,,,,
|
||||||
|
,,,,,
|
||||||
|
,,,,,
|
||||||
|
,,,,,
|
||||||
|
,,,,,
|
||||||
|
,,,,,
|
||||||
|
,,,,,
|
||||||
|
,,,,,
|
||||||
|
,,,,,
|
||||||
|
,,,,,
|
||||||
|
,,,,,
|
||||||
|
,,,,,
|
||||||
|
,,,,,
|
||||||
|
,,,,,
|
||||||
|
,,,,,
|
||||||
|
,,,,,
|
||||||
|
,,,,,
|
|
57
equipment_tracker/media/Miscellaneous-Dispensing Room.csv
Normal file
57
equipment_tracker/media/Miscellaneous-Dispensing Room.csv
Normal file
|
@ -0,0 +1,57 @@
|
||||||
|
,NAME,Brand/Supplier,Qty.,Breakages,Remarks
|
||||||
|
1,Alcohol Lamp,Mars Lab,9,1,
|
||||||
|
2,"Basin, Plastic, 12inch Dia.",Mars Lab,4,,
|
||||||
|
3,"Bottle, Washing, Assorted, 500mL",Mars Lab,67,4,
|
||||||
|
4,"Brush, Test Tube, Nylon, Regular",,47,12,
|
||||||
|
5,"Bulb, Aspirator, Orange, Pointed Tip",,33,16,
|
||||||
|
6,Bunsen Burner,Mars Lab,15,4,
|
||||||
|
7,"Clamp, Double Buret",Mars Lab,26,,
|
||||||
|
8,"Clamp, Extension",,30,3,
|
||||||
|
9,"Crucible Tong, 9 ¾cm",,37,,
|
||||||
|
10,"Crucible with cover,Porcelain 30mL",Mars Lab,82,34,
|
||||||
|
11,"Crucible, Metal w/o cover, 30mL",,8,,
|
||||||
|
12,"Evaporating dish, 120mL",Mars Lab,22,15,
|
||||||
|
13,"Forceps, Stainless",Mars Lab,10,3,
|
||||||
|
14,Funnel Stand,,9,,
|
||||||
|
15,"Funnel, Buchner, 200mm",,5,,
|
||||||
|
16,"Hot Plate, Single Burner",Mars Lab,5,1,
|
||||||
|
17,"Hydrometer, range: 1.000 tp 1.070",Mars Lab,,,
|
||||||
|
18,"Iron Ring, 117mm I.D",Mars Lab,24,,
|
||||||
|
19,Iron Stand,Mars Lab,26,,
|
||||||
|
20,"Iron Wire Triangles, 3.8(1.5)cm(in.)",,9,4,
|
||||||
|
21,"Mortar & Pestle, Porcelain, 400mL Vol.",Mars Lab,28,,
|
||||||
|
22,"Spot Plate, Porcelain, 12 Crates",Mars Lab,19,,
|
||||||
|
23,"Spot Plate, Porcelain, 12 Holes, Plastic",,5,4,
|
||||||
|
24,Test Tube Holder,Mars Lab,31,,
|
||||||
|
25,"Test Tube Rack, Stainless, 50holes (ID), ",,34,,
|
||||||
|
26,"Thermometer, Alcohol -10° - 350°C",Mars Lab,44,12,
|
||||||
|
27,"Thermometer, Mercury -10° - 350°C",Mars Lab,29,11,
|
||||||
|
28,Triple Beam Balance,Mars Lab,11,,
|
||||||
|
29,Water Bath,Mars Lab,21,5,
|
||||||
|
30,"Wire Gauze, Ceramic Centered, 5x5",Mars Lab,60,45,
|
||||||
|
,,,,,
|
||||||
|
,,,,,
|
||||||
|
,,,,,
|
||||||
|
,,,,,
|
||||||
|
,,,,,
|
||||||
|
,,,,,
|
||||||
|
,,,,,
|
||||||
|
,,,,,
|
||||||
|
,,,,,
|
||||||
|
,,,,,
|
||||||
|
,,,,,
|
||||||
|
,,,,,
|
||||||
|
,,,,,
|
||||||
|
,,,,,
|
||||||
|
,,,,,
|
||||||
|
,,,,,
|
||||||
|
,,,,,
|
||||||
|
,,,,,
|
||||||
|
,,,,,
|
||||||
|
,,,,,
|
||||||
|
,,,,,
|
||||||
|
,,,,,
|
||||||
|
,,,,,
|
||||||
|
,,,,,
|
||||||
|
,,,,,
|
||||||
|
,,,,,
|
|
49
equipment_tracker/media/Miscellaneous-Main Stockroom.csv
Normal file
49
equipment_tracker/media/Miscellaneous-Main Stockroom.csv
Normal file
|
@ -0,0 +1,49 @@
|
||||||
|
,NAME,Brand/Supplier,Qty.,Breakages,Remarks
|
||||||
|
1,Alcohol Lamp,Mars Lab,20,,
|
||||||
|
2,"Basin, Plastic, 12inch Dia.",Mars Lab,1,,
|
||||||
|
3,"Bottle, Washing, Assorted, 500mL",Mars Lab,83,,
|
||||||
|
4,"Brush, Test Tube, Nylon, Regular",,12,,
|
||||||
|
5,Bunsen Burner,Mars Lab,53,,
|
||||||
|
6,"Clamp, Double Buret",Mars Lab,70,,
|
||||||
|
7,"Clamp, Extension",,268,,
|
||||||
|
8,"Clamp, Holder",Mars Lab,108,,
|
||||||
|
9,Conductivity Apparatus,Mars Lab,76,,
|
||||||
|
10,"Crucible Tong, 9 ¾cm",,68,,
|
||||||
|
11,"Crucible with cover,Porcelain 30mL",Mars Lab,76,,
|
||||||
|
14,"Iron Ring, 117mm I.D",Mars Lab,46,,
|
||||||
|
16,"Mortar & Pestle, Porcelain, 400mL Vol.",Mars Lab,20,,
|
||||||
|
17,"Spot Plate, Porcelain, 12 Crates",Mars Lab,92,,
|
||||||
|
18,Test Tube Holder,Mars Lab,244,,
|
||||||
|
19,"Test Tube Rack, Stainless, 50holes (ID)",,131,,
|
||||||
|
20,"Test Tube Rack, Stainless, 50holes (ID), Big",,16,,
|
||||||
|
21,"Thermometer, Alcohol -10° - 350°C",Mars Lab,119,,
|
||||||
|
22,"Thermometer, Mercury -10° - 350°C",Mars Lab,113,,
|
||||||
|
23,Triple Beam Balance,Mars Lab,28,,
|
||||||
|
24,Water Bath,Mars Lab,73,,
|
||||||
|
25,"Wire Gauze, Ceramic Centered, 5x5",Mars Lab,6,,
|
||||||
|
,,,,,
|
||||||
|
,,,,,
|
||||||
|
,,,,,
|
||||||
|
,,,,,
|
||||||
|
,,,,,
|
||||||
|
,,,,,
|
||||||
|
,,,,,
|
||||||
|
,,,,,
|
||||||
|
,,,,,
|
||||||
|
,,,,,
|
||||||
|
,,,,,
|
||||||
|
,,,,,
|
||||||
|
,,,,,
|
||||||
|
,,,,,
|
||||||
|
,,,,,
|
||||||
|
,,,,,
|
||||||
|
,,,,,
|
||||||
|
,,,,,
|
||||||
|
,,,,,
|
||||||
|
,,,,,
|
||||||
|
,,,,,
|
||||||
|
,,,,,
|
||||||
|
,,,,,
|
||||||
|
,,,,,
|
||||||
|
,,,,,
|
||||||
|
,,,,,
|
|
|
@ -1586,9 +1586,14 @@ components:
|
||||||
remarks:
|
remarks:
|
||||||
type: string
|
type: string
|
||||||
nullable: true
|
nullable: true
|
||||||
maxLength: 512
|
|
||||||
transaction_status:
|
transaction_status:
|
||||||
$ref: '#/components/schemas/TransactionStatusEnum'
|
$ref: '#/components/schemas/TransactionStatusEnum'
|
||||||
|
additional_members:
|
||||||
|
type: string
|
||||||
|
nullable: true
|
||||||
|
consumables:
|
||||||
|
type: string
|
||||||
|
nullable: true
|
||||||
timestamp:
|
timestamp:
|
||||||
type: string
|
type: string
|
||||||
format: date-time
|
format: date-time
|
||||||
|
@ -1697,9 +1702,14 @@ components:
|
||||||
remarks:
|
remarks:
|
||||||
type: string
|
type: string
|
||||||
nullable: true
|
nullable: true
|
||||||
maxLength: 512
|
|
||||||
transaction_status:
|
transaction_status:
|
||||||
$ref: '#/components/schemas/TransactionStatusEnum'
|
$ref: '#/components/schemas/TransactionStatusEnum'
|
||||||
|
additional_members:
|
||||||
|
type: string
|
||||||
|
nullable: true
|
||||||
|
consumables:
|
||||||
|
type: string
|
||||||
|
nullable: true
|
||||||
timestamp:
|
timestamp:
|
||||||
type: string
|
type: string
|
||||||
format: date-time
|
format: date-time
|
||||||
|
|
|
@ -0,0 +1,18 @@
|
||||||
|
# Generated by Django 5.0.1 on 2024-01-06 16:49
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('transactions', '0001_initial'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='transaction',
|
||||||
|
name='transaction_status',
|
||||||
|
field=models.CharField(choices=[('Pending Approval', 'Pending Approval'), ('Approved', 'Approved'), ('Rejected', 'Rejected'), ('Cancelled', 'Cancelled'), ('Borrowed', 'Borrowed'), ('Returned: Pending Checking', 'Returned: Pending Checking'), ('With Breakages: Pending Resolution', 'With Breakages: Pending Resolution'), ('Finalized', 'Finalized')], db_index=True, default='Pending', max_length=40),
|
||||||
|
),
|
||||||
|
]
|
|
@ -2,6 +2,7 @@ from django.db import models
|
||||||
from accounts.models import CustomUser
|
from accounts.models import CustomUser
|
||||||
from equipments.models import EquipmentInstance
|
from equipments.models import EquipmentInstance
|
||||||
from django.utils.timezone import now
|
from django.utils.timezone import now
|
||||||
|
from django.core.cache import cache
|
||||||
|
|
||||||
|
|
||||||
class Transaction(models.Model):
|
class Transaction(models.Model):
|
||||||
|
@ -34,9 +35,13 @@ class Transaction(models.Model):
|
||||||
CustomUser, on_delete=models.SET_NULL, null=True, related_name='teacher_transactions')
|
CustomUser, on_delete=models.SET_NULL, null=True, related_name='teacher_transactions')
|
||||||
equipments = models.ManyToManyField(EquipmentInstance)
|
equipments = models.ManyToManyField(EquipmentInstance)
|
||||||
transaction_status = models.CharField(
|
transaction_status = models.CharField(
|
||||||
max_length=40, choices=TRANSACTION_STATUS_CHOICES, default='Pending')
|
max_length=40, choices=TRANSACTION_STATUS_CHOICES, default='Pending', db_index=True)
|
||||||
subject = models.TextField(max_length=128)
|
subject = models.TextField(max_length=128)
|
||||||
timestamp = models.DateTimeField(default=now, editable=False)
|
timestamp = models.DateTimeField(default=now, editable=False)
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return f"Transaction #{self.id} under {self.teacher} by {self.borrower}"
|
return f"Transaction #{self.id} under {self.teacher} by {self.borrower}"
|
||||||
|
|
||||||
|
def save(self, *args, **kwargs):
|
||||||
|
cache.delete('non_finalized_transactions')
|
||||||
|
return super().save(*args, **kwargs)
|
||||||
|
|
|
@ -1,43 +1,66 @@
|
||||||
-i https://pypi.org/simple
|
-i https://pypi.org/simple
|
||||||
|
annotated-types==0.6.0; python_version >= '3.8'
|
||||||
asgiref==3.7.2; python_version >= '3.7'
|
asgiref==3.7.2; python_version >= '3.7'
|
||||||
attrs==23.1.0; python_version >= '3.7'
|
attrs==23.2.0; python_version >= '3.7'
|
||||||
certifi==2023.11.17; python_version >= '3.6'
|
certifi==2023.11.17; python_version >= '3.6'
|
||||||
cffi==1.16.0; python_version >= '3.8'
|
cffi==1.16.0; python_version >= '3.8'
|
||||||
charset-normalizer==3.3.2; python_full_version >= '3.7.0'
|
charset-normalizer==3.3.2; python_full_version >= '3.7.0'
|
||||||
|
click==8.1.7; python_version >= '3.7'
|
||||||
|
colorama==0.4.6; platform_system == 'Windows'
|
||||||
cryptography==41.0.7; python_version >= '3.7'
|
cryptography==41.0.7; python_version >= '3.7'
|
||||||
defusedxml==0.8.0rc2; python_version >= '3.6'
|
defusedxml==0.8.0rc2; python_version >= '3.6'
|
||||||
django==4.2.7
|
django==5.0.1
|
||||||
django-cors-headers==4.3.1
|
django-cors-headers==4.3.1
|
||||||
django-extra-fields==3.0.2
|
django-extra-fields==3.0.2
|
||||||
django-simple-history==3.4.0
|
django-simple-history==3.4.0
|
||||||
django-templated-mail==1.1.1
|
django-templated-mail==1.1.1
|
||||||
django-unfold==0.17.1
|
django-unfold==0.19.0
|
||||||
djangorestframework==3.14.0
|
djangorestframework==3.14.0
|
||||||
djangorestframework-simplejwt==5.3.0; python_version >= '3.7'
|
djangorestframework-simplejwt==5.3.1; python_version >= '3.8'
|
||||||
djoser==2.2.2
|
djoser==2.2.2
|
||||||
drf-spectacular[sidecar]==0.26.5
|
dotty-dict==1.3.1; python_version >= '3.5' and python_version < '4.0'
|
||||||
drf-spectacular-sidecar==2023.10.1
|
drf-spectacular[sidecar]==0.27.0
|
||||||
|
drf-spectacular-sidecar==2024.1.1
|
||||||
|
gitdb==4.0.11; python_version >= '3.7'
|
||||||
|
gitpython==3.1.40; python_version >= '3.7'
|
||||||
idna==3.6; python_version >= '3.5'
|
idna==3.6; python_version >= '3.5'
|
||||||
|
importlib-resources==6.1.1; python_version >= '3.8'
|
||||||
inflection==0.5.1; python_version >= '3.5'
|
inflection==0.5.1; python_version >= '3.5'
|
||||||
|
jinja2==3.1.2; python_version >= '3.7'
|
||||||
jsonschema==4.20.0; python_version >= '3.8'
|
jsonschema==4.20.0; python_version >= '3.8'
|
||||||
jsonschema-specifications==2023.11.2; python_version >= '3.8'
|
jsonschema-specifications==2023.12.1; python_version >= '3.8'
|
||||||
|
markdown-it-py==3.0.0; python_version >= '3.8'
|
||||||
|
markupsafe==2.1.3; python_version >= '3.7'
|
||||||
|
mdurl==0.1.2; python_version >= '3.7'
|
||||||
oauthlib==3.2.2; python_version >= '3.6'
|
oauthlib==3.2.2; python_version >= '3.6'
|
||||||
pillow==10.1.0
|
pillow==10.2.0
|
||||||
psycopg2==2.9.9
|
psycopg2==2.9.9
|
||||||
pycparser==2.21
|
pycparser==2.21
|
||||||
|
pydantic==2.5.3; python_version >= '3.7'
|
||||||
|
pydantic-core==2.14.6; python_version >= '3.7'
|
||||||
|
pygments==2.17.2; python_version >= '3.7'
|
||||||
pyjwt==2.8.0; python_version >= '3.7'
|
pyjwt==2.8.0; python_version >= '3.7'
|
||||||
|
pymemcache==4.0.0
|
||||||
python-dotenv==1.0.0
|
python-dotenv==1.0.0
|
||||||
|
python-gitlab==4.3.0; python_full_version >= '3.8.0'
|
||||||
|
python-semantic-release==8.7.0; python_version >= '3.7'
|
||||||
python3-openid==3.2.0
|
python3-openid==3.2.0
|
||||||
pytz==2023.3.post1
|
pytz==2023.3.post1
|
||||||
pyyaml==6.0.1; python_version >= '3.6'
|
pyyaml==6.0.1; python_version >= '3.6'
|
||||||
referencing==0.31.1; python_version >= '3.8'
|
referencing==0.32.1; python_version >= '3.8'
|
||||||
requests==2.31.0; python_version >= '3.7'
|
requests==2.31.0; python_version >= '3.7'
|
||||||
requests-oauthlib==1.3.1; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'
|
requests-oauthlib==1.3.1; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'
|
||||||
rpds-py==0.13.2; python_version >= '3.8'
|
requests-toolbelt==1.0.0; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'
|
||||||
|
rich==13.7.0; python_full_version >= '3.7.0'
|
||||||
|
rpds-py==0.16.2; python_version >= '3.8'
|
||||||
|
shellingham==1.5.4; python_version >= '3.7'
|
||||||
|
smmap==5.0.1; python_version >= '3.7'
|
||||||
social-auth-app-django==5.4.0; python_version >= '3.8'
|
social-auth-app-django==5.4.0; python_version >= '3.8'
|
||||||
social-auth-core==4.5.1; python_version >= '3.8'
|
social-auth-core==4.5.1; python_version >= '3.8'
|
||||||
sqlparse==0.4.4; python_version >= '3.5'
|
sqlparse==0.4.4; python_version >= '3.5'
|
||||||
tzdata==2023.3; sys_platform == 'win32'
|
tomlkit==0.12.3; python_version >= '3.7'
|
||||||
|
typing-extensions==4.9.0; python_version >= '3.8'
|
||||||
|
tzdata==2023.4; sys_platform == 'win32'
|
||||||
uritemplate==4.1.1; python_version >= '3.6'
|
uritemplate==4.1.1; python_version >= '3.6'
|
||||||
urllib3==2.1.0; python_version >= '3.8'
|
urllib3==2.1.0; python_version >= '3.8'
|
||||||
whitenoise==6.6.0
|
whitenoise==6.6.0
|
||||||
|
|
Loading…
Reference in a new issue