diff --git a/requirements/common.in b/requirements/common.in index 5cc186fa316..b66f7127703 100644 --- a/requirements/common.in +++ b/requirements/common.in @@ -13,6 +13,7 @@ psycopg2-binary==2.9.11 jsonschema==4.25.1 # import jsonschema djangorestframework==3.16.1 # Imported as rest_framework django-cors-headers==4.9.0 # Listed as 3rd party app on settings.py +drf_spectacular==0.29.0 # Used for REST API Schema Generation mozlog==8.0.0 # Used directly and also by Django's YAML serializer. diff --git a/requirements/common.txt b/requirements/common.txt index 7c8b18a17f1..1e2d5c8587b 100644 --- a/requirements/common.txt +++ b/requirements/common.txt @@ -419,6 +419,7 @@ django==5.1.15 \ # django-filter # django-redis # djangorestframework + # drf-spectacular django-cache-memoize==0.2.1 \ --hash=sha256:025ff5d941420247b83452bb183bde172dde7def95501fca829adf8ea01b2b7b \ --hash=sha256:07929d063a03557013875d453a13edc8e3359d3ba8a568b64ac3288578ed8be3 @@ -442,11 +443,17 @@ django-redis==6.0.0 \ djangorestframework==3.16.1 \ --hash=sha256:166809528b1aced0a17dc66c24492af18049f2c9420dbd0be29422029cfc3ff7 \ --hash=sha256:33a59f47fb9c85ede792cbf88bde71893bcda0667bc573f784649521f1102cec - # via -r requirements/common.in + # via + # -r requirements/common.in + # drf-spectacular dockerflow==2024.4.2 \ --hash=sha256:b9f92455449ba46555f57db34cccefc4c49d3533c67793624ab7e80a1625caa7 \ --hash=sha256:f4216a3a809093860d7b2db84ba0a25c894cb8eb98b74f4f6a04badbc4f6b0a4 # via -r requirements/common.in +drf-spectacular==0.29.0 \ + --hash=sha256:0a069339ea390ce7f14a75e8b5af4a0860a46e833fd4af027411a3e94fc1a0cc \ + --hash=sha256:d1ee7c9535d89848affb4427347f7c4a22c5d22530b8842ef133d7b72e19b41a + # via -r requirements/common.in ecdsa==0.19.0 \ --hash=sha256:2cea9b88407fdac7bbeca0833b189e4c9c53f2ef1e1eaa29f6224dbc809b707a \ --hash=sha256:60eaad1199659900dd0af521ed462b793bbdf867432b3948e87416ae4caf6bf8 @@ -692,7 +699,9 @@ idna==3.7 \ inflection==0.5.1 \ --hash=sha256:1a29730d366e996aaacffb2f1f1cb9593dc38e2ddd30c91250c6dde09ea9b417 \ --hash=sha256:f38b2b640938a4f35ade69ac3d053042959b62a0f1076a5bbaa1b9526605a8a2 - # via -r requirements/common.in + # via + # -r requirements/common.in + # drf-spectacular jinja2==3.1.6 \ --hash=sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d \ --hash=sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67 @@ -712,7 +721,9 @@ json-e==4.8.0 \ jsonschema==4.25.1 \ --hash=sha256:3fba0169e345c7175110351d456342c364814cfcf3b964ba4587f22915230a63 \ --hash=sha256:e4a9655ce0da0c0b67a085847e00a3a51449e1157f4f75e9fb5aa545e122eb85 - # via -r requirements/common.in + # via + # -r requirements/common.in + # drf-spectacular jsonschema-specifications==2023.12.1 \ --hash=sha256:48a76787b3e70f5ed53f1160d2b81f586e4ca6d1548c5de7085d1682674764cc \ --hash=sha256:87e4fdf3a94858b8a2ba2778d9ba57d8a9cafca7c7489c46ba0d30a8bc6a9c3c @@ -1315,138 +1326,71 @@ protobuf==5.29.3 \ # proto-plus psycopg2-binary==2.9.11 \ --hash=sha256:00ce1830d971f43b667abe4a56e42c1e2d594b32da4802e44a73bacacb25535f \ - --hash=sha256:00ce1830d971f43b667abe4a56e42c1e2d594b32da4802e44a73bacacb25535f \ - --hash=sha256:04195548662fa544626c8ea0f06561eb6203f1984ba5b4562764fbeb4c3d14b1 \ --hash=sha256:04195548662fa544626c8ea0f06561eb6203f1984ba5b4562764fbeb4c3d14b1 \ --hash=sha256:0da4de5c1ac69d94ed4364b6cbe7190c1a70d325f112ba783d83f8440285f152 \ - --hash=sha256:0da4de5c1ac69d94ed4364b6cbe7190c1a70d325f112ba783d83f8440285f152 \ --hash=sha256:0e8480afd62362d0a6a27dd09e4ca2def6fa50ed3a4e7c09165266106b2ffa10 \ - --hash=sha256:0e8480afd62362d0a6a27dd09e4ca2def6fa50ed3a4e7c09165266106b2ffa10 \ - --hash=sha256:20e7fb94e20b03dcc783f76c0865f9da39559dcc0c28dd1a3fce0d01902a6b9c \ --hash=sha256:20e7fb94e20b03dcc783f76c0865f9da39559dcc0c28dd1a3fce0d01902a6b9c \ --hash=sha256:2c226ef95eb2250974bf6fa7a842082b31f68385c4f3268370e3f3870e7859ee \ - --hash=sha256:2c226ef95eb2250974bf6fa7a842082b31f68385c4f3268370e3f3870e7859ee \ - --hash=sha256:2d11098a83cca92deaeaed3d58cfd150d49b3b06ee0d0852be466bf87596899e \ --hash=sha256:2d11098a83cca92deaeaed3d58cfd150d49b3b06ee0d0852be466bf87596899e \ --hash=sha256:2e164359396576a3cc701ba8af4751ae68a07235d7a380c631184a611220d9a4 \ - --hash=sha256:2e164359396576a3cc701ba8af4751ae68a07235d7a380c631184a611220d9a4 \ --hash=sha256:304fd7b7f97eef30e91b8f7e720b3db75fee010b520e434ea35ed1ff22501d03 \ - --hash=sha256:304fd7b7f97eef30e91b8f7e720b3db75fee010b520e434ea35ed1ff22501d03 \ - --hash=sha256:31b32c457a6025e74d233957cc9736742ac5a6cb196c6b68499f6bb51390bd6a \ --hash=sha256:31b32c457a6025e74d233957cc9736742ac5a6cb196c6b68499f6bb51390bd6a \ --hash=sha256:32770a4d666fbdafab017086655bcddab791d7cb260a16679cc5a7338b64343b \ - --hash=sha256:32770a4d666fbdafab017086655bcddab791d7cb260a16679cc5a7338b64343b \ - --hash=sha256:366df99e710a2acd90efed3764bb1e28df6c675d33a7fb40df9b7281694432ee \ --hash=sha256:366df99e710a2acd90efed3764bb1e28df6c675d33a7fb40df9b7281694432ee \ --hash=sha256:37d8412565a7267f7d79e29ab66876e55cb5e8e7b3bbf94f8206f6795f8f7e7e \ - --hash=sha256:37d8412565a7267f7d79e29ab66876e55cb5e8e7b3bbf94f8206f6795f8f7e7e \ --hash=sha256:4012c9c954dfaccd28f94e84ab9f94e12df76b4afb22331b1f0d3154893a6316 \ - --hash=sha256:4012c9c954dfaccd28f94e84ab9f94e12df76b4afb22331b1f0d3154893a6316 \ - --hash=sha256:41360b01c140c2a03d346cec3280cf8a71aa07d94f3b1509fa0161c366af66b4 \ --hash=sha256:41360b01c140c2a03d346cec3280cf8a71aa07d94f3b1509fa0161c366af66b4 \ --hash=sha256:44fc5c2b8fa871ce7f0023f619f1349a0aa03a0857f2c96fbc01c657dcbbdb49 \ - --hash=sha256:44fc5c2b8fa871ce7f0023f619f1349a0aa03a0857f2c96fbc01c657dcbbdb49 \ - --hash=sha256:47f212c1d3be608a12937cc131bd85502954398aaa1320cb4c14421a0ffccf4c \ --hash=sha256:47f212c1d3be608a12937cc131bd85502954398aaa1320cb4c14421a0ffccf4c \ --hash=sha256:4bdab48575b6f870f465b397c38f1b415520e9879fdf10a53ee4f49dcbdf8a21 \ - --hash=sha256:4bdab48575b6f870f465b397c38f1b415520e9879fdf10a53ee4f49dcbdf8a21 \ --hash=sha256:4dca1f356a67ecb68c81a7bc7809f1569ad9e152ce7fd02c2f2036862ca9f66b \ - --hash=sha256:4dca1f356a67ecb68c81a7bc7809f1569ad9e152ce7fd02c2f2036862ca9f66b \ - --hash=sha256:5c6ff3335ce08c75afaed19e08699e8aacf95d4a260b495a4a8545244fe2ceb3 \ --hash=sha256:5c6ff3335ce08c75afaed19e08699e8aacf95d4a260b495a4a8545244fe2ceb3 \ --hash=sha256:5f3f2732cf504a1aa9e9609d02f79bea1067d99edf844ab92c247bbca143303b \ - --hash=sha256:5f3f2732cf504a1aa9e9609d02f79bea1067d99edf844ab92c247bbca143303b \ - --hash=sha256:62b6d93d7c0b61a1dd6197d208ab613eb7dcfdcca0a49c42ceb082257991de9d \ --hash=sha256:62b6d93d7c0b61a1dd6197d208ab613eb7dcfdcca0a49c42ceb082257991de9d \ --hash=sha256:691c807d94aecfbc76a14e1408847d59ff5b5906a04a23e12a89007672b9e819 \ - --hash=sha256:691c807d94aecfbc76a14e1408847d59ff5b5906a04a23e12a89007672b9e819 \ --hash=sha256:763c93ef1df3da6d1a90f86ea7f3f806dc06b21c198fa87c3c25504abec9404a \ - --hash=sha256:763c93ef1df3da6d1a90f86ea7f3f806dc06b21c198fa87c3c25504abec9404a \ - --hash=sha256:84011ba3109e06ac412f95399b704d3d6950e386b7994475b231cf61eec2fc1f \ --hash=sha256:84011ba3109e06ac412f95399b704d3d6950e386b7994475b231cf61eec2fc1f \ --hash=sha256:865f9945ed1b3950d968ec4690ce68c55019d79e4497366d36e090327ce7db14 \ - --hash=sha256:865f9945ed1b3950d968ec4690ce68c55019d79e4497366d36e090327ce7db14 \ - --hash=sha256:875039274f8a2361e5207857899706da840768e2a775bf8c65e82f60b197df02 \ --hash=sha256:875039274f8a2361e5207857899706da840768e2a775bf8c65e82f60b197df02 \ --hash=sha256:8b81627b691f29c4c30a8f322546ad039c40c328373b11dff7490a3e1b517855 \ - --hash=sha256:8b81627b691f29c4c30a8f322546ad039c40c328373b11dff7490a3e1b517855 \ --hash=sha256:8c55b385daa2f92cb64b12ec4536c66954ac53654c7f15a203578da4e78105c0 \ - --hash=sha256:8c55b385daa2f92cb64b12ec4536c66954ac53654c7f15a203578da4e78105c0 \ - --hash=sha256:91537a8df2bde69b1c1db01d6d944c831ca793952e4f57892600e96cee95f2cd \ --hash=sha256:91537a8df2bde69b1c1db01d6d944c831ca793952e4f57892600e96cee95f2cd \ --hash=sha256:92e3b669236327083a2e33ccfa0d320dd01b9803b3e14dd986a4fc54aa00f4e1 \ - --hash=sha256:92e3b669236327083a2e33ccfa0d320dd01b9803b3e14dd986a4fc54aa00f4e1 \ - --hash=sha256:9b52a3f9bb540a3e4ec0f6ba6d31339727b2950c9772850d6545b7eae0b9d7c5 \ --hash=sha256:9b52a3f9bb540a3e4ec0f6ba6d31339727b2950c9772850d6545b7eae0b9d7c5 \ --hash=sha256:9bd81e64e8de111237737b29d68039b9c813bdf520156af36d26819c9a979e5f \ - --hash=sha256:9bd81e64e8de111237737b29d68039b9c813bdf520156af36d26819c9a979e5f \ --hash=sha256:9c55460033867b4622cda1b6872edf445809535144152e5d14941ef591980edf \ - --hash=sha256:9c55460033867b4622cda1b6872edf445809535144152e5d14941ef591980edf \ - --hash=sha256:9d3a9edcfbe77a3ed4bc72836d466dfce4174beb79eda79ea155cc77237ed9e8 \ --hash=sha256:9d3a9edcfbe77a3ed4bc72836d466dfce4174beb79eda79ea155cc77237ed9e8 \ --hash=sha256:a1cf393f1cdaf6a9b57c0a719a1068ba1069f022a59b8b1fe44b006745b59757 \ - --hash=sha256:a1cf393f1cdaf6a9b57c0a719a1068ba1069f022a59b8b1fe44b006745b59757 \ - --hash=sha256:a28d8c01a7b27a1e3265b11250ba7557e5f72b5ee9e5f3a2fa8d2949c29bf5d2 \ --hash=sha256:a28d8c01a7b27a1e3265b11250ba7557e5f72b5ee9e5f3a2fa8d2949c29bf5d2 \ --hash=sha256:a311f1edc9967723d3511ea7d2708e2c3592e3405677bf53d5c7246753591fbb \ - --hash=sha256:a311f1edc9967723d3511ea7d2708e2c3592e3405677bf53d5c7246753591fbb \ --hash=sha256:a6c0e4262e089516603a09474ee13eabf09cb65c332277e39af68f6233911087 \ - --hash=sha256:a6c0e4262e089516603a09474ee13eabf09cb65c332277e39af68f6233911087 \ - --hash=sha256:ab8905b5dcb05bf3fb22e0cf90e10f469563486ffb6a96569e51f897c750a76a \ --hash=sha256:ab8905b5dcb05bf3fb22e0cf90e10f469563486ffb6a96569e51f897c750a76a \ --hash=sha256:b31e90fdd0f968c2de3b26ab014314fe814225b6c324f770952f7d38abf17e3c \ - --hash=sha256:b31e90fdd0f968c2de3b26ab014314fe814225b6c324f770952f7d38abf17e3c \ - --hash=sha256:b33fabeb1fde21180479b2d4667e994de7bbf0eec22832ba5d9b5e4cf65b6c6d \ --hash=sha256:b33fabeb1fde21180479b2d4667e994de7bbf0eec22832ba5d9b5e4cf65b6c6d \ --hash=sha256:b637d6d941209e8d96a072d7977238eea128046effbf37d1d8b2c0764750017d \ - --hash=sha256:b637d6d941209e8d96a072d7977238eea128046effbf37d1d8b2c0764750017d \ --hash=sha256:b6aed9e096bf63f9e75edf2581aa9a7e7186d97ab5c177aa6c87797cd591236c \ - --hash=sha256:b6aed9e096bf63f9e75edf2581aa9a7e7186d97ab5c177aa6c87797cd591236c \ - --hash=sha256:b8fb3db325435d34235b044b199e56cdf9ff41223a4b9752e8576465170bb38c \ --hash=sha256:b8fb3db325435d34235b044b199e56cdf9ff41223a4b9752e8576465170bb38c \ --hash=sha256:ba34475ceb08cccbdd98f6b46916917ae6eeb92b5ae111df10b544c3a4621dc4 \ - --hash=sha256:ba34475ceb08cccbdd98f6b46916917ae6eeb92b5ae111df10b544c3a4621dc4 \ - --hash=sha256:be9b840ac0525a283a96b556616f5b4820e0526addb8dcf6525a0fa162730be4 \ --hash=sha256:be9b840ac0525a283a96b556616f5b4820e0526addb8dcf6525a0fa162730be4 \ --hash=sha256:bf940cd7e7fec19181fdbc29d76911741153d51cab52e5c21165f3262125685e \ - --hash=sha256:bf940cd7e7fec19181fdbc29d76911741153d51cab52e5c21165f3262125685e \ --hash=sha256:c0377174bf1dd416993d16edc15357f6eb17ac998244cca19bc67cdc0e2e5766 \ - --hash=sha256:c0377174bf1dd416993d16edc15357f6eb17ac998244cca19bc67cdc0e2e5766 \ - --hash=sha256:c3cb3a676873d7506825221045bd70e0427c905b9c8ee8d6acd70cfcbd6e576d \ --hash=sha256:c3cb3a676873d7506825221045bd70e0427c905b9c8ee8d6acd70cfcbd6e576d \ --hash=sha256:c47676e5b485393f069b4d7a811267d3168ce46f988fa602658b8bb901e9e64d \ - --hash=sha256:c47676e5b485393f069b4d7a811267d3168ce46f988fa602658b8bb901e9e64d \ - --hash=sha256:c665f01ec8ab273a61c62beeb8cce3014c214429ced8a308ca1fc410ecac3a39 \ --hash=sha256:c665f01ec8ab273a61c62beeb8cce3014c214429ced8a308ca1fc410ecac3a39 \ --hash=sha256:cffe9d7697ae7456649617e8bb8d7a45afb71cd13f7ab22af3e5c61f04840908 \ - --hash=sha256:cffe9d7697ae7456649617e8bb8d7a45afb71cd13f7ab22af3e5c61f04840908 \ --hash=sha256:d526864e0f67f74937a8fce859bd56c979f5e2ec57ca7c627f5f1071ef7fee60 \ - --hash=sha256:d526864e0f67f74937a8fce859bd56c979f5e2ec57ca7c627f5f1071ef7fee60 \ - --hash=sha256:d57c9c387660b8893093459738b6abddbb30a7eab058b77b0d0d1c7d521ddfd7 \ --hash=sha256:d57c9c387660b8893093459738b6abddbb30a7eab058b77b0d0d1c7d521ddfd7 \ --hash=sha256:d6fe6b47d0b42ce1c9f1fa3e35bb365011ca22e39db37074458f27921dca40f2 \ - --hash=sha256:d6fe6b47d0b42ce1c9f1fa3e35bb365011ca22e39db37074458f27921dca40f2 \ - --hash=sha256:db4fd476874ccfdbb630a54426964959e58da4c61c9feba73e6094d51303d7d8 \ --hash=sha256:db4fd476874ccfdbb630a54426964959e58da4c61c9feba73e6094d51303d7d8 \ --hash=sha256:e0deeb03da539fa3577fcb0b3f2554a97f7e5477c246098dbb18091a4a01c16f \ - --hash=sha256:e0deeb03da539fa3577fcb0b3f2554a97f7e5477c246098dbb18091a4a01c16f \ --hash=sha256:e35b7abae2b0adab776add56111df1735ccc71406e56203515e228a8dc07089f \ - --hash=sha256:e35b7abae2b0adab776add56111df1735ccc71406e56203515e228a8dc07089f \ - --hash=sha256:ebb415404821b6d1c47353ebe9c8645967a5235e6d88f914147e7fd411419e6f \ --hash=sha256:ebb415404821b6d1c47353ebe9c8645967a5235e6d88f914147e7fd411419e6f \ --hash=sha256:edcb3aeb11cb4bf13a2af3c53a15b3d612edeb6409047ea0b5d6a21a9d744b34 \ - --hash=sha256:edcb3aeb11cb4bf13a2af3c53a15b3d612edeb6409047ea0b5d6a21a9d744b34 \ - --hash=sha256:ef7a6beb4beaa62f88592ccc65df20328029d721db309cb3250b0aae0fa146c3 \ --hash=sha256:ef7a6beb4beaa62f88592ccc65df20328029d721db309cb3250b0aae0fa146c3 \ --hash=sha256:efff12b432179443f54e230fdf60de1f6cc726b6c832db8701227d089310e8aa \ - --hash=sha256:efff12b432179443f54e230fdf60de1f6cc726b6c832db8701227d089310e8aa \ --hash=sha256:f07c9c4a5093258a03b28fab9b4f151aa376989e7f35f855088234e656ee6a94 \ - --hash=sha256:f07c9c4a5093258a03b28fab9b4f151aa376989e7f35f855088234e656ee6a94 \ - --hash=sha256:f090b7ddd13ca842ebfe301cd587a76a4cf0913b1e429eb92c1be5dbeb1a19bc \ --hash=sha256:f090b7ddd13ca842ebfe301cd587a76a4cf0913b1e429eb92c1be5dbeb1a19bc \ --hash=sha256:fa0f693d3c68ae925966f0b14b8edda71696608039f4ed61b1fe9ffa468d16db \ - --hash=sha256:fa0f693d3c68ae925966f0b14b8edda71696608039f4ed61b1fe9ffa468d16db \ - --hash=sha256:fcf21be3ce5f5659daefd2b3b3b6e4727b028221ddc94e6c1523425579664747 \ --hash=sha256:fcf21be3ce5f5659daefd2b3b3b6e4727b028221ddc94e6c1523425579664747 # via -r requirements/common.in pyarrow==19.0.0 \ @@ -1637,6 +1581,7 @@ pyyaml==6.0.3 \ --hash=sha256:fc09d0aa354569bc501d4e787133afc08552722d3ab34836a80547331bb5d4a0 # via # -r requirements/common.in + # drf-spectacular # mozci # pre-commit rapidfuzz==3.9.2 \ @@ -2094,7 +2039,9 @@ tzlocal==5.3.1 \ uritemplate==4.2.0 \ --hash=sha256:480c2ed180878955863323eea31b0ede668795de182617fef9c6ca09e6ec9d0e \ --hash=sha256:962201ba1c4edcab02e60f9a0d3821e82dfc5d2d6662a21abd533879bdb8a686 - # via -r requirements/common.in + # via + # -r requirements/common.in + # drf-spectacular urllib3==1.26.18 \ --hash=sha256:34b97092d7e0a3a8cf7cd10e386f401b3737364026c45e622aa02903dffe0f07 \ --hash=sha256:f8ecc1bba5667413457c529ab955bf8c67b45db799d159066261719e328580a0 diff --git a/treeherder/config/settings.py b/treeherder/config/settings.py index bb20f05069b..6e900b528ff 100644 --- a/treeherder/config/settings.py +++ b/treeherder/config/settings.py @@ -77,6 +77,7 @@ "rest_framework", "corsheaders", "django_filters", + "drf_spectacular", "dockerflow.django", # treeherder apps "treeherder.model", @@ -404,7 +405,7 @@ "DEFAULT_PARSER_CLASSES": ("rest_framework.parsers.JSONParser",), "DEFAULT_PERMISSION_CLASSES": ("rest_framework.permissions.IsAuthenticatedOrReadOnly",), "DEFAULT_RENDERER_CLASSES": ("rest_framework.renderers.JSONRenderer",), - "DEFAULT_SCHEMA_CLASS": "rest_framework.schemas.openapi.AutoSchema", + "DEFAULT_SCHEMA_CLASS": "drf_spectacular.openapi.AutoSchema", "DEFAULT_VERSION": "1.0", "DEFAULT_VERSIONING_CLASS": "rest_framework.versioning.AcceptHeaderVersioning", "TEST_REQUEST_DEFAULT_FORMAT": "json", diff --git a/treeherder/webapp/api/performance_data.py b/treeherder/webapp/api/performance_data.py index 67ea7e8ece7..9d626e01719 100644 --- a/treeherder/webapp/api/performance_data.py +++ b/treeherder/webapp/api/performance_data.py @@ -217,7 +217,7 @@ class PerformanceFrameworkViewSet(viewsets.ReadOnlyModelViewSet): ordering = "id" -class PerfomanceJobViewSet(viewsets.ReadOnlyModelViewSet): +class PerformanceJobViewSet(viewsets.ReadOnlyModelViewSet): def list(self, request, project): repository = models.Repository.objects.get(name=project) # Expect exactly one job_id in query params diff --git a/treeherder/webapp/api/urls.py b/treeherder/webapp/api/urls.py index 4f4223cb99f..04858a117b2 100644 --- a/treeherder/webapp/api/urls.py +++ b/treeherder/webapp/api/urls.py @@ -1,6 +1,6 @@ from django.urls import include, re_path +from drf_spectacular.views import SpectacularAPIView from rest_framework import routers -from rest_framework.schemas import get_schema_view from treeherder.webapp.api import ( auth, @@ -86,7 +86,7 @@ ) project_bound_router.register( - r"performance/job-data", performance_data.PerfomanceJobViewSet, basename="performance-job-data" + r"performance/job-data", performance_data.PerformanceJobViewSet, basename="performance-job-data" ) project_bound_router.register( @@ -185,7 +185,7 @@ name="perfcompare-results", ), re_path(r"^csp-report/$", csp_report.csp_report_collector, name="csp-report"), - re_path(r"^schema/", get_schema_view(title="Treeherder Rest API"), name="openapi-schema"), + re_path(r"^schema/", SpectacularAPIView.as_view(), name="openapi-schema"), re_path( r"^internal_issue/", internal_issue.CreateInternalIssue.as_view(), name="internal_issue" ), diff --git a/ui/RedocApp.jsx b/ui/RedocApp.jsx index 05610920670..3d67ffdc2b2 100644 --- a/ui/RedocApp.jsx +++ b/ui/RedocApp.jsx @@ -2,9 +2,7 @@ import React from 'react'; import { RedocStandalone } from 'redoc'; const App = (props) => { - return ( - - ); + return ; }; export default App; diff --git a/ui/job-view/details/DetailsPanel.jsx b/ui/job-view/details/DetailsPanel.jsx index 31383014ab0..e706fd27a4b 100644 --- a/ui/job-view/details/DetailsPanel.jsx +++ b/ui/job-view/details/DetailsPanel.jsx @@ -222,17 +222,17 @@ class DetailsPanel extends React.Component { mappedFrameworks[element.id] = element.name; }); - const perfJobDetail = jobData.data.map((perfomanceData) => { - const signature = perfomanceData.signature_data; + const perfJobDetail = jobData.data.map((performanceData) => { + const signature = performanceData.signature_data; return { url: `/perfherder/graphs?series=${[ currentRepo.name, signature.id, 1, signature.frameworkId, - ]}&selected=${[signature.id, perfomanceData.id]}`, + ]}&selected=${[signature.id, performanceData.id]}`, shouldAlert: signature.should_alert, - value: perfomanceData.value, + value: performanceData.value, measurementUnit: signature.measurementUnit, lowerIsBetter: signature.lowerIsBetter, title: signature.name,