mirror of
https://codeberg.org/rimu/pyfedi
synced 2025-01-23 11:26:56 -08:00
sitemap of local posts
This commit is contained in:
parent
f6a0dfdc4f
commit
75f2c8d2ef
3 changed files with 28 additions and 1 deletions
|
@ -216,6 +216,23 @@ def robots():
|
||||||
return resp
|
return resp
|
||||||
|
|
||||||
|
|
||||||
|
@bp.route('/sitemap.xml')
|
||||||
|
@cache.cached(timeout=6000)
|
||||||
|
def sitemap():
|
||||||
|
posts = Post.query.filter(Post.from_bot == False)
|
||||||
|
posts = posts.join(Community, Community.id == Post.community_id)
|
||||||
|
posts = posts.filter(Community.show_all == True, Community.ap_id == None) # sitemap.xml only includes local posts
|
||||||
|
if not g.site.enable_nsfw:
|
||||||
|
posts = posts.filter(Community.nsfw == False)
|
||||||
|
if not g.site.enable_nsfl:
|
||||||
|
posts = posts.filter(Community.nsfl == False)
|
||||||
|
posts = posts.order_by(desc(Post.posted_at))
|
||||||
|
|
||||||
|
resp = make_response(render_template('sitemap.xml', posts=posts, current_app=current_app))
|
||||||
|
resp.mimetype = 'text/xml'
|
||||||
|
return resp
|
||||||
|
|
||||||
|
|
||||||
@bp.route('/keyboard_shortcuts')
|
@bp.route('/keyboard_shortcuts')
|
||||||
def keyboard_shortcuts():
|
def keyboard_shortcuts():
|
||||||
return render_template('keyboard_shortcuts.html')
|
return render_template('keyboard_shortcuts.html')
|
||||||
|
|
9
app/templates/sitemap.xml
Normal file
9
app/templates/sitemap.xml
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<urlset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:image="http://www.google.com/schemas/sitemap-image/1.1" xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd http://www.google.com/schemas/sitemap-image/1.1 http://www.google.com/schemas/sitemap-image/1.1/sitemap-image.xsd" xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
|
||||||
|
{% for post in posts %}
|
||||||
|
<url>
|
||||||
|
<loc>https://{{ current_app.config['SERVER_NAME'] }}/post/{{ post.id }}</loc>
|
||||||
|
<lastmod>{{ ap_datetime(post.edited_at) if post.edited_at else ap_datetime(post.posted_at) }}</lastmod>
|
||||||
|
</url>
|
||||||
|
{% endfor %}
|
||||||
|
</urlset>
|
|
@ -8,7 +8,7 @@ from flask import session, g, json, request
|
||||||
from app.constants import POST_TYPE_LINK, POST_TYPE_IMAGE, POST_TYPE_ARTICLE
|
from app.constants import POST_TYPE_LINK, POST_TYPE_IMAGE, POST_TYPE_ARTICLE
|
||||||
from app.models import Site
|
from app.models import Site
|
||||||
from app.utils import getmtime, gibberish, shorten_string, shorten_url, digits, user_access, community_membership, \
|
from app.utils import getmtime, gibberish, shorten_string, shorten_url, digits, user_access, community_membership, \
|
||||||
can_create, can_upvote, can_downvote, shorten_number
|
can_create, can_upvote, can_downvote, shorten_number, ap_datetime
|
||||||
|
|
||||||
app = create_app()
|
app = create_app()
|
||||||
cli.register(app)
|
cli.register(app)
|
||||||
|
@ -35,6 +35,7 @@ with app.app_context():
|
||||||
app.jinja_env.globals['community_membership'] = community_membership
|
app.jinja_env.globals['community_membership'] = community_membership
|
||||||
app.jinja_env.globals['json_loads'] = json.loads
|
app.jinja_env.globals['json_loads'] = json.loads
|
||||||
app.jinja_env.globals['user_access'] = user_access
|
app.jinja_env.globals['user_access'] = user_access
|
||||||
|
app.jinja_env.globals['ap_datetime'] = ap_datetime
|
||||||
app.jinja_env.globals['can_create'] = can_create
|
app.jinja_env.globals['can_create'] = can_create
|
||||||
app.jinja_env.globals['can_upvote'] = can_upvote
|
app.jinja_env.globals['can_upvote'] = can_upvote
|
||||||
app.jinja_env.globals['can_downvote'] = can_downvote
|
app.jinja_env.globals['can_downvote'] = can_downvote
|
||||||
|
|
Loading…
Reference in a new issue