aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2022-12-17use right alembic downgrade when downgradingDaniel Schadt
-1 is not always the right choice, e.g. when the previous update script has the same alembic version. Therefore, we actually need to do the effort to track the "previous alembic" version.
2022-12-17fix migration for old sqliteDaniel Schadt
2022-12-15fix lintsDaniel Schadt
2022-12-15fix integration & playwright testsDaniel Schadt
2022-12-15actually downgrade revision on update downgradeDaniel Schadt
2022-12-14first work on getting GPX out of the DBDaniel Schadt
This does a lot of changes already. What is definitely not working yet are the tests, as they still try to put the data into the database - but that should be easy to fix. The convenience methods Track.{length,uphill,...} were a bit stupid to fix, as our template code assumed that those attributes can just be accessed. As a fix, I've introduced a new class that "re-introduces" those and can lazily load them from the disk in case the cache does not exist. This works pretty well, but is not too nice - we end up with a lot of "proxy" properties. Other than that, I'm positively surprised how well this has worked so far, the upgrade scripts seem to be doing good and serving the file straight from the disk seems to work nicely as well. What isn't tested yet however is "edge cases", in case a data directory goes missing, ...
2022-12-14rework DataManagerDaniel Schadt
Since we plan on moving the GPX data (and the original copy) into the data directory, it makes more sense to have a per-track "handle" instead of having all methods of DataManager take a track_id parameter.
2022-12-14add type hints in data.pyDaniel Schadt
2022-12-14change deprecated way of Accept-Encoding headerDaniel Schadt
2022-12-14Merge branch 'playwright'Daniel Schadt
2022-12-14add test for track browsingDaniel Schadt
2022-12-13remove tileproxy.TileSourceDaniel Schadt
This tuple was basically the same as TileLayerConfig, just without the validation. You could see in the old _extract_user_layers that otherwise they were 1:1 doing the same job. Therefore, it made sense to remove TileSource and instead rewrite the code to use TileLayerConfig directly.
2022-12-13add support for stamen mapsDaniel Schadt
2022-12-13add a test for editing tracksDaniel Schadt
2022-12-11fix GitLab CI for playwrightDaniel Schadt
2022-12-10start with playwright testsDaniel Schadt
2022-12-10fix type hints for read_localized_resourceDaniel Schadt
2022-12-10update CHANGELOGDaniel Schadt
2022-12-10add a "Remember me" option for loginsDaniel Schadt
The default session timeout is at 15 minutes, which can be rather short. Therefore, we now have a "Remember me" option, which optionally saves the authentication in a cookie (signed of course, so nobody can tamper with it). This cookie is set to basically never expire, keeping the user logged in while not messing with the session timeout (which is also used for other things like flash messages). We might think about just removing the session authentication completely and doing everything with cookies, but we'll see about that. We definitely want to keep two separate timeouts, but the cookie helper doesn't seem to provide a way to have single cookies last for longer (short of having a second helper like we currently do).
2022-12-10fix localized resource loadingDaniel Schadt
2022-12-10Merge branch 'external-languages'Daniel Schadt
2022-12-09work around tox bug regarding section flake8Daniel Schadt
See https://github.com/tox-dev/tox/issues/2636 - without the rename, tox fails to recognize the configuration for flake8, as there is a (non-testenv) section named the same.
2022-12-09fix tox and poetry interactionDaniel Schadt
The Poetry FAQ[1] gives some options on how tox and poetry can be used together, since both of them want to do the virtual env managing. Since we mostly want to use tox as a venv manager and to easily run multiple linters, and we want to have poetry do the dependency management, the method of explicitely using `poetry install` seems to be the most reasonable. This means we don't have to generate a requirements.txt file or make duplicated listings of our dependencies in tox.ini. [1]: https://python-poetry.org/docs/master/faq/#is-tox-supported
2022-12-09Merge branch 'type-hints'Daniel Schadt
2022-12-08pin tox to old versionDaniel Schadt
There seems to be an issue with the latest one.
2022-12-08run black in CIDaniel Schadt
2022-12-08black formattingDaniel Schadt
This seems like something we should do rather earlier than later. Using black takes away the pain of manually formatting the code, adhering to the style guidelines and it takes away bikeshedding over minor things.
2022-12-08type hints for fietsboek.utilDaniel Schadt
2022-12-08add mypy to GitLab CIDaniel Schadt
2022-12-08first try with mypyDaniel Schadt
It would be nice to gradually improve the typing situation in Fietsboek. At least the parts that do not do heavy metaprogramming should have types. For most of the API, we already have types in the doc strings, so those could be removed then.
2022-12-08don't use session_key directlyDaniel Schadt
While it should be fine the way it was, we might want to introduce more "secret keys" (like for additional cookies), for which we would need more secrets.
2022-12-06enable account registrations for testingDaniel Schadt
2022-12-06add some tests for the registration formDaniel Schadt
2022-12-06actually capture email.smtp_url in the configDaniel Schadt
2022-12-06add language packs to configuration docsDaniel Schadt
2022-12-06replace Makefile targets with justfileDaniel Schadt
We might re-introduce Makefiles, but for different purposes (SASS or TypeScript compilation).
2022-12-06add justfile for language pack processingDaniel Schadt
2022-12-06add first documentation about language packsDaniel Schadt
2022-12-06enable loading of foreign locale packagesDaniel Schadt
2022-12-06fix lintsDaniel Schadt
2022-12-06Merge branch 'pydantic'Daniel Schadt
2022-12-06update CHANGELOGDaniel Schadt
2022-12-05small documentation fixesDaniel Schadt
2022-12-05fix CSRF issue for account creationDaniel Schadt
We forgot to include the CSRF token here.
2022-12-05access settings through new Config objectDaniel Schadt
This takes away the pain of dealing with default values or value conversions in main()
2022-12-05parse/validate config with pydanticDaniel Schadt
This is the first step, in the next step, we should actually use request.config.
2022-12-03serve gzip compressed GPX data if possibleDaniel Schadt
This way, we not only save the decompression time, we can also save bandwidth! We *might* even consider using brotli, which seems to be widely supported and has even better compression ratios, but brotli compression of full efficiency is also slow. Ideally, we'd save a "fast compressed" version of the GPX file on upload, and then have a slower background-queue re-compress them with higher settings. That however should probably wait till we move the GPX data out of the database(?!), then we can even serve the data straight with a FileResponse.
2022-11-28bump version to 0.4.0v0.4.0Daniel Schadt
2022-11-28add a checklist for the release processDaniel Schadt
2022-11-28add Sphinx as docs dependencyDaniel Schadt