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}
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)
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)]}
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)
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)
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)]}
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)