diff --git a/Pipfile b/Pipfile index 3261301..2020e25 100644 --- a/Pipfile +++ b/Pipfile @@ -15,7 +15,7 @@ django-health-check = "*" django-cors-headers = "*" django-debug-toolbar = "*" gunicorn = "*" -django-bootstrap-v5 = "*" +pygraphviz = "*" factory-boy = "*" linkpreview = "*" django-redis = "*" diff --git a/Pipfile.lock b/Pipfile.lock index 45bec93..f9a643f 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "a20d5cc557d0bfc4ff08fe9000e00b88321fe2fda127efe2a5cecce3ceeaede6" + "sha256": "9bfbfe0b151b9f6357564be1f632edae3aa44cb22d3fb3ff6656e9502c6cf448" }, "pipfile-spec": 6, "requires": { @@ -273,14 +273,6 @@ "index": "pypi", "version": "==4.2.7" }, - "django-bootstrap-v5": { - "hashes": [ - "sha256:2d431308859ce3cab7729bb09c76039059cd5fbdd34484da82c4c7f8d49da3a2", - "sha256:a207aa804938164c8450bbbef4faaba6d2093b3236000557a50f3bd44b53d268" - ], - "index": "pypi", - "version": "==1.0.11" - }, "django-cors-headers": { "hashes": [ "sha256:0b1fd19297e37417fc9f835d39e45c8c642938ddba1acce0c1753d3edef04f36", @@ -387,11 +379,11 @@ }, "docutils": { "hashes": [ - "sha256:23010f129180089fbcd3bc08cfefccb3b890b0050e1ca00c867036e9d161b98c", - "sha256:679987caf361a7539d76e584cbeddc311e3aee937877c87346f31debc63e9d06" + "sha256:96f387a2c5562db4476f09f13bbab2192e764cac08ebbf3a34a95d9b1e4a59d6", + "sha256:f08a4e276c3a1583a86dce3e34aba3fe04d02bba2dd51ed16106244e8a923e3b" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", - "version": "==0.18.1" + "markers": "python_version >= '3.7'", + "version": "==0.20.1" }, "drf-spectacular": { "hashes": [ @@ -768,6 +760,13 @@ "markers": "python_version >= '3.7'", "version": "==2.17.2" }, + "pygraphviz": { + "hashes": [ + "sha256:a97eb5ced266f45053ebb1f2c6c6d29091690503e3a5c14be7f908b37b06f2d4" + ], + "index": "pypi", + "version": "==1.11" + }, "pyparsing": { "hashes": [ "sha256:32c7c0b711493c72ff18a981d24f28aaf9c1fb7ed5e9667c9e84e3db623bdbfb", @@ -864,11 +863,11 @@ }, "referencing": { "hashes": [ - "sha256:381b11e53dd93babb55696c71cf42aef2d36b8a150c49bf0bc301e36d536c882", - "sha256:cc28f2c88fbe7b961a7817a0abc034c09a1e36358f82fedb4ffdf29a25398863" + "sha256:81a1471c68c9d5e3831c30ad1dd9815c45b558e596653db751a2bfdd17b3b9ec", + "sha256:c19c4d006f1757e3dd75c4f784d38f8698d87b649c54f9ace14e5e8c9667c01d" ], "markers": "python_version >= '3.8'", - "version": "==0.31.0" + "version": "==0.31.1" }, "requests": { "hashes": [ @@ -880,119 +879,119 @@ }, "rpds-py": { "hashes": [ - "sha256:0290712eb5603a725769b5d857f7cf15cf6ca93dda3128065bbafe6fdb709beb", - "sha256:032c242a595629aacace44128f9795110513ad27217b091e834edec2fb09e800", - "sha256:08832078767545c5ee12561ce980714e1e4c6619b5b1e9a10248de60cddfa1fd", - "sha256:08b335fb0c45f0a9e2478a9ece6a1bfb00b6f4c4780f9be3cf36479c5d8dd374", - "sha256:0b70c1f800059c92479dc94dda41288fd6607f741f9b1b8f89a21a86428f6383", - "sha256:0d9f8930092558fd15c9e07198625efb698f7cc00b3dc311c83eeec2540226a8", - "sha256:181ee352691c4434eb1c01802e9daa5edcc1007ff15023a320e2693fed6a661b", - "sha256:19f5aa7f5078d35ed8e344bcba40f35bc95f9176dddb33fc4f2084e04289fa63", - "sha256:1a3b2583c86bbfbf417304eeb13400ce7f8725376dc7d3efbf35dc5d7052ad48", - "sha256:1c9a1dc5e898ce30e2f9c0aa57181cddd4532b22b7780549441d6429d22d3b58", - "sha256:1f36a1e80ef4ed1996445698fd91e0d3e54738bf597c9995118b92da537d7a28", - "sha256:20147996376be452cd82cd6c17701daba69a849dc143270fa10fe067bb34562a", - "sha256:249c8e0055ca597707d71c5ad85fd2a1c8fdb99386a8c6c257e1b47b67a9bec1", - "sha256:2647192facf63be9ed2d7a49ceb07efe01dc6cfb083bd2cc53c418437400cb99", - "sha256:264f3a5906c62b9df3a00ad35f6da1987d321a053895bd85f9d5c708de5c0fbf", - "sha256:2abd669a39be69cdfe145927c7eb53a875b157740bf1e2d49e9619fc6f43362e", - "sha256:2b2415d5a7b7ee96aa3a54d4775c1fec140476a17ee12353806297e900eaeddc", - "sha256:2c173f529666bab8e3f948b74c6d91afa22ea147e6ebae49a48229d9020a47c4", - "sha256:2da81c1492291c1a90987d76a47c7b2d310661bf7c93a9de0511e27b796a8b46", - "sha256:2eca04a365be380ca1f8fa48b334462e19e3382c0bb7386444d8ca43aa01c481", - "sha256:37b08df45f02ff1866043b95096cbe91ac99de05936dd09d6611987a82a3306a", - "sha256:37f79f4f1f06cc96151f4a187528c3fd4a7e1065538a4af9eb68c642365957f7", - "sha256:3dd5fb7737224e1497c886fb3ca681c15d9c00c76171f53b3c3cc8d16ccfa7fb", - "sha256:3e3ac5b602fea378243f993d8b707189f9061e55ebb4e56cb9fdef8166060f28", - "sha256:3f55ae773abd96b1de25fc5c3fb356f491bd19116f8f854ba705beffc1ddc3c5", - "sha256:4011d5c854aa804c833331d38a2b6f6f2fe58a90c9f615afdb7aa7cf9d31f721", - "sha256:4145172ab59b6c27695db6d78d040795f635cba732cead19c78cede74800949a", - "sha256:42b9535aa22ab023704cfc6533e968f7e420affe802d85e956d8a7b4c0b0b5ea", - "sha256:46a07a258bda12270de02b34c4884f200f864bba3dcd6e3a37fef36a168b859d", - "sha256:4f13d3f6585bd07657a603780e99beda96a36c86acaba841f131e81393958336", - "sha256:528e2afaa56d815d2601b857644aeb395afe7e59212ab0659906dc29ae68d9a6", - "sha256:545e94c84575057d3d5c62634611858dac859702b1519b6ffc58eca7fb1adfcf", - "sha256:577d40a72550eac1386b77b43836151cb61ff6700adacda2ad4d883ca5a0b6f2", - "sha256:5967fa631d0ed9f8511dede08bc943a9727c949d05d1efac4ac82b2938024fb7", - "sha256:5b769396eb358d6b55dbf78f3f7ca631ca1b2fe02136faad5af74f0111b4b6b7", - "sha256:63c9e2794329ef070844ff9bfc012004aeddc0468dc26970953709723f76c8a5", - "sha256:6574f619e8734140d96c59bfa8a6a6e7a3336820ccd1bfd95ffa610673b650a2", - "sha256:6bfe72b249264cc1ff2f3629be240d7d2fdc778d9d298087cdec8524c91cd11f", - "sha256:736817dbbbd030a69a1faf5413a319976c9c8ba8cdcfa98c022d3b6b2e01eca6", - "sha256:74a2044b870df7c9360bb3ce7e12f9ddf8e72e49cd3a353a1528cbf166ad2383", - "sha256:74be3b215a5695690a0f1a9f68b1d1c93f8caad52e23242fcb8ba56aaf060281", - "sha256:76a8374b294e4ccb39ccaf11d39a0537ed107534139c00b4393ca3b542cc66e5", - "sha256:7ba239bb37663b2b4cd08e703e79e13321512dccd8e5f0e9451d9e53a6b8509a", - "sha256:7c40851b659d958c5245c1236e34f0d065cc53dca8d978b49a032c8e0adfda6e", - "sha256:7cf241dbb50ea71c2e628ab2a32b5bfcd36e199152fc44e5c1edb0b773f1583e", - "sha256:7cfae77da92a20f56cf89739a557b76e5c6edc094f6ad5c090b9e15fbbfcd1a4", - "sha256:7d152ec7bb431040af2500e01436c9aa0d993f243346f0594a15755016bf0be1", - "sha256:80080972e1d000ad0341c7cc58b6855c80bd887675f92871221451d13a975072", - "sha256:82dbcd6463e580bcfb7561cece35046aaabeac5a9ddb775020160b14e6c58a5d", - "sha256:8308a8d49d1354278d5c068c888a58d7158a419b2e4d87c7839ed3641498790c", - "sha256:839676475ac2ccd1532d36af3d10d290a2ca149b702ed464131e450a767550df", - "sha256:83feb0f682d75a09ddc11aa37ba5c07dd9b824b22915207f6176ea458474ff75", - "sha256:88956c993a20201744282362e3fd30962a9d86dc4f1dcf2bdb31fab27821b61f", - "sha256:8a6ad8429340e0a4de89353447c6441329def3632e7b2293a7d6e873217d3c2b", - "sha256:8ba9fbc5d6e36bfeb5292530321cc56c4ef3f98048647fabd8f57543c34174ec", - "sha256:8c1f6c8df23be165eb0cb78f305483d00c6827a191e3a38394c658d5b9c80bbd", - "sha256:91276caef95556faeb4b8f09fe4439670d3d6206fee78d47ddb6e6de837f0b4d", - "sha256:960e7e460fda2d0af18c75585bbe0c99f90b8f09963844618a621b804f8c3abe", - "sha256:9656a09653b18b80764647d585750df2dff8928e03a706763ab40ec8c4872acc", - "sha256:9cd935c0220d012a27c20135c140f9cdcbc6249d5954345c81bfb714071b985c", - "sha256:a2b3c79586636f1fa69a7bd59c87c15fca80c0d34b5c003d57f2f326e5276575", - "sha256:a4b9d3f5c48bbe8d9e3758e498b3c34863f2c9b1ac57a4e6310183740e59c980", - "sha256:a8c2bf286e5d755a075e5e97ba56b3de08cccdad6b323ab0b21cc98875176b03", - "sha256:a90031658805c63fe488f8e9e7a88b260ea121ba3ee9cdabcece9c9ddb50da39", - "sha256:ad666a904212aa9a6c77da7dce9d5170008cda76b7776e6731928b3f8a0d40fa", - "sha256:af2d1648eb625a460eee07d3e1ea3a4a6e84a1fb3a107f6a8e95ac19f7dcce67", - "sha256:b3d4b390ee70ca9263b331ccfaf9819ee20e90dfd0201a295e23eb64a005dbef", - "sha256:ba4432301ad7eeb1b00848cf46fae0e5fecfd18a8cb5fdcf856c67985f79ecc7", - "sha256:bc3179e0815827cf963e634095ae5715ee73a5af61defbc8d6ca79f1bdae1d1d", - "sha256:c5fd099acaee2325f01281a130a39da08d885e4dedf01b84bf156ec2737d78fe", - "sha256:c797ea56f36c6f248656f0223b11307fdf4a1886f3555eba371f34152b07677f", - "sha256:cd4ea56c9542ad0091dfdef3e8572ae7a746e1e91eb56c9e08b8d0808b40f1d1", - "sha256:cdd6f8738e1f1d9df5b1603bb03cb30e442710e5672262b95d0f9fcb4edb0dab", - "sha256:d0580faeb9def6d0beb7aa666294d5604e569c4e24111ada423cf9936768d95c", - "sha256:d11afdc5992bbd7af60ed5eb519873690d921425299f51d80aa3099ed49f2bcc", - "sha256:d1d388d2f5f5a6065cf83c54dd12112b7389095669ff395e632003ae8999c6b8", - "sha256:d20da6b4c7aa9ee75ad0730beaba15d65157f5beeaca54a038bb968f92bf3ce3", - "sha256:d22e0660de24bd8e9ac82f4230a22a5fe4e397265709289d61d5fb333839ba50", - "sha256:d22f2cb82e0b40e427a74a93c9a4231335bbc548aed79955dde0b64ea7f88146", - "sha256:d4fa1eeb9bea6d9b64ac91ec51ee94cc4fc744955df5be393e1c923c920db2b0", - "sha256:d9793d46d3e6522ae58e9321032827c9c0df1e56cbe5d3de965facb311aed6aa", - "sha256:dab979662da1c9fbb464e310c0b06cb5f1d174d09a462553af78f0bfb3e01920", - "sha256:db8d0f0ad92f74feb61c4e4a71f1d573ef37c22ef4dc19cab93e501bfdad8cbd", - "sha256:df2af1180b8eeececf4f819d22cc0668bfadadfd038b19a90bd2fb2ee419ec6f", - "sha256:dfb5d2ab183c0efe5e7b8917e4eaa2e837aacafad8a69b89aa6bc81550eed857", - "sha256:e04f8c76b8d5c70695b4e8f1d0b391d8ef91df00ef488c6c1ffb910176459bc6", - "sha256:e4a45ba34f904062c63049a760790c6a2fa7a4cc4bd160d8af243b12371aaa05", - "sha256:e9be1f7c5f9673616f875299339984da9447a40e3aea927750c843d6e5e2e029", - "sha256:edc91c50e17f5cd945d821f0f1af830522dba0c10267c3aab186dc3dbaab8def", - "sha256:ee70ee5f4144a45a9e6169000b5b525d82673d5dab9f7587eccc92794814e7ac", - "sha256:f1059ca9a51c936c9a8d46fbc2c9a6b4c15ab3f13a97f1ad32f024b39666ba85", - "sha256:f47eef55297799956464efc00c74ae55c48a7b68236856d56183fe1ddf866205", - "sha256:f4ae6f423cb7d1c6256b7482025ace2825728f53b7ac58bcd574de6ee9d242c2", - "sha256:f4b15a163448ec79241fb2f1bc5a8ae1a4a304f7a48d948d208a2935b26bf8a5", - "sha256:f55601fb58f92e4f4f1d05d80c24cb77505dc42103ddfd63ddfdc51d3da46fa2", - "sha256:fa84bbe22ffa108f91631935c28a623001e335d66e393438258501e618fb0dde", - "sha256:faa12a9f34671a30ea6bb027f04ec4e1fb8fa3fb3ed030893e729d4d0f3a9791", - "sha256:fcfd5f91b882eedf8d9601bd21261d6ce0e61a8c66a7152d1f5df08d3f643ab1", - "sha256:fe30ef31172bdcf946502a945faad110e8fff88c32c4bec9a593df0280e64d8a" + "sha256:06d218e4464d31301e943b65b2c6919318ea6f69703a351961e1baaf60347276", + "sha256:12ecf89bd54734c3c2c79898ae2021dca42750c7bcfb67f8fb3315453738ac8f", + "sha256:15253fff410873ebf3cfba1cc686a37711efcd9b8cb30ea21bb14a973e393f60", + "sha256:188435794405c7f0573311747c85a96b63c954a5f2111b1df8018979eca0f2f0", + "sha256:1ceebd0ae4f3e9b2b6b553b51971921853ae4eebf3f54086be0565d59291e53d", + "sha256:244e173bb6d8f3b2f0c4d7370a1aa341f35da3e57ffd1798e5b2917b91731fd3", + "sha256:25b28b3d33ec0a78e944aaaed7e5e2a94ac811bcd68b557ca48a0c30f87497d2", + "sha256:25ea41635d22b2eb6326f58e608550e55d01df51b8a580ea7e75396bafbb28e9", + "sha256:29d311e44dd16d2434d5506d57ef4d7036544fc3c25c14b6992ef41f541b10fb", + "sha256:2a1472956c5bcc49fb0252b965239bffe801acc9394f8b7c1014ae9258e4572b", + "sha256:2a7bef6977043673750a88da064fd513f89505111014b4e00fbdd13329cd4e9a", + "sha256:2ac26f50736324beb0282c819668328d53fc38543fa61eeea2c32ea8ea6eab8d", + "sha256:2e72f750048b32d39e87fc85c225c50b2a6715034848dbb196bf3348aa761fa1", + "sha256:31e220a040b89a01505128c2f8a59ee74732f666439a03e65ccbf3824cdddae7", + "sha256:35f53c76a712e323c779ca39b9a81b13f219a8e3bc15f106ed1e1462d56fcfe9", + "sha256:38d4f822ee2f338febcc85aaa2547eb5ba31ba6ff68d10b8ec988929d23bb6b4", + "sha256:38f9bf2ad754b4a45b8210a6c732fe876b8a14e14d5992a8c4b7c1ef78740f53", + "sha256:3a44c8440183b43167fd1a0819e8356692bf5db1ad14ce140dbd40a1485f2dea", + "sha256:3ab96754d23372009638a402a1ed12a27711598dd49d8316a22597141962fe66", + "sha256:3c55d7f2d817183d43220738270efd3ce4e7a7b7cbdaefa6d551ed3d6ed89190", + "sha256:46e1ed994a0920f350a4547a38471217eb86f57377e9314fbaaa329b71b7dfe3", + "sha256:4a5375c5fff13f209527cd886dc75394f040c7d1ecad0a2cb0627f13ebe78a12", + "sha256:4c2d26aa03d877c9730bf005621c92da263523a1e99247590abbbe252ccb7824", + "sha256:4c4e314d36d4f31236a545696a480aa04ea170a0b021e9a59ab1ed94d4c3ef27", + "sha256:4d0c10d803549427f427085ed7aebc39832f6e818a011dcd8785e9c6a1ba9b3e", + "sha256:4dcc5ee1d0275cb78d443fdebd0241e58772a354a6d518b1d7af1580bbd2c4e8", + "sha256:51967a67ea0d7b9b5cd86036878e2d82c0b6183616961c26d825b8c994d4f2c8", + "sha256:530190eb0cd778363bbb7596612ded0bb9fef662daa98e9d92a0419ab27ae914", + "sha256:5379e49d7e80dca9811b36894493d1c1ecb4c57de05c36f5d0dd09982af20211", + "sha256:5493569f861fb7b05af6d048d00d773c6162415ae521b7010197c98810a14cab", + "sha256:5a4c1058cdae6237d97af272b326e5f78ee7ee3bbffa6b24b09db4d828810468", + "sha256:5d75d6d220d55cdced2f32cc22f599475dbe881229aeddba6c79c2e9df35a2b3", + "sha256:5d97e9ae94fb96df1ee3cb09ca376c34e8a122f36927230f4c8a97f469994bff", + "sha256:5feae2f9aa7270e2c071f488fab256d768e88e01b958f123a690f1cc3061a09c", + "sha256:603d5868f7419081d616dab7ac3cfa285296735e7350f7b1e4f548f6f953ee7d", + "sha256:61d42d2b08430854485135504f672c14d4fc644dd243a9c17e7c4e0faf5ed07e", + "sha256:61dbc1e01dc0c5875da2f7ae36d6e918dc1b8d2ce04e871793976594aad8a57a", + "sha256:65cfed9c807c27dee76407e8bb29e6f4e391e436774bcc769a037ff25ad8646e", + "sha256:67a429520e97621a763cf9b3ba27574779c4e96e49a27ff8a1aa99ee70beb28a", + "sha256:6aadae3042f8e6db3376d9e91f194c606c9a45273c170621d46128f35aef7cd0", + "sha256:6ba8858933f0c1a979781272a5f65646fca8c18c93c99c6ddb5513ad96fa54b1", + "sha256:6bc568b05e02cd612be53900c88aaa55012e744930ba2eeb56279db4c6676eb3", + "sha256:729408136ef8d45a28ee9a7411917c9e3459cf266c7e23c2f7d4bb8ef9e0da42", + "sha256:751758d9dd04d548ec679224cc00e3591f5ebf1ff159ed0d4aba6a0746352452", + "sha256:76d59d4d451ba77f08cb4cd9268dec07be5bc65f73666302dbb5061989b17198", + "sha256:79bf58c08f0756adba691d480b5a20e4ad23f33e1ae121584cf3a21717c36dfa", + "sha256:7de12b69d95072394998c622cfd7e8cea8f560db5fca6a62a148f902a1029f8b", + "sha256:7f55cd9cf1564b7b03f238e4c017ca4794c05b01a783e9291065cb2858d86ce4", + "sha256:80e5acb81cb49fd9f2d5c08f8b74ffff14ee73b10ca88297ab4619e946bcb1e1", + "sha256:87a90f5545fd61f6964e65eebde4dc3fa8660bb7d87adb01d4cf17e0a2b484ad", + "sha256:881df98f0a8404d32b6de0fd33e91c1b90ed1516a80d4d6dc69d414b8850474c", + "sha256:8a776a29b77fe0cc28fedfd87277b0d0f7aa930174b7e504d764e0b43a05f381", + "sha256:8c2a61c0e4811012b0ba9f6cdcb4437865df5d29eab5d6018ba13cee1c3064a0", + "sha256:8fa6bd071ec6d90f6e7baa66ae25820d57a8ab1b0a3c6d3edf1834d4b26fafa2", + "sha256:96f2975fb14f39c5fe75203f33dd3010fe37d1c4e33177feef1107b5ced750e3", + "sha256:96fb0899bb2ab353f42e5374c8f0789f54e0a94ef2f02b9ac7149c56622eaf31", + "sha256:97163a1ab265a1073a6372eca9f4eeb9f8c6327457a0b22ddfc4a17dcd613e74", + "sha256:9c95a1a290f9acf7a8f2ebbdd183e99215d491beea52d61aa2a7a7d2c618ddc6", + "sha256:9d94d78418203904730585efa71002286ac4c8ac0689d0eb61e3c465f9e608ff", + "sha256:a6ba2cb7d676e9415b9e9ac7e2aae401dc1b1e666943d1f7bc66223d3d73467b", + "sha256:aa0379c1935c44053c98826bc99ac95f3a5355675a297ac9ce0dfad0ce2d50ca", + "sha256:ac96d67b37f28e4b6ecf507c3405f52a40658c0a806dffde624a8fcb0314d5fd", + "sha256:ade2ccb937060c299ab0dfb2dea3d2ddf7e098ed63ee3d651ebfc2c8d1e8632a", + "sha256:aefbdc934115d2f9278f153952003ac52cd2650e7313750390b334518c589568", + "sha256:b07501b720cf060c5856f7b5626e75b8e353b5f98b9b354a21eb4bfa47e421b1", + "sha256:b5267feb19070bef34b8dea27e2b504ebd9d31748e3ecacb3a4101da6fcb255c", + "sha256:b5f6328e8e2ae8238fc767703ab7b95785521c42bb2b8790984e3477d7fa71ad", + "sha256:b8996ffb60c69f677245f5abdbcc623e9442bcc91ed81b6cd6187129ad1fa3e7", + "sha256:b981a370f8f41c4024c170b42fbe9e691ae2dbc19d1d99151a69e2c84a0d194d", + "sha256:b9d121be0217787a7d59a5c6195b0842d3f701007333426e5154bf72346aa658", + "sha256:bcef4f2d3dc603150421de85c916da19471f24d838c3c62a4f04c1eb511642c1", + "sha256:bed0252c85e21cf73d2d033643c945b460d6a02fc4a7d644e3b2d6f5f2956c64", + "sha256:bfdfbe6a36bc3059fff845d64c42f2644cf875c65f5005db54f90cdfdf1df815", + "sha256:c0095b8aa3e432e32d372e9a7737e65b58d5ed23b9620fea7cb81f17672f1fa1", + "sha256:c1f41d32a2ddc5a94df4b829b395916a4b7f103350fa76ba6de625fcb9e773ac", + "sha256:c45008ca79bad237cbc03c72bc5205e8c6f66403773929b1b50f7d84ef9e4d07", + "sha256:c82bbf7e03748417c3a88c1b0b291288ce3e4887a795a3addaa7a1cfd9e7153e", + "sha256:c918621ee0a3d1fe61c313f2489464f2ae3d13633e60f520a8002a5e910982ee", + "sha256:d204957169f0b3511fb95395a9da7d4490fb361763a9f8b32b345a7fe119cb45", + "sha256:d329896c40d9e1e5c7715c98529e4a188a1f2df51212fd65102b32465612b5dc", + "sha256:d3a61e928feddc458a55110f42f626a2a20bea942ccedb6fb4cee70b4830ed41", + "sha256:d48db29bd47814671afdd76c7652aefacc25cf96aad6daefa82d738ee87461e2", + "sha256:d5593855b5b2b73dd8413c3fdfa5d95b99d657658f947ba2c4318591e745d083", + "sha256:d79c159adea0f1f4617f54aa156568ac69968f9ef4d1e5fefffc0a180830308e", + "sha256:db09b98c7540df69d4b47218da3fbd7cb466db0fb932e971c321f1c76f155266", + "sha256:ddf23960cb42b69bce13045d5bc66f18c7d53774c66c13f24cf1b9c144ba3141", + "sha256:e06cfea0ece444571d24c18ed465bc93afb8c8d8d74422eb7026662f3d3f779b", + "sha256:e7c564c58cf8f248fe859a4f0fe501b050663f3d7fbc342172f259124fb59933", + "sha256:e86593bf8637659e6a6ed58854b6c87ec4e9e45ee8a4adfd936831cef55c2d21", + "sha256:eaffbd8814bb1b5dc3ea156a4c5928081ba50419f9175f4fc95269e040eff8f0", + "sha256:ee353bb51f648924926ed05e0122b6a0b1ae709396a80eb583449d5d477fcdf7", + "sha256:ee6faebb265e28920a6f23a7d4c362414b3f4bb30607141d718b991669e49ddc", + "sha256:efe093acc43e869348f6f2224df7f452eab63a2c60a6c6cd6b50fd35c4e075ba", + "sha256:f03a1b3a4c03e3e0161642ac5367f08479ab29972ea0ffcd4fa18f729cd2be0a", + "sha256:f0d320e70b6b2300ff6029e234e79fe44e9dbbfc7b98597ba28e054bd6606a57", + "sha256:f252dfb4852a527987a9156cbcae3022a30f86c9d26f4f17b8c967d7580d65d2", + "sha256:f5f4424cb87a20b016bfdc157ff48757b89d2cc426256961643d443c6c277007", + "sha256:f8eae66a1304de7368932b42d801c67969fd090ddb1a7a24f27b435ed4bed68f", + "sha256:fdb82eb60d31b0c033a8e8ee9f3fc7dfbaa042211131c29da29aea8531b4f18f" ], "markers": "python_version >= '3.8'", - "version": "==0.13.1" + "version": "==0.13.2" }, "sentry-sdk": { "extras": [ "django" ], "hashes": [ - "sha256:7cd324dd2877fdc861f75cba4242bce23a58272a6fea581fcb218bb718bd9cc5", - "sha256:a249c7364827ee89daaa078bb8b56ece0b3d52d9130961bef2302b79bdf7fe70" + "sha256:0017fa73b8ae2d4e57fd2522ee3df30453715b29d2692142793ec5d5f90b94a6", + "sha256:8feab81de6bbf64f53279b085bd3820e3e737403b0a0d9317f73a2c3374ae359" ], "index": "pypi", - "version": "==1.37.1" + "version": "==1.38.0" }, "setuptools": { "hashes": [ @@ -1035,11 +1034,11 @@ }, "sphinx-rtd-theme": { "hashes": [ - "sha256:46ddef89cc2416a81ecfbeaceab1881948c014b1b6e4450b815311a89fb977b0", - "sha256:590b030c7abb9cf038ec053b95e5380b5c70d61591eb0b552063fbe7c41f0931" + "sha256:bd5d7b80622406762073a04ef8fadc5f9151261563d47027de09910ce03afe6b", + "sha256:ec93d0856dc280cf3aee9a4c9807c60e027c7f7b461b77aeffed682e68f0e586" ], "index": "pypi", - "version": "==1.3.0" + "version": "==2.0.0" }, "sphinxcontrib-applehelp": { "hashes": [ diff --git a/src/datasources/models.py b/src/datasources/models.py index 376f2b1..7e10b4b 100644 --- a/src/datasources/models.py +++ b/src/datasources/models.py @@ -39,6 +39,9 @@ class SourceSubdivision(TimeStampedModel): on_delete=models.PROTECT ) + class Meta: + ordering: list[str] = ["name"] + def __str__(self) -> str: """ Returns the name of the source subdivision as a string. @@ -80,6 +83,9 @@ class DataSource(TimeStampedModel): related_name="data_sources" ) + class Meta: + ordering: list[str] = ["name"] + def __str__(self) -> str: """ Returns the name of the data source as a string. diff --git a/src/signal_documentation/settings.py b/src/signal_documentation/settings.py index 3d06fde..5e34efb 100644 --- a/src/signal_documentation/settings.py +++ b/src/signal_documentation/settings.py @@ -76,7 +76,6 @@ ] EXTERNAL_APPS: list[str] = [ - 'bootstrap5', 'corsheaders', 'debug_toolbar', 'django_extensions', diff --git a/src/signals/filters.py b/src/signals/filters.py index 560b4e5..2d30dcb 100644 --- a/src/signals/filters.py +++ b/src/signals/filters.py @@ -19,6 +19,7 @@ class Meta: fields: list[str] = [ 'search', 'pathogen', + 'active', 'available_geography', 'signal_type', 'category', diff --git a/src/signals/models.py b/src/signals/models.py index 20575da..b46767d 100644 --- a/src/signals/models.py +++ b/src/signals/models.py @@ -52,6 +52,7 @@ class SignalCategory(TimeStampedModel): ) class Meta: + ordering: list[str] = ["name"] verbose_name_plural: str = "signal categories" def __str__(self) -> str: diff --git a/src/signals/tests/test_api.py b/src/signals/tests/test_api.py deleted file mode 100644 index aab34a9..0000000 --- a/src/signals/tests/test_api.py +++ /dev/null @@ -1,52 +0,0 @@ -from django.urls import reverse -from faker import Faker -from rest_framework.test import APITestCase - -from signals.models import Signal -from signals.tests.factories import SignalFactory - -fake = Faker() - - -class SignalListApiViewTest(APITestCase): - - def setUp(self): - for i in range(fake.random_int(min=1, max=100)): - SignalFactory() - - def test_signal_list_api_view(self): - response = self.client.get(reverse('signals_api')) - self.assertEqual(response.status_code, 200) - self.assertEqual(response.data['count'], Signal.objects.count()) - - def test_signal_list_api_view_filters(self): - signal = Signal.objects.order_by("?").first() - signal.base = signal - signal.save() - response = self.client.get(reverse('signals_api'), {'name': signal.name}) - for result in response.json()['results']: - self.assertEqual(signal.name, result['name']) - response = self.client.get(reverse('signals_api'), {'pathogen__name': signal.pathogen.first().name}) - for result in response.json()['results']: - self.assertTrue(signal.pathogen.first().name in result['pathogen']) - response = self.client.get(reverse('signals_api'), {'available_geography__name': signal.available_geography.first().name}) - for result in response.json()['results']: - self.assertTrue(signal.available_geography.first().name in result['available_geography']) - response = self.client.get(reverse('signals_api'), {'signal_type__name': signal.signal_type.first().name}) - for result in response.json()['results']: - self.assertTrue(signal.signal_type.first().name in result['signal_type']) - response = self.client.get(reverse('signals_api'), {'category__name': signal.category.name}) - for result in response.json()['results']: - self.assertTrue(signal.category.name in result['category']) - response = self.client.get(reverse('signals_api'), {'source__name': signal.source.name}) - for result in response.json()['results']: - self.assertTrue(signal.source.name in result['source']) - response = self.client.get(reverse('signals_api'), {'time_label': signal.time_label}) - for result in response.json()['results']: - self.assertEqual(signal.time_label, result['time_label']) - response = self.client.get(reverse('signals_api'), {'format_type': signal.format_type}) - for result in response.json()['results']: - self.assertEqual(signal.format_type, result['format_type']) - response = self.client.get(reverse('signals_api'), {'base': signal.base.id}) - for result in response.json()['results']: - self.assertEqual(signal.base.id, result['base']['id']) diff --git a/src/signals/tests/test_views.py b/src/signals/tests/test_views.py index 92f468b..02f2c28 100644 --- a/src/signals/tests/test_views.py +++ b/src/signals/tests/test_views.py @@ -14,7 +14,7 @@ class SignalListViewTest(TestCase): def setUp(self): - for i in range(fake.random_int(min=1, max=100)): + for _ in range(fake.random_int(min=1, max=100)): SignalFactory() def test_signal_list_view(self): diff --git a/src/signals/urls.py b/src/signals/urls.py index 6a418fa..75d6de1 100644 --- a/src/signals/urls.py +++ b/src/signals/urls.py @@ -9,9 +9,9 @@ urlpatterns: list[URLPattern] = [ path('', SignalsListView.as_view(), name='signals'), + path('signals//', SignalsDetailView.as_view(), name='signal'), path('signals//', SignalsDetailView.as_view(), name='signal'), # REST API - path('api/v1/signals/', SignalsListApiView.as_view(), name='signals_api'), - + path('api/v1/signals/', SignalsListApiView.as_view(), name='signals_api') ] diff --git a/src/templates/400.html b/src/templates/400.html index 1620954..fc9c5fb 100644 --- a/src/templates/400.html +++ b/src/templates/400.html @@ -1,6 +1,5 @@ {% extends "error.html" %} {% load static %} -{% load bootstrap5 %} {% load i18n %} {% block content %} diff --git a/src/templates/403.html b/src/templates/403.html index 1027783..d2b31b5 100644 --- a/src/templates/403.html +++ b/src/templates/403.html @@ -1,6 +1,5 @@ {% extends "error.html" %} {% load static %} -{% load bootstrap5 %} {% load i18n %} {% block content %} diff --git a/src/templates/404.html b/src/templates/404.html index 95805cc..5b037c9 100644 --- a/src/templates/404.html +++ b/src/templates/404.html @@ -1,6 +1,5 @@ {% extends "error.html" %} {% load static %} -{% load bootstrap5 %} {% load i18n %} {% block content %} diff --git a/src/templates/500.html b/src/templates/500.html index 7ed49f1..e8bc038 100644 --- a/src/templates/500.html +++ b/src/templates/500.html @@ -1,6 +1,5 @@ {% extends "error.html" %} {% load static %} -{% load bootstrap5 %} {% load i18n %} {% block content %} diff --git a/src/templates/error.html b/src/templates/error.html index d7a53e3..c4cdb3b 100644 --- a/src/templates/error.html +++ b/src/templates/error.html @@ -16,10 +16,6 @@ - - - - diff --git a/src/templates/index.html b/src/templates/index.html index 4d0469d..58f5be1 100644 --- a/src/templates/index.html +++ b/src/templates/index.html @@ -5,9 +5,6 @@ - {% load bootstrap5 %} - {% bootstrap_css %} - {% bootstrap_javascript %} @@ -19,10 +16,6 @@ - - - - @@ -48,17 +41,17 @@ ======================================================== --> - +