From 658a6b7baa494fe238921f2dc91a8a690b2c1a9f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=BD=D0=B0=D0=B1?= Date: Tue, 25 Aug 2020 20:01:53 +0200 Subject: [PATCH] Use Repository.readme, if any, for display. Add repository.readme via migration Ref: ~sircmpwn/git.sr.ht#205 --- ...create_git_daemon_export_ok_files_again.py | 0 .../8fbeb080c434_add_repository_readme.py | 22 +++++++++++++++++++ gitsrht/blueprints/repo.py | 11 ++++++---- 3 files changed, 29 insertions(+), 4 deletions(-) mode change 100755 => 100644 gitsrht/alembic/versions/01412986a44d_create_git_daemon_export_ok_files_again.py create mode 100644 gitsrht/alembic/versions/8fbeb080c434_add_repository_readme.py diff --git a/gitsrht/alembic/versions/01412986a44d_create_git_daemon_export_ok_files_again.py b/gitsrht/alembic/versions/01412986a44d_create_git_daemon_export_ok_files_again.py old mode 100755 new mode 100644 diff --git a/gitsrht/alembic/versions/8fbeb080c434_add_repository_readme.py b/gitsrht/alembic/versions/8fbeb080c434_add_repository_readme.py new file mode 100644 index 0000000..7c1ac1f --- /dev/null +++ b/gitsrht/alembic/versions/8fbeb080c434_add_repository_readme.py @@ -0,0 +1,22 @@ +"""Add repository.readme + +Revision ID: 8fbeb080c434 +Revises: d42e577c5dcd +Create Date: 2020-08-22 02:16:15.516120 + +""" + +# revision identifiers, used by Alembic. +revision = '8fbeb080c434' +down_revision = 'd42e577c5dcd' + +from alembic import op +import sqlalchemy as sa + + +def upgrade(): + op.add_column('repository', sa.Column('readme', sa.Unicode)) + + +def downgrade(): + op.drop_column('repository', 'readme') diff --git a/gitsrht/blueprints/repo.py b/gitsrht/blueprints/repo.py index a0fa80e..7377cc9 100644 --- a/gitsrht/blueprints/repo.py +++ b/gitsrht/blueprints/repo.py @@ -22,12 +22,15 @@ from scmsrht.access import get_repo, get_repo_or_redir from scmsrht.formatting import get_formatted_readme, get_highlighted_file from scmsrht.urls import get_clone_urls from srht.config import cfg, get_origin -from srht.markdown import markdown +from srht.markdown import markdown, sanitize from urllib.parse import urlparse repo = Blueprint('repo', __name__) -def get_readme(repo, tip, link_prefix=None): +def get_readme(repo, git_repo, tip, link_prefix=None): + if repo.readme is not None: + return Markup(sanitize(repo.readme)) + if not tip: return None @@ -45,7 +48,7 @@ def get_readme(repo, tip, link_prefix=None): return None, None def content_getter(blob): - return repo.get(blob.id).data.decode() + return git_repo.get(blob.id).data.decode() return get_formatted_readme("git.sr.ht:git", file_finder, content_getter, link_prefix=link_prefix) @@ -87,7 +90,7 @@ def summary(owner, repo): blob_prefix = url_for( 'repo.raw_blob', owner=repo.owner, repo=repo.name, ref=f"{default_branch.name}/", path="") # Trailing slash needed - readme = get_readme(git_repo, tip, + readme = get_readme(repo, git_repo, tip, link_prefix=[link_prefix, blob_prefix]) tags = [(ref, git_repo.get(git_repo.references[ref].target)) for ref in git_repo.listall_references() -- 2.38.4