annotate piecrust/admin/views/mentions.py @ 1149:be74ba54a06f

admin: Improvements to micropub endpoint's photo handling. - Add `.jpg` extension to photos that don't have any extension. - Add photos in the config section instead of the body, so that the layout can put them in separate `u-photo` tags.
author Ludovic Chabant <ludovic@chabant.com>
date Tue, 10 Jul 2018 21:03:58 -0700
parents 8af2ea1f5c34
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1111
98c7dd6ea4ac admin: Early version of webmention endpoint.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
1 import logging
1114
8af2ea1f5c34 tasks: Add new `tasks` command and infrastructure, with `mention` task.
Ludovic Chabant <ludovic@chabant.com>
parents: 1111
diff changeset
2 from flask import g, request, make_response, abort
1111
98c7dd6ea4ac admin: Early version of webmention endpoint.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
3 from ..blueprint import foodtruck_bp
1114
8af2ea1f5c34 tasks: Add new `tasks` command and infrastructure, with `mention` task.
Ludovic Chabant <ludovic@chabant.com>
parents: 1111
diff changeset
4 from piecrust.tasks.base import TaskManager
1111
98c7dd6ea4ac admin: Early version of webmention endpoint.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
5
98c7dd6ea4ac admin: Early version of webmention endpoint.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
6
98c7dd6ea4ac admin: Early version of webmention endpoint.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
7 logger = logging.getLogger(__name__)
98c7dd6ea4ac admin: Early version of webmention endpoint.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
8
98c7dd6ea4ac admin: Early version of webmention endpoint.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
9
98c7dd6ea4ac admin: Early version of webmention endpoint.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
10 @foodtruck_bp.route('/webmention', methods=['POST'])
98c7dd6ea4ac admin: Early version of webmention endpoint.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
11 def post_webmention():
98c7dd6ea4ac admin: Early version of webmention endpoint.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
12 # Basic validation of source/target.
98c7dd6ea4ac admin: Early version of webmention endpoint.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
13 src_url = request.form.get('source')
98c7dd6ea4ac admin: Early version of webmention endpoint.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
14 tgt_url = request.form.get('target')
98c7dd6ea4ac admin: Early version of webmention endpoint.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
15 if not src_url or not tgt_url:
98c7dd6ea4ac admin: Early version of webmention endpoint.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
16 logger.error("No source or target specified.")
98c7dd6ea4ac admin: Early version of webmention endpoint.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
17 abort(400)
98c7dd6ea4ac admin: Early version of webmention endpoint.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
18 if src_url.lower().rstrip('/') == tgt_url.lower().rstrip('/'):
98c7dd6ea4ac admin: Early version of webmention endpoint.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
19 logger.error("Source and target are the same.")
98c7dd6ea4ac admin: Early version of webmention endpoint.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
20 abort(400)
98c7dd6ea4ac admin: Early version of webmention endpoint.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
21
1114
8af2ea1f5c34 tasks: Add new `tasks` command and infrastructure, with `mention` task.
Ludovic Chabant <ludovic@chabant.com>
parents: 1111
diff changeset
22 # Create the task for handling this mention.
8af2ea1f5c34 tasks: Add new `tasks` command and infrastructure, with `mention` task.
Ludovic Chabant <ludovic@chabant.com>
parents: 1111
diff changeset
23 pcapp = g.site.piecrust_app
8af2ea1f5c34 tasks: Add new `tasks` command and infrastructure, with `mention` task.
Ludovic Chabant <ludovic@chabant.com>
parents: 1111
diff changeset
24 task_manager = TaskManager(pcapp)
8af2ea1f5c34 tasks: Add new `tasks` command and infrastructure, with `mention` task.
Ludovic Chabant <ludovic@chabant.com>
parents: 1111
diff changeset
25 task_id = task_manager.createTask('mention', {
8af2ea1f5c34 tasks: Add new `tasks` command and infrastructure, with `mention` task.
Ludovic Chabant <ludovic@chabant.com>
parents: 1111
diff changeset
26 'source': src_url,
8af2ea1f5c34 tasks: Add new `tasks` command and infrastructure, with `mention` task.
Ludovic Chabant <ludovic@chabant.com>
parents: 1111
diff changeset
27 'target': tgt_url})
1111
98c7dd6ea4ac admin: Early version of webmention endpoint.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
28
1114
8af2ea1f5c34 tasks: Add new `tasks` command and infrastructure, with `mention` task.
Ludovic Chabant <ludovic@chabant.com>
parents: 1111
diff changeset
29 # Either run the task now in a background process (for cheap and simple
8af2ea1f5c34 tasks: Add new `tasks` command and infrastructure, with `mention` task.
Ludovic Chabant <ludovic@chabant.com>
parents: 1111
diff changeset
30 # setups), or leave the task there to be picked up later when someone
8af2ea1f5c34 tasks: Add new `tasks` command and infrastructure, with `mention` task.
Ludovic Chabant <ludovic@chabant.com>
parents: 1111
diff changeset
31 # runs the task queue eventually.
8af2ea1f5c34 tasks: Add new `tasks` command and infrastructure, with `mention` task.
Ludovic Chabant <ludovic@chabant.com>
parents: 1111
diff changeset
32 wmcfg = pcapp.config.get('webmention')
8af2ea1f5c34 tasks: Add new `tasks` command and infrastructure, with `mention` task.
Ludovic Chabant <ludovic@chabant.com>
parents: 1111
diff changeset
33 if not wmcfg.get('use_task_queue'):
8af2ea1f5c34 tasks: Add new `tasks` command and infrastructure, with `mention` task.
Ludovic Chabant <ludovic@chabant.com>
parents: 1111
diff changeset
34 g.site.runTask(task_id)
1111
98c7dd6ea4ac admin: Early version of webmention endpoint.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
35
1114
8af2ea1f5c34 tasks: Add new `tasks` command and infrastructure, with `mention` task.
Ludovic Chabant <ludovic@chabant.com>
parents: 1111
diff changeset
36 return make_response("Webmention queued.", 202, [])