aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2022-07-17make sure all tracks are found in the archiveDaniel Schadt
2022-07-17track: don't fail when id is not setDaniel Schadt
This is just debug logging information, but accessing self.id for an object that is not in the database raises an error, because self.id is None and %d cannot format None. In this case, we simply use -1 as id instead.
2022-07-16actually implement the multi download buttonDaniel Schadt
2022-07-14[wip] implement multi track downloadDaniel Schadt
2022-07-11ignore empty IDs when retrieving multipleDaniel Schadt
This is for example useful for the template inputs. They should not be sent due to the "disabled" attribute, but we never know what browsers are doing, therefore we stay defensive. The test case already has to do extra steps to prevent those from being sent.
2022-07-11add integration tests for uploadingDaniel Schadt
2022-07-11don't overwrite date after editingDaniel Schadt
A few lines above the change, we set track.date to a timezone-aware date. We shouldn't overwrite it with a naive datetime right after.
2022-07-11better styling for friend buttons in track editDaniel Schadt
The big button with the large padding looked kind of silly, so now the button is slimmer and the text is actually centered.
2022-07-11move user menu (login, logout, ...) to right sideDaniel Schadt
2022-07-09add tests for the login formDaniel Schadt
2022-07-09add docs on translation workDaniel Schadt
2022-07-09add a "Delete" button to tracksDaniel Schadt
2022-07-09save timestamps in UTCDaniel Schadt
For the most part, we want to know the instant of when something happened. To stay consistent, we save everything as UTC. For internal things, this doesn't really matter - we just need to know the timezone to be able to compare the values (like "is the upload older than 5 days"). For user-facing things (like comments), we still want to store the UTC time and then convert it to the user's preferred timezone on display.
2022-07-09Bump version to 0.1.0v0.1.0Daniel Schadt
2022-07-09fix CSRF token mismatch on password reset formsDaniel Schadt
2022-07-09fix "Invalidate Share" actionDaniel Schadt
After the change to pyramid contexts, this parameter is now track_id. This was missed back then.
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