Skip to content
This repository has been archived by the owner on Mar 24, 2021. It is now read-only.

Commit

Permalink
Merge pull request #388 from alphagov/transforms-endpoint
Browse files Browse the repository at this point in the history
Add endpoint for invoking dataset transforms
  • Loading branch information
tombooth committed Dec 15, 2014
2 parents 12af5ce + c789547 commit c5d7b42
Showing 1 changed file with 35 additions and 0 deletions.
35 changes: 35 additions & 0 deletions backdrop/write/api.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
import datetime

from os import getenv
from celery import Celery

Expand Down Expand Up @@ -209,6 +211,39 @@ def delete_collection_by_data_set_name(data_set_name):
return jsonify(status='ok', message='Deleted {}'.format(data_set_name))


@app.route('/data/<data_group>/<data_type>/transform', methods=['POST'])
@cache_control.nocache
def transform_data_set(data_group, data_type):
"""
Runs all transforms on the specified data. _start_at and _end_at
are specify the date range to be used. _end_at defaults to now.
TODO: allow the transform to be specified.
"""

data_set_config = admin_api.get_data_set(data_group, data_type)
_validate_config(data_set_config)
_validate_auth(data_set_config)

try:
data = get_json_from_request(request)
except ValidationError as e:
return (jsonify(messages=[repr(e)]), 400)

if '_start_at' in data:
start_at = data['_start_at']
if '_end_at' in data:
end_at = data['_end_at']
else:
end_at = datetime.datetime.now()
else:
abort(400, 'You must specify a _start_at timestamp')

celery_app.send_task('backdrop.transformers.dispatch.entrypoint',
args=(data_set_config['name'], start_at, end_at))

return jsonify(status='ok')


def _allow_modify_collection(auth_header):
token = extract_bearer_token(auth_header)
if token == app.config['STAGECRAFT_COLLECTION_ENDPOINT_TOKEN']:
Expand Down

0 comments on commit c5d7b42

Please sign in to comment.