Add Bookmark.atomify and /bookmarks.atom.

This commit is contained in:
voussoir 2022-11-11 11:41:24 -08:00
parent 732c13440e
commit d1b0fb6aec
2 changed files with 39 additions and 0 deletions

View file

@ -807,6 +807,34 @@ class Bookmark(ObjectBase):
def _uncache(self): def _uncache(self):
self.photodb.caches[Bookmark].remove(self.id) self.photodb.caches[Bookmark].remove(self.id)
def atomify(self, web_root='') -> bs4.BeautifulSoup:
web_root = web_root.rstrip('/')
soup = bs4.BeautifulSoup('', 'xml')
entry = soup.new_tag('entry')
soup.append(entry)
id_element = soup.new_tag('id')
id_element.string = str(self.id)
entry.append(id_element)
title = soup.new_tag('title')
title.string = self.title
entry.append(title)
link = soup.new_tag('link')
link['href'] = self.url
entry.append(link)
published = soup.new_tag('published')
published.string = self.created.isoformat()
entry.append(published)
typ = soup.new_tag('etiquette:type')
typ.string = 'bookmark'
entry.append(typ)
return soup
@decorators.required_feature('bookmark.edit') @decorators.required_feature('bookmark.edit')
@worms.atomic @worms.atomic
def delete(self) -> None: def delete(self) -> None:

View file

@ -32,6 +32,17 @@ def post_bookmark_edit(bookmark_id):
# Bookmark listings ################################################################################ # Bookmark listings ################################################################################
@site.route('/bookmarks.atom')
def get_bookmarks_atom():
bookmarks = common.P.get_bookmarks()
response = etiquette.helpers.make_atom_feed(
bookmarks,
feed_id='/bookmarks' + request.query_string.decode('utf-8'),
feed_title='bookmarks',
feed_link=request.url.replace('/bookmarks.atom', '/bookmarks'),
)
return flasktools.atom_response(response)
@site.route('/bookmarks') @site.route('/bookmarks')
def get_bookmarks_html(): def get_bookmarks_html():
bookmarks = list(common.P.get_bookmarks()) bookmarks = list(common.P.get_bookmarks())