Add Bookmark.atomify and /bookmarks.atom.
This commit is contained in:
parent
732c13440e
commit
d1b0fb6aec
2 changed files with 39 additions and 0 deletions
|
@ -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:
|
||||||
|
|
|
@ -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())
|
||||||
|
|
Loading…
Reference in a new issue