I've decided to change things up in API schema and doc generation.
Work is not quite complete but its enough for testing in dev and feedback.
Major changes:
* Renaming of api.view classes to match ViewSet inheritance (minor annoyance)
* Introduce drf-spectacular for schema generation and doc UI via swagger-ui
* lots of doc changes for the API to provide a good experience with the above.
New schema generation should work seamlessly in gitlab ci, as well as via /api/schema dynamically.
The new swagger ui view is available via /api/schema/docs/
Signed-off-by: Corey Shields <cshields@gmail.com>
Removed most of the bare Exception catches and put proper errors to catch in their place.
Reworked a bit of the gridsquare calculation, any exceptions raised should now be handled within the function.
I am purposefully leaving the 2 W0703's we have for data demodulation alone for now, as that will be quite a rabbit hole. Otherwise,
fixes#316
Signed-off-by: Corey Shields <cshields@gmail.com>
Update to Django Rest Framework 3.12.2 with improved schema generation.
However, it is still not quite complete for what we need (and what we currently postprocess for). Instead of postprocessing, this commit introduces our own extended generator to add the missing fields.
Once this is vetted good, we can remove contrib/postprocess-openapi-schema.py
Also added better comments to api/views.py which will end up in schema docs
Signed-off-by: Corey Shields <cshields@gmail.com>
LatestTle model was a proxy model on Tle one, using it for API adds a
significant delay to respond on the API requests. For this reason
LatestTle model is removed and LatestTleSet model takes its place.
LatestTleSet is updated asynchronously and keeping references to
latest TLE sets of Tle model. This allows to retrieve the TLE sets
faster.
Signed-off-by: Alfredos-Panagiotis Damkalis <fredy@fredy.gr>
Adds a chart card showing the last month of decoded data as currently stored in influxdb.
Unfortunately there's no native way to count the number of 'entries' for a measurement across a given time, so we have to do a count(*) across all points. This returns a blob of <timestamp>, <count(pointa)>, <count(pointb)>, <...> and in almost (but not all) cases those counts will be identical but we have to account for it not, so I iterate over each timestamp (client side) and take the max count to assign to that point in time. Since we are doing a 30d query from influx with 1d aggregation this should not be too intensive.
Also cleaned up the coloring of the profile link buttons.
Signed-off-by: Corey Shields <cshields@gmail.com>
Fix some spacing issues and import syntax introduced by my linting changes.
The inline pylint disable for C0412 clashes with isort, there is no combination there that works for both.
Signed-off-by: Corey Shields <cshields@gmail.com>
Ignoring cases of too many ancestors in API views.py as these are upstream, not much we can do about it.
Signed-off-by: Corey Shields <cshields@gmail.com>
We have a field in demoddata called "source" which stores the application source of the data (network, sids, manual). This causes a lot of confusion with the SiDS API format which has a "source" parameter (that we convert to "station")
As I'm working through documenting the API (and getting us ready for feature expansion), I'd like this field renamed to avoid future confusion.