From 2d86576cd573a46aab3b69cb4743381123c27a84 Mon Sep 17 00:00:00 2001 From: Rushil Umaretiya Date: Tue, 20 Sep 2022 21:05:19 -0400 Subject: [PATCH] feat: new features lol --- hunt/Pipfile | 12 + hunt/Pipfile.lock | 296 ++++++++++++++++++ hunt/README.md | 1 + .../main/migrations/0012_alter_class_year.py | 18 ++ hunt/apps/main/models.py | 2 +- hunt/apps/main/urls.py | 1 + hunt/apps/main/views.py | 17 +- .../0004_alter_user_challenges_done.py | 19 ++ .../users/migrations/0005_user_dark_mode.py | 18 ++ hunt/apps/users/models.py | 3 +- hunt/manage.py | 22 ++ hunt/settings/__init__.py | 2 +- hunt/static/css/overview.css | 8 +- hunt/static/img/losing.mp3 | Bin 0 -> 41555 bytes hunt/templates/auth/login.html | 4 +- hunt/templates/base.html | 4 + hunt/templates/base_with_nav.html | 6 + hunt/templates/main/index.html | 92 +++++- hunt/templates/main/overview.html | 10 +- run.sh | 0 20 files changed, 519 insertions(+), 16 deletions(-) create mode 100644 hunt/Pipfile create mode 100644 hunt/Pipfile.lock create mode 100644 hunt/README.md create mode 100644 hunt/apps/main/migrations/0012_alter_class_year.py create mode 100644 hunt/apps/users/migrations/0004_alter_user_challenges_done.py create mode 100644 hunt/apps/users/migrations/0005_user_dark_mode.py create mode 100755 hunt/manage.py create mode 100644 hunt/static/img/losing.mp3 mode change 100644 => 100755 run.sh diff --git a/hunt/Pipfile b/hunt/Pipfile new file mode 100644 index 0000000..70d2d4f --- /dev/null +++ b/hunt/Pipfile @@ -0,0 +1,12 @@ +[[source]] +url = "https://pypi.python.org/simple" +verify_ssl = true +name = "pypi" + +[packages] +Django = "~=3.2" +psycopg2-binary = "~=2.8.6" +social-auth-app-django = "~=4.0.0" +gunicorn = "*" +whitenoise = "*" +django-ckeditor = "*" \ No newline at end of file diff --git a/hunt/Pipfile.lock b/hunt/Pipfile.lock new file mode 100644 index 0000000..56161cb --- /dev/null +++ b/hunt/Pipfile.lock @@ -0,0 +1,296 @@ +{ + "_meta": { + "hash": { + "sha256": "91d9b3fd6ebf46b5342b7ad4b05cbcb362e289f9ec1abf7e931ab806a9751afe" + }, + "pipfile-spec": 6, + "requires": {}, + "sources": [ + { + "name": "pypi", + "url": "https://pypi.python.org/simple", + "verify_ssl": true + } + ] + }, + "default": { + "asgiref": { + "hashes": [ + "sha256:4ef1ab46b484e3c706329cedeff284a5d40824200638503f5768edb6de7d58e9", + "sha256:ffc141aa908e6f175673e7b1b3b7af4fdb0ecb738fc5c8b88f69f055c2415214" + ], + "version": "==3.4.1" + }, + "certifi": { + "hashes": [ + "sha256:2bbf76fd432960138b3ef6dda3dde0544f27cbf8546c458e60baf371917ba9ee", + "sha256:50b1e4f8446b06f41be7dd6338db18e0990601dce795c2b1686458aa7e8fa7d8" + ], + "version": "==2021.5.30" + }, + "cffi": { + "hashes": [ + "sha256:06c54a68935738d206570b20da5ef2b6b6d92b38ef3ec45c5422c0ebaf338d4d", + "sha256:0c0591bee64e438883b0c92a7bed78f6290d40bf02e54c5bf0978eaf36061771", + "sha256:19ca0dbdeda3b2615421d54bef8985f72af6e0c47082a8d26122adac81a95872", + "sha256:22b9c3c320171c108e903d61a3723b51e37aaa8c81255b5e7ce102775bd01e2c", + "sha256:26bb2549b72708c833f5abe62b756176022a7b9a7f689b571e74c8478ead51dc", + "sha256:33791e8a2dc2953f28b8d8d300dde42dd929ac28f974c4b4c6272cb2955cb762", + "sha256:3c8d896becff2fa653dc4438b54a5a25a971d1f4110b32bd3068db3722c80202", + "sha256:4373612d59c404baeb7cbd788a18b2b2a8331abcc84c3ba40051fcd18b17a4d5", + "sha256:487d63e1454627c8e47dd230025780e91869cfba4c753a74fda196a1f6ad6548", + "sha256:48916e459c54c4a70e52745639f1db524542140433599e13911b2f329834276a", + "sha256:4922cd707b25e623b902c86188aca466d3620892db76c0bdd7b99a3d5e61d35f", + "sha256:55af55e32ae468e9946f741a5d51f9896da6b9bf0bbdd326843fec05c730eb20", + "sha256:57e555a9feb4a8460415f1aac331a2dc833b1115284f7ded7278b54afc5bd218", + "sha256:5d4b68e216fc65e9fe4f524c177b54964af043dde734807586cf5435af84045c", + "sha256:64fda793737bc4037521d4899be780534b9aea552eb673b9833b01f945904c2e", + "sha256:6d6169cb3c6c2ad50db5b868db6491a790300ade1ed5d1da29289d73bbe40b56", + "sha256:7bcac9a2b4fdbed2c16fa5681356d7121ecabf041f18d97ed5b8e0dd38a80224", + "sha256:80b06212075346b5546b0417b9f2bf467fea3bfe7352f781ffc05a8ab24ba14a", + "sha256:818014c754cd3dba7229c0f5884396264d51ffb87ec86e927ef0be140bfdb0d2", + "sha256:8eb687582ed7cd8c4bdbff3df6c0da443eb89c3c72e6e5dcdd9c81729712791a", + "sha256:99f27fefe34c37ba9875f224a8f36e31d744d8083e00f520f133cab79ad5e819", + "sha256:9f3e33c28cd39d1b655ed1ba7247133b6f7fc16fa16887b120c0c670e35ce346", + "sha256:a8661b2ce9694ca01c529bfa204dbb144b275a31685a075ce123f12331be790b", + "sha256:a9da7010cec5a12193d1af9872a00888f396aba3dc79186604a09ea3ee7c029e", + "sha256:aedb15f0a5a5949ecb129a82b72b19df97bbbca024081ed2ef88bd5c0a610534", + "sha256:b315d709717a99f4b27b59b021e6207c64620790ca3e0bde636a6c7f14618abb", + "sha256:ba6f2b3f452e150945d58f4badd92310449876c4c954836cfb1803bdd7b422f0", + "sha256:c33d18eb6e6bc36f09d793c0dc58b0211fccc6ae5149b808da4a62660678b156", + "sha256:c9a875ce9d7fe32887784274dd533c57909b7b1dcadcc128a2ac21331a9765dd", + "sha256:c9e005e9bd57bc987764c32a1bee4364c44fdc11a3cc20a40b93b444984f2b87", + "sha256:d2ad4d668a5c0645d281dcd17aff2be3212bc109b33814bbb15c4939f44181cc", + "sha256:d950695ae4381ecd856bcaf2b1e866720e4ab9a1498cba61c602e56630ca7195", + "sha256:e22dcb48709fc51a7b58a927391b23ab37eb3737a98ac4338e2448bef8559b33", + "sha256:e8c6a99be100371dbb046880e7a282152aa5d6127ae01783e37662ef73850d8f", + "sha256:e9dc245e3ac69c92ee4c167fbdd7428ec1956d4e754223124991ef29eb57a09d", + "sha256:eb687a11f0a7a1839719edd80f41e459cc5366857ecbed383ff376c4e3cc6afd", + "sha256:eb9e2a346c5238a30a746893f23a9535e700f8192a68c07c0258e7ece6ff3728", + "sha256:ed38b924ce794e505647f7c331b22a693bee1538fdf46b0222c4717b42f744e7", + "sha256:f0010c6f9d1a4011e429109fda55a225921e3206e7f62a0c22a35344bfd13cca", + "sha256:f0c5d1acbfca6ebdd6b1e3eded8d261affb6ddcf2186205518f1428b8569bb99", + "sha256:f10afb1004f102c7868ebfe91c28f4a712227fe4cb24974350ace1f90e1febbf", + "sha256:f174135f5609428cc6e1b9090f9268f5c8935fddb1b25ccb8255a2d50de6789e", + "sha256:f3ebe6e73c319340830a9b2825d32eb6d8475c1dac020b4f0aa774ee3b898d1c", + "sha256:f627688813d0a4140153ff532537fbe4afea5a3dffce1f9deb7f91f848a832b5", + "sha256:fd4305f86f53dfd8cd3522269ed7fc34856a8ee3709a5e28b2836b2db9d4cd69" + ], + "version": "==1.14.6" + }, + "charset-normalizer": { + "hashes": [ + "sha256:5d209c0a931f215cee683b6445e2d77677e7e75e159f78def0db09d68fafcaa6", + "sha256:5ec46d183433dcbd0ab716f2d7f29d8dee50505b3fdb40c6b985c7c4f5a3591f" + ], + "markers": "python_version >= '3'", + "version": "==2.0.6" + }, + "cryptography": { + "hashes": [ + "sha256:0a7dcbcd3f1913f664aca35d47c1331fce738d44ec34b7be8b9d332151b0b01e", + "sha256:1eb7bb0df6f6f583dd8e054689def236255161ebbcf62b226454ab9ec663746b", + "sha256:21ca464b3a4b8d8e86ba0ee5045e103a1fcfac3b39319727bc0fc58c09c6aff7", + "sha256:34dae04a0dce5730d8eb7894eab617d8a70d0c97da76b905de9efb7128ad7085", + "sha256:3520667fda779eb788ea00080124875be18f2d8f0848ec00733c0ec3bb8219fc", + "sha256:3fa3a7ccf96e826affdf1a0a9432be74dc73423125c8f96a909e3835a5ef194a", + "sha256:5b0fbfae7ff7febdb74b574055c7466da334a5371f253732d7e2e7525d570498", + "sha256:695104a9223a7239d155d7627ad912953b540929ef97ae0c34c7b8bf30857e89", + "sha256:8695456444f277af73a4877db9fc979849cd3ee74c198d04fc0776ebc3db52b9", + "sha256:94cc5ed4ceaefcbe5bf38c8fba6a21fc1d365bb8fb826ea1688e3370b2e24a1c", + "sha256:94fff993ee9bc1b2440d3b7243d488c6a3d9724cc2b09cdb297f6a886d040ef7", + "sha256:9965c46c674ba8cc572bc09a03f4c649292ee73e1b683adb1ce81e82e9a6a0fb", + "sha256:a00cf305f07b26c351d8d4e1af84ad7501eca8a342dedf24a7acb0e7b7406e14", + "sha256:a305600e7a6b7b855cd798e00278161b681ad6e9b7eca94c721d5f588ab212af", + "sha256:cd65b60cfe004790c795cc35f272e41a3df4631e2fb6b35aa7ac6ef2859d554e", + "sha256:d2a6e5ef66503da51d2110edf6c403dc6b494cc0082f85db12f54e9c5d4c3ec5", + "sha256:d9ec0e67a14f9d1d48dd87a2531009a9b251c02ea42851c060b25c782516ff06", + "sha256:f44d141b8c4ea5eb4dbc9b3ad992d45580c1d22bf5e24363f2fbf50c2d7ae8a7" + ], + "version": "==3.4.8" + }, + "defusedxml": { + "hashes": [ + "sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69", + "sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61" + ], + "version": "==0.7.1" + }, + "django": { + "hashes": [ + "sha256:95b318319d6997bac3595517101ad9cc83fe5672ac498ba48d1a410f47afecd2", + "sha256:e93c93565005b37ddebf2396b4dc4b6913c1838baa82efdfb79acedd5816c240" + ], + "index": "pypi", + "version": "==3.2.7" + }, + "django-ckeditor": { + "hashes": [ + "sha256:346b26b9d60dc8a88524d0eaaf406f4e91a4b3c22d208ae87aa032bf500b251c", + "sha256:f0d108f67a81a04e26d8de11255fe314f51026eaf8eb0534a807512ae3c21620" + ], + "index": "pypi", + "version": "==6.1.0" + }, + "django-js-asset": { + "hashes": [ + "sha256:8ec12017f26eec524cab436c64ae73033368a372970af4cf42d9354fcb166bdd", + "sha256:c163ae80d2e0b22d8fb598047cd0dcef31f81830e127cfecae278ad574167260" + ], + "version": "==1.2.2" + }, + "gunicorn": { + "hashes": [ + "sha256:9dcc4547dbb1cb284accfb15ab5667a0e5d1881cc443e0677b4882a4067a807e", + "sha256:e0a968b5ba15f8a328fdfd7ab1fcb5af4470c28aaf7e55df02a99bc13138e6e8" + ], + "index": "pypi", + "version": "==20.1.0" + }, + "idna": { + "hashes": [ + "sha256:14475042e284991034cb48e06f6851428fb14c4dc953acd9be9a5e95c7b6dd7a", + "sha256:467fbad99067910785144ce333826c71fb0e63a425657295239737f7ecd125f3" + ], + "markers": "python_version >= '3'", + "version": "==3.2" + }, + "oauthlib": { + "hashes": [ + "sha256:42bf6354c2ed8c6acb54d971fce6f88193d97297e18602a3a886603f9d7730cc", + "sha256:8f0215fcc533dd8dd1bee6f4c412d4f0cd7297307d43ac61666389e3bc3198a3" + ], + "version": "==3.1.1" + }, + "psycopg2-binary": { + "hashes": [ + "sha256:0deac2af1a587ae12836aa07970f5cb91964f05a7c6cdb69d8425ff4c15d4e2c", + "sha256:0e4dc3d5996760104746e6cfcdb519d9d2cd27c738296525d5867ea695774e67", + "sha256:11b9c0ebce097180129e422379b824ae21c8f2a6596b159c7659e2e5a00e1aa0", + "sha256:15978a1fbd225583dd8cdaf37e67ccc278b5abecb4caf6b2d6b8e2b948e953f6", + "sha256:1fabed9ea2acc4efe4671b92c669a213db744d2af8a9fc5d69a8e9bc14b7a9db", + "sha256:2dac98e85565d5688e8ab7bdea5446674a83a3945a8f416ad0110018d1501b94", + "sha256:42ec1035841b389e8cc3692277a0bd81cdfe0b65d575a2c8862cec7a80e62e52", + "sha256:6422f2ff0919fd720195f64ffd8f924c1395d30f9a495f31e2392c2efafb5056", + "sha256:6a32f3a4cb2f6e1a0b15215f448e8ce2da192fd4ff35084d80d5e39da683e79b", + "sha256:7312e931b90fe14f925729cde58022f5d034241918a5c4f9797cac62f6b3a9dd", + "sha256:7d92a09b788cbb1aec325af5fcba9fed7203897bbd9269d5691bb1e3bce29550", + "sha256:833709a5c66ca52f1d21d41865a637223b368c0ee76ea54ca5bad6f2526c7679", + "sha256:89705f45ce07b2dfa806ee84439ec67c5d9a0ef20154e0e475e2b2ed392a5b83", + "sha256:8cd0fb36c7412996859cb4606a35969dd01f4ea34d9812a141cd920c3b18be77", + "sha256:950bc22bb56ee6ff142a2cb9ee980b571dd0912b0334aa3fe0fe3788d860bea2", + "sha256:a0c50db33c32594305b0ef9abc0cb7db13de7621d2cadf8392a1d9b3c437ef77", + "sha256:a0eb43a07386c3f1f1ebb4dc7aafb13f67188eab896e7397aa1ee95a9c884eb2", + "sha256:aaa4213c862f0ef00022751161df35804127b78adf4a2755b9f991a507e425fd", + "sha256:ac0c682111fbf404525dfc0f18a8b5f11be52657d4f96e9fcb75daf4f3984859", + "sha256:ad20d2eb875aaa1ea6d0f2916949f5c08a19c74d05b16ce6ebf6d24f2c9f75d1", + "sha256:b4afc542c0ac0db720cf516dd20c0846f71c248d2b3d21013aa0d4ef9c71ca25", + "sha256:b8a3715b3c4e604bcc94c90a825cd7f5635417453b253499664f784fc4da0152", + "sha256:ba28584e6bca48c59eecbf7efb1576ca214b47f05194646b081717fa628dfddf", + "sha256:ba381aec3a5dc29634f20692349d73f2d21f17653bda1decf0b52b11d694541f", + "sha256:bd1be66dde2b82f80afb9459fc618216753f67109b859a361cf7def5c7968729", + "sha256:c2507d796fca339c8fb03216364cca68d87e037c1f774977c8fc377627d01c71", + "sha256:cec7e622ebc545dbb4564e483dd20e4e404da17ae07e06f3e780b2dacd5cee66", + "sha256:d14b140a4439d816e3b1229a4a525df917d6ea22a0771a2a78332273fd9528a4", + "sha256:d1b4ab59e02d9008efe10ceabd0b31e79519da6fb67f7d8e8977118832d0f449", + "sha256:d5227b229005a696cc67676e24c214740efd90b148de5733419ac9aaba3773da", + "sha256:e1f57aa70d3f7cc6947fd88636a481638263ba04a742b4a37dd25c373e41491a", + "sha256:e74a55f6bad0e7d3968399deb50f61f4db1926acf4a6d83beaaa7df986f48b1c", + "sha256:e82aba2188b9ba309fd8e271702bd0d0fc9148ae3150532bbb474f4590039ffb", + "sha256:ee69dad2c7155756ad114c02db06002f4cded41132cc51378e57aad79cc8e4f4", + "sha256:f5ab93a2cb2d8338b1674be43b442a7f544a0971da062a5da774ed40587f18f5" + ], + "index": "pypi", + "version": "==2.8.6" + }, + "pycparser": { + "hashes": [ + "sha256:2d475327684562c3a96cc71adf7dc8c4f0565175cf86b6d7a404ff4c771f15f0", + "sha256:7582ad22678f0fcd81102833f60ef8d0e57288b6b5fb00323d101be910e35705" + ], + "version": "==2.20" + }, + "pyjwt": { + "hashes": [ + "sha256:934d73fbba91b0483d3857d1aff50e96b2a892384ee2c17417ed3203f173fca1", + "sha256:fba44e7898bbca160a2b2b501f492824fc8382485d3a6f11ba5d0c1937ce6130" + ], + "version": "==2.1.0" + }, + "python3-openid": { + "hashes": [ + "sha256:33fbf6928f401e0b790151ed2b5290b02545e8775f982485205a066f874aaeaf", + "sha256:6626f771e0417486701e0b4daff762e7212e820ca5b29fcc0d05f6f8736dfa6b" + ], + "version": "==3.2.0" + }, + "pytz": { + "hashes": [ + "sha256:83a4a90894bf38e243cf052c8b58f381bfe9a7a483f6a9cab140bc7f702ac4da", + "sha256:eb10ce3e7736052ed3623d49975ce333bcd712c7bb19a58b9e2089d4057d0798" + ], + "version": "==2021.1" + }, + "requests": { + "hashes": [ + "sha256:6c1246513ecd5ecd4528a0906f910e8f0f9c6b8ec72030dc9fd154dc1a6efd24", + "sha256:b8aa58f8cf793ffd8782d3d8cb19e66ef36f7aba4353eec859e74678b01b07a7" + ], + "version": "==2.26.0" + }, + "requests-oauthlib": { + "hashes": [ + "sha256:7f71572defaecd16372f9006f33c2ec8c077c3cfa6f5911a9a90202beb513f3d", + "sha256:b4261601a71fd721a8bd6d7aa1cc1d6a8a93b4a9f5e96626f8e4d91e8beeaa6a", + "sha256:fa6c47b933f01060936d87ae9327fead68768b69c6c9ea2109c48be30f2d4dbc" + ], + "version": "==1.3.0" + }, + "six": { + "hashes": [ + "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926", + "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" + ], + "version": "==1.16.0" + }, + "social-auth-app-django": { + "hashes": [ + "sha256:2c69e57df0b30c9c1823519c5f1992cbe4f3f98fdc7d95c840e091a752708840", + "sha256:567ad0e028311541d7dfed51d3bf2c60440a6fd236d5d4d06c5a618b3d6c57c5", + "sha256:df5212370bd250108987c4748419a1a1d0cec750878856c2644c36aaa0fd3e58" + ], + "index": "pypi", + "version": "==4.0.0" + }, + "social-auth-core": { + "hashes": [ + "sha256:5ab43b3b15dce5f059db69cc3082c216574739f0edbc98629c8c6e8769c67eb4", + "sha256:983b53167ac56e7ba4909db555602a6e7a98c97ca47183bb222eb85ba627bf2b" + ], + "version": "==4.1.0" + }, + "sqlparse": { + "hashes": [ + "sha256:0c00730c74263a94e5a9919ade150dfc3b19c574389985446148402998287dae", + "sha256:48719e356bb8b42991bdbb1e8b83223757b93789c00910a616a071910ca4a64d" + ], + "version": "==0.4.2" + }, + "urllib3": { + "hashes": [ + "sha256:39fb8672126159acb139a7718dd10806104dec1e2f0f6c88aab05d17df10c8d4", + "sha256:f57b4c16c62fa2760b7e3d97c35b255512fb6b59a259730f36ba32ce9f8e342f" + ], + "version": "==1.26.6" + }, + "whitenoise": { + "hashes": [ + "sha256:d234b871b52271ae7ed6d9da47ffe857c76568f11dd30e28e18c5869dbd11e12", + "sha256:d963ef25639d1417e8a247be36e6aedd8c7c6f0a08adcb5a89146980a96b577c" + ], + "index": "pypi", + "version": "==5.3.0" + } + }, + "develop": {} +} diff --git a/hunt/README.md b/hunt/README.md new file mode 100644 index 0000000..f805b09 --- /dev/null +++ b/hunt/README.md @@ -0,0 +1 @@ +# scavenger-hunt-2021 \ No newline at end of file diff --git a/hunt/apps/main/migrations/0012_alter_class_year.py b/hunt/apps/main/migrations/0012_alter_class_year.py new file mode 100644 index 0000000..ca2c2fe --- /dev/null +++ b/hunt/apps/main/migrations/0012_alter_class_year.py @@ -0,0 +1,18 @@ +# Generated by Django 3.2.6 on 2022-09-15 23:55 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('main', '0011_alter_challenge_flag'), + ] + + operations = [ + migrations.AlterField( + model_name='class', + name='year', + field=models.CharField(choices=[('2023', 'Seniors'), ('2024', 'Juniors'), ('2025', 'Sophomores'), ('2026', 'Freshmen')], max_length=20, unique=True), + ), + ] diff --git a/hunt/apps/main/models.py b/hunt/apps/main/models.py index 86a4222..391e5e6 100644 --- a/hunt/apps/main/models.py +++ b/hunt/apps/main/models.py @@ -26,7 +26,7 @@ class Challenge(models.Model): return "{} ({})".format(self.name, self.id) class Class(models.Model): - YEAR_CHOICES = (('2022', 'Seniors'), ('2023', 'Juniors'), ('2024', 'Sophomores'), ('2025', 'Freshmen')) + YEAR_CHOICES = (('2023', 'Seniors'), ('2024', 'Juniors'), ('2025', 'Sophomores'), ('2026', 'Freshmen')) id = models.AutoField(primary_key=True, null=False, blank=False) year = models.CharField(max_length=20, choices=YEAR_CHOICES, null=False, blank=False, unique=True) diff --git a/hunt/apps/main/urls.py b/hunt/apps/main/urls.py index 2d816ea..d9b55f6 100644 --- a/hunt/apps/main/urls.py +++ b/hunt/apps/main/urls.py @@ -9,5 +9,6 @@ urlpatterns = [ path("overview/", views.overview, name="overview"), path("validate/", views.validate_flag, name="validate_flag"), path("support/", views.support, name="support"), + path("toggledark/", views.dark_mode, name="toggledark"), path("challenge/", views.challenge_detail, name="challenge_detail") ] \ No newline at end of file diff --git a/hunt/apps/main/views.py b/hunt/apps/main/views.py index e1dda6a..1fced73 100644 --- a/hunt/apps/main/views.py +++ b/hunt/apps/main/views.py @@ -6,6 +6,10 @@ from django.urls import reverse from .models import Challenge, Class, Category +import logging + +logger = logging.getLogger(__file__) + @login_required def index(request): @@ -16,6 +20,7 @@ def index(request): - completed (completed by users's class) - locked (can only be completed by one class and has been completed) """ + data = sorted([(c.year, c.get_points()) for c in Class.objects.all()]) challenges_completed_by_class = set(Class.objects.get(year=str(request.user.graduation_year)).challenges_completed.all()) categories_dict = dict() for category in Category.objects.all(): @@ -28,10 +33,20 @@ def index(request): else: challenges_dict[c.id] = [c, "available"] categories_dict[category.id] = [category, challenges_dict] - return render(request, "main/index.html", context={"categories": categories_dict}) + + logger.debug(f"user is {request.user.username} with mode {request.user.dark_mode}") + + return render(request, "main/index.html", context={"categories": categories_dict,"data": data, dark_mode: request.user.dark_mode}) else: return redirect(reverse("main:overview")) +@login_required +def dark_mode(request): + user = request.user + user.dark_mode = not user.dark_mode + user.save() + return redirect(reverse("main:index")) + @login_required def overview(request): data = sorted([(c.year, c.get_points()) for c in Class.objects.all()]) diff --git a/hunt/apps/users/migrations/0004_alter_user_challenges_done.py b/hunt/apps/users/migrations/0004_alter_user_challenges_done.py new file mode 100644 index 0000000..d3fb984 --- /dev/null +++ b/hunt/apps/users/migrations/0004_alter_user_challenges_done.py @@ -0,0 +1,19 @@ +# Generated by Django 3.2.6 on 2022-09-16 00:35 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('main', '0012_alter_class_year'), + ('users', '0003_auto_20210814_2354'), + ] + + operations = [ + migrations.AlterField( + model_name='user', + name='challenges_done', + field=models.ManyToManyField(blank=True, related_name='users_that_completed', to='main.Challenge'), + ), + ] diff --git a/hunt/apps/users/migrations/0005_user_dark_mode.py b/hunt/apps/users/migrations/0005_user_dark_mode.py new file mode 100644 index 0000000..2e120ce --- /dev/null +++ b/hunt/apps/users/migrations/0005_user_dark_mode.py @@ -0,0 +1,18 @@ +# Generated by Django 3.2.6 on 2022-09-21 00:51 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('users', '0004_alter_user_challenges_done'), + ] + + operations = [ + migrations.AddField( + model_name='user', + name='dark_mode', + field=models.BooleanField(default=False), + ), + ] diff --git a/hunt/apps/users/models.py b/hunt/apps/users/models.py index 0ed7214..49bdbdf 100644 --- a/hunt/apps/users/models.py +++ b/hunt/apps/users/models.py @@ -30,8 +30,9 @@ class User(AbstractBaseUser): email = models.EmailField(max_length=50, null=False, blank=False) is_superuser = models.BooleanField(default=False, null=False) _is_staff = models.BooleanField(default=False, null=False) + dark_mode = models.BooleanField(default=False, null=False) - challenges_done = models.ManyToManyField(Challenge, related_name="users_that_completed") + challenges_done = models.ManyToManyField(Challenge, related_name="users_that_completed", blank=True) date_joined = models.DateTimeField(auto_now_add=True) diff --git a/hunt/manage.py b/hunt/manage.py new file mode 100755 index 0000000..563e834 --- /dev/null +++ b/hunt/manage.py @@ -0,0 +1,22 @@ +#!/usr/bin/env python +"""Django's command-line utility for administrative tasks.""" +import os +import sys + + +def main(): + """Run administrative tasks.""" + os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'hunt.settings') + try: + from django.core.management import execute_from_command_line + except ImportError as exc: + raise ImportError( + "Couldn't import Django. Are you sure it's installed and " + "available on your PYTHONPATH environment variable? Did you " + "forget to activate a virtual environment?" + ) from exc + execute_from_command_line(sys.argv) + + +if __name__ == '__main__': + main() diff --git a/hunt/settings/__init__.py b/hunt/settings/__init__.py index cc0d4e1..518dc1d 100644 --- a/hunt/settings/__init__.py +++ b/hunt/settings/__init__.py @@ -25,7 +25,7 @@ SECRET_KEY = 'django-insecure-=6^bbhfem^#pl*@w29%mo$z#r5_#2d5-m@9q0&9egz@qtcfbah # SECURITY WARNING: don't run with debug turned on in production! DEBUG = True -ALLOWED_HOSTS = ['localhost', '127.0.0.1', 'hunt.sites.tjhsst.edu', 'hunt.tjhsst.edu'] +ALLOWED_HOSTS = ['localhost', '127.0.0.1', 'hunt.sites.tjhsst.edu', 'hunt.tjhsst.edu', '*'] # Application definition diff --git a/hunt/static/css/overview.css b/hunt/static/css/overview.css index 6212c0a..b274671 100644 --- a/hunt/static/css/overview.css +++ b/hunt/static/css/overview.css @@ -9,7 +9,7 @@ top: 100px; } -.box { +#hoco-scores > .score-box { display: inline-block; position: relative; background-color: #545454; @@ -21,11 +21,11 @@ overflow: hidden; } -.class { +#hoco-scores > .score-box > .class { font-size: 1.5em; } -.score { +#hoco-scores > .score-box > .score { font-size: 2em; } @@ -40,7 +40,7 @@ } } -.corner-ribbon { +#hoco-scores > .score-box > .corner-ribbon { width: 95px; background: #e43; position: absolute; diff --git a/hunt/static/img/losing.mp3 b/hunt/static/img/losing.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..54938b690d7e869d8f25731781cbc863012a8722 GIT binary patch literal 41555 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 literal 0 HcmV?d00001 diff --git a/hunt/templates/auth/login.html b/hunt/templates/auth/login.html index 55df01f..ca9ccf4 100644 --- a/hunt/templates/auth/login.html +++ b/hunt/templates/auth/login.html @@ -8,10 +8,10 @@ {% block main %}
-

Hoco Hunt 2021

+

Hoco Hunt 2022

{% endblock %} \ No newline at end of file diff --git a/hunt/templates/base.html b/hunt/templates/base.html index a21826d..2b5cf5e 100644 --- a/hunt/templates/base.html +++ b/hunt/templates/base.html @@ -11,6 +11,10 @@ integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=" crossorigin="anonymous"> + Hoco Hunt 2022 diff --git a/hunt/templates/base_with_nav.html b/hunt/templates/base_with_nav.html index bd74d9a..36bc2eb 100644 --- a/hunt/templates/base_with_nav.html +++ b/hunt/templates/base_with_nav.html @@ -9,6 +9,12 @@