示例#1
0
def view_transform_tasks_list(request):
    u"""Show the transformation tasks list page."""
    try:
        data = get_request_data(request, accepted_keys=api_core.db_find_keys, qs_only_first_value=True, optional=True)
        tasks = remove_underscores(api_core.get_transform_tasks(**data))
        data.setdefault(u'skip', 50)  # ask for the last 50 media assets if skip is not provided
        for task in tasks:
            task.profile = remove_underscores(api_core.get_transform_profile(spec={u'_id': task.profile_id}))
            task.media_in = remove_underscores(api_core.get_media(spec={u'_id': task.media_in_id}))
            task.media_out = remove_underscores(api_core.get_media(spec={u'_id': task.media_out_id}))
            task.statistic[u'elapsed_time'] = secs_to_time(task.statistic.get(u'elapsed_time', 0)).strftime(u'%H:%M:%S')
            task.statistic[u'eta_time'] = secs_to_time(task.statistic.get(u'eta_time', 0)).strftime(u'%H:%M:%S')
        return {u'tasks': tasks, u'refresh_rate': 5}
    except Exception as e:
        logging.exception(e)
        return {u'errors': [unicode(e)], u'refresh_rate': 30}
示例#2
0
def api_media_id_delete(id=None, auth_user=None, api_core=None, request=None):
    u"""Remove a media asset from the shared storage and update informations about it (set status to DELETED)."""
    media = api_core.get_media(spec={u'_id': id})
    if not media:
        raise IndexError(to_bytes(u'No media asset with id {0}.'.format(id)))
    if auth_user._id != media.user_id:
        flask.abort(403, u'You are not allowed to delete media asset with id {0}.'.format(id))
    api_core.delete_media(media)
    return ok_200(u'The media asset "{0}" has been deleted.'.format(media.metadata[u'title']), include_properties=False)
示例#3
0
def get_medias(request, id):
    u"""Download a media asset."""
    try:
        media = api_core.get_media(spec={u'_id': id})
        if not media:
            return {u'errors': [u'Media with id {0} does not exist.'.format(id)]}
        return PlugItSendFile(media.api_uri, None, as_attachment=True, attachment_filename=media.filename)
    except Exception as e:
        logging.exception(e)
        return {u'errors': [unicode(e)]}
示例#4
0
def api_media_id_get(id=None, auth_user=None, api_core=None, request=None):
    u"""
    Return the informations about a media asset serialized to JSON.

    All ``thing_id`` fields are replaced by corresponding ``thing``.
    For example ``user_id`` is replaced by ``user``'s data.
    """
    media = api_core.get_media(spec={'_id': id}, load_fields=True)
    if not media:
        raise IndexError(to_bytes(u'No media asset with id {0}.'.format(id)))
    return ok_200(media, include_properties=True)
示例#5
0
def api_media_id_patch(id=None, auth_user=None, api_core=None, request=None):
    u"""Update the informations of a media asset (only metadata field can be updated)."""
    media = api_core.get_media(spec={u'_id': id})
    data = get_request_data(request, qs_only_first_value=True)
    if not media:
        raise IndexError(to_bytes(u'No media asset with id {0}.'.format(id)))
    if auth_user._id != media.user_id:
        flask.abort(403, u'You are not allowed to modify media asset with id {0}.'.format(id))
    if u'metadata' in data:
        media.metadata = data[u'metadata']
    api_core.save_media(media)
    return ok_200(u'The media asset "{0}" has been updated.'.format(media.filename), include_properties=False)
示例#6
0
def delete_medias(request, id):
    u"""Delete a media asset."""
    try:
        auth_user = request.args.get(u'ebuio_u_pk') or request.form.get(u'ebuio_u_pk')
        media = api_core.get_media(spec={u'_id': id})
        if not media:
            return {u'errors': [u'No media asset with id {0}.'.format(id)]}
        if auth_user != media.user_id:
            return {u'errors': [u'You are not allowed to delete media asset with id {0}.'.format(id)]}
        api_core.delete_media(media)
        return {u'infos': [u'The media asset "{0}" has been deleted.'.format(media.metadata[u'title'])]}
    except Exception as e:
        logging.exception(e)
        return {u'errors': [unicode(e)]}
示例#7
0
def api_media_id_head(id=None, auth_user=None, api_core=None, request=None):
    u"""Return the informations about a media asset serialized to JSON."""
    media = api_core.get_media(spec={u'_id': id})
    if not media:
        raise IndexError(to_bytes(u'No media asset with id {0}.'.format(id)))
    return ok_200(media, include_properties=True)