| Commit message (Collapse) | Author | Age | Lines |
|
|
|
|
| |
Removes the DeprecationWarning we were receiving for using this method
without specifying a suitable filter argument.
|
|
|
|
|
|
|
|
|
|
|
| |
Before, we had an N+1 query, where each tag would be separately fetched
and updated. Instead, first delete any tags we no longer care about,
then perform an upsert of all fields except for `last_commit`, which we
want to keep from the existing tag.
This comes with one caveat: on the first update of the tags, the `tags`
list is no longer modified in-place, because mutation is bad, however,
the database state is updated accordingly.
|
| |
|
|
|
|
|
| |
We can simply save by the ID here, we do not need any other data from
the related object.
|
|
|
|
| |
Closes #1053
|
| |
|
| |
|
|
|
|
| |
Signed-off-by: Hassan Abouelela <[email protected]>
|
|
|
|
| |
Signed-off-by: Hassan Abouelela <[email protected]>
|
|
|
|
| |
Signed-off-by: Hassan Abouelela <[email protected]>
|
|
|
|
| |
Signed-off-by: Hassan Abouelela <[email protected]>
|
|
|
| |
Co-authored-by: Johannes Christ <[email protected]>
|
|
|
|
|
|
|
| |
Renames the tag model `author` field to `authors` to better indicate
what's contained in the field, and updates the documentation.
Signed-off-by: Hassan Abouelela <[email protected]>
|
|
|
|
| |
Signed-off-by: Hassan Abouelela <[email protected]>
|
|
|
|
| |
Signed-off-by: Hassan Abouelela <[email protected]>
|
|
|
|
| |
Signed-off-by: Hassan Abouelela <[email protected]>
|
|
|
|
|
|
|
| |
Uses the commit API to obtain tag metadata such as when it was last
edited, and by whom.
Signed-off-by: Hassan Abouelela <[email protected]>
|
|
|
|
| |
Signed-off-by: Hassan Abouelela <[email protected]>
|
|
|
|
|
|
|
| |
Adds support for tag groups in content. This involves some modification
to the routing, and templating.
Signed-off-by: Hassan Abouelela <[email protected]>
|
|
|
|
|
|
|
| |
Move the tag cropping logic to the frontend, which makes it easier to
crop without crossing boundaries such as link or code block boundaries.
Signed-off-by: Hassan Abouelela <[email protected]>
|
|
|
|
| |
Signed-off-by: Hassan Abouelela <[email protected]>
|
|
|
|
| |
Signed-off-by: Hassan Abouelela <[email protected]>
|
|
|
|
|
|
|
| |
Adds bot tags to the content page, as well as a model to go along with
it.
Signed-off-by: Hassan Abouelela <[email protected]>
|
| |
|
| |
|
|
|
|
|
|
| |
The tests uses pyfakefs to simulate a fake filesystem that is reused
over the content app tests.
Test coverage for the app is brought to 100%.
|
|
|
|
|
|
| |
This allows us to properly escape codeblocks within markdown, permalink
to headers on a page, and decouples getting metadata from a file and
getting generated HTML from the Markdown content.
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
| |
Rather than having two views for the base page and all other pages, all
pages now use the same view.
The view context handler is simplified to take advantage of pathlib
features.
The markdown folder is now /content/resources/* rather than
/content/resources/content/*, as the latter is unnecessary nesting.
|
|
|
|
|
|
| |
Articles was a good name, but we want an `articles` category in
the future. `/pages/guides/` and `/pages/articles/` are clearer in name
than `/articles/guides/` and `/articles/articles/`.
|
|
|
|
|
| |
This feature is still under implementation debate, so it will be further
discussed in another issue and implemeneted in a future PR.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
As this system will be used for more than just guides,
I had to do some refactoring to match this system with plans.
Basically now there isn't guides, but articles instead.
|