aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2022-07-09add CSRF protection for actions that modify dataDaniel Schadt
2022-07-09take title suggestion from track nameDaniel Schadt
Sometimes, the GPX itself does not have a name set, but the single tracks might have.
2022-07-09start writing docs properly, not in the READMEDaniel Schadt
2022-07-08better loading in util.read_localized_resourceDaniel Schadt
The other code kinda assumed that we can turn the resource path into a package by replacing the slashes (path separators) with dots. That turned out to not really work in the end, especially if the resource subfolders don't have a __init__.py in there. This uses the .files() API (available in Python 3.9 and backported in importlib_resources) to better handle folders in the resources.
2022-07-07add a text if no tracks are browsableDaniel Schadt
2022-07-07wire jinja2 filters in codeDaniel Schadt
Those things are not really a configuration thing that changes, rather they are part of how the code of the application works. As such, it doesn't make too much sense to require those configuration values. Instead, we now add those filters programatically. This also ensures that the filters are the same between development, production and testing environment.
2022-07-07add tests for util.guess_gpx_timezoneDaniel Schadt
2022-07-07add text to the home pageDaniel Schadt
2022-07-07start adding some unit testsDaniel Schadt
2022-07-06better timezone handling for track datesDaniel Schadt
2022-07-06update styles for password reset formsDaniel Schadt
2022-07-06use ACLs for upload authorizationDaniel Schadt
2022-07-06move track authorization to ACLsDaniel Schadt
This cuts down on the code duplication and makes sure that we use the same algorithm everywhere. It also keeps the view code cleaner.
2022-07-05start to use pyramid context factoriesDaniel Schadt
This puts the handling of retrieving the right database object at a single place, which makes it easier to use from the different routes, and unifies the error handling (some places for example lacked the check to see if the returned object is None). It is also the first step to a better permission system based on Pyramid's ACLs, as we can now implement those on the object. This will make the code even better and even more uniform, as we don't need to do the permission checks manually anymore.
2022-07-03fix <strong> elementDaniel Schadt
The main issue was this: Our body has a slightly lower font weight of 300, so "bolder" works out to be 400 - which is a barely noticable increase. The reason for this is that "bolder" (and "lighter") are relative font weights, but they only work relative to certain "breakpoints" - and 300 was just a notch below the next breakpoint of 400 [1]. By setting the font-weight of "strong" to 700 directly, we get a noticable boldness increase instead, though we might tone it down just a notch in the future. In order to prevent font issues in the future, we've now also included all proper variants of OpenSans, so that all font styles are available to us, using the webfonts helper tool [2]. [1]: https://developer.mozilla.org/en-US/docs/Web/CSS/font-weight#meaning_of_relative_weights [2]: https://google-webfonts-helper.herokuapp.com/fonts
2022-07-02allow images in markdown descriptionsDaniel Schadt
This might need some fine tuning in the future
2022-07-02ensure the track cache is built after uploadDaniel Schadt
2022-07-02add caching to GPX and badge filesDaniel Schadt
They shouldn't change that much (currently, there is not even a way to change them from the web), and it saves a lot of data to cache the megabytes of GPX data.
2022-07-02adjust manifest for extra filesv0.0Daniel Schadt
2022-07-02generate proper alembic revisionDaniel Schadt
2022-07-02return 404 when track is not foundDaniel Schadt
2022-07-02add better cascading for ORM objectsDaniel Schadt
This prevents "weird" objects from lingering around. Now, if a user is deleted, their tracks are also being deleted - which is good, especially for the user's privacy. For a more "graceful" closing of the account, we could implement a strategy that first re-assigns the tracks to a different owner, and then deletes the account. But that may only happen with the consent of the user, and it is a work for future improvements.
2022-07-02mention fietsctl in the installation docsDaniel Schadt
2022-07-02add a small script for maintenance tasksDaniel Schadt
2022-07-02add README & LICENSEDaniel Schadt
2022-07-02add German translationDaniel Schadt
2022-07-02add a locale negotiator that uses Accept-LanguageDaniel Schadt
2022-07-02add a "friends of tagged people" visibilityDaniel Schadt
2022-07-02also update style of account creation formDaniel Schadt
2022-07-02update translationDaniel Schadt
2022-07-02style updates to many formsDaniel Schadt
2022-07-02pass tags as separate inputsDaniel Schadt
This looks way better than doing wonky space-separated things.
2022-07-02change way in which badges are handledDaniel Schadt
Supplying multiple inputs and retrieving them all is probably better than the weird badge-1, badge-2, ... hack we used.
2022-07-01add ability to actually tag friendsDaniel Schadt
2022-07-01add list of people to browsing listDaniel Schadt
2022-07-01update translationDaniel Schadt
2022-07-01fix download link for share linksDaniel Schadt
2022-07-01start on a track listingDaniel Schadt
2022-07-01implement account registrationDaniel Schadt
2022-07-01use locale-aware datetime formattingDaniel Schadt
2022-07-01use month names from locale instead of redoing itDaniel Schadt
2022-07-01update messagesDaniel Schadt
2022-07-01implement comment functionalityDaniel Schadt
2022-07-01remove separate id from track_cacheDaniel Schadt
We can just re-use the track's id, which also has the nice benefit that both the cache and the track have the same id.
2022-07-01remodel storage of tagsDaniel Schadt
Using a weird custom preprocessor and saving the tags as a space separated list in the database was not a good decision. A secondary table is more in line with how databases work, will probably help us with faster search later if we implement it (by creating an index for it). Additionally, this opens the possibility to have things like user-styled tags (custom color), as we can save additional information in the tag table.
2022-07-01implement client-side validation of password fieldDaniel Schadt
2022-07-01update translationsDaniel Schadt
2022-07-01add a "logged in" visibilityDaniel Schadt
2022-07-01implement personal data change formDaniel Schadt
2022-07-01implement password reset tokensDaniel Schadt