62 lines
2.3 KiB
Python
62 lines
2.3 KiB
Python
import flask; from flask import request
|
|
|
|
import etiquette
|
|
|
|
from .. import common
|
|
from .. import decorators
|
|
from .. import jsonify
|
|
|
|
site = common.site
|
|
session_manager = common.session_manager
|
|
|
|
|
|
# Individual bookmarks #############################################################################
|
|
|
|
@site.route('/bookmark/<bookmark_id>.json')
|
|
def get_bookmark_json(bookmark_id):
|
|
bookmark = common.P_bookmark(bookmark_id, response_type='json')
|
|
response = etiquette.jsonify.bookmark(bookmark)
|
|
return jsonify.make_json_response(response)
|
|
|
|
@site.route('/bookmark/<bookmark_id>/edit', methods=['POST'])
|
|
def post_bookmark_edit(bookmark_id):
|
|
bookmark = common.P_bookmark(bookmark_id, response_type='json')
|
|
# Emptystring is okay for titles, but not for URL.
|
|
title = request.form.get('title', None)
|
|
url = request.form.get('url', None) or None
|
|
bookmark.edit(title=title, url=url, commit=True)
|
|
|
|
response = etiquette.jsonify.bookmark(bookmark)
|
|
response = jsonify.make_json_response(response)
|
|
return response
|
|
|
|
# Bookmark listings ################################################################################
|
|
|
|
@site.route('/bookmarks')
|
|
def get_bookmarks_html():
|
|
bookmarks = list(common.P.get_bookmarks())
|
|
return common.render_template(request, 'bookmarks.html', bookmarks=bookmarks)
|
|
|
|
@site.route('/bookmarks.json')
|
|
def get_bookmarks_json():
|
|
bookmarks = [etiquette.jsonify.bookmark(b) for b in common.P.get_bookmarks()]
|
|
return jsonify.make_json_response(bookmarks)
|
|
|
|
# Bookmark create and delete #######################################################################
|
|
|
|
@site.route('/bookmarks/create_bookmark', methods=['POST'])
|
|
@decorators.required_fields(['url'], forbid_whitespace=True)
|
|
def post_bookmark_create():
|
|
url = request.form['url']
|
|
title = request.form.get('title', None)
|
|
user = session_manager.get(request).user
|
|
bookmark = common.P.new_bookmark(url=url, title=title, author=user, commit=True)
|
|
response = etiquette.jsonify.bookmark(bookmark)
|
|
response = jsonify.make_json_response(response)
|
|
return response
|
|
|
|
@site.route('/bookmark/<bookmark_id>/delete', methods=['POST'])
|
|
def post_bookmark_delete(bookmark_id):
|
|
bookmark = common.P_bookmark(bookmark_id, response_type='json')
|
|
bookmark.delete(commit=True)
|
|
return jsonify.make_json_response({})
|