def video_scan(request): lang = json.loads(request.body or "{}").get("lang", "en") force_job("videoscan", _("Scan for Videos"), language=lang) return JsonResponseMessageSuccess(_("Scanning for videos started."))
def retry_video_download(request): """ Clear any video still accidentally marked as in-progress, and restart the download job. """ VideoFile.objects.filter(download_in_progress=True).update(download_in_progress=False, percent_complete=0) force_job("videodownload", _("Download Videos"), locale=request.language) return JsonResponseMessageSuccess(_("Launched video download process successfully."))
def cancel_video_download(request): force_job("videodownload", stop=True) queue = VideoQueue() queue.clear() return JsonResponseMessageSuccess(_("Cancelled video download process successfully."))
def start_languagepack_download(request): if not request.method == 'POST': raise Exception(_("Must call API endpoint with POST verb.")) data = json.loads(request.raw_post_data) # Django has some weird post processing into request.POST, so use .body lang_code = lcode_to_ietf(data['lang']) force_job('languagepackdownload', _("Language pack download"), lang_code=lang_code, locale=request.language) return JsonResponseMessageSuccess(_("Successfully started language pack download for %(lang_name)s.") % {"lang_name": get_language_name(lang_code)})
def retry_video_download(request): """ Clear any video still accidentally marked as in-progress, and restart the download job. """ VideoFile.objects.filter(download_in_progress=True).update( download_in_progress=False, percent_complete=0) force_job("videodownload", _("Download Videos"), locale=request.language) return JsonResponseMessageSuccess( _("Launched video download process successfully."))
def cancel_video_download(request): # clear all download in progress flags, to make sure new downloads will go through VideoFile.objects.all().update(download_in_progress=False) # unflag all video downloads VideoFile.objects.filter(flagged_for_download=True).update(cancel_download=True, flagged_for_download=False, download_in_progress=False) force_job("videodownload", stop=True, locale=request.language) return JsonResponseMessageSuccess(_("Cancelled video download process successfully."))
def cancel_video_download(request): # clear all download in progress flags, to make sure new downloads will go through VideoFile.objects.all().update(download_in_progress=False) # unflag all video downloads VideoFile.objects.filter(flagged_for_download=True).update( cancel_download=True, flagged_for_download=False, download_in_progress=False) force_job("videodownload", stop=True, locale=request.language) return JsonResponseMessageSuccess( _("Cancelled video download process successfully."))
def start_languagepack_download(request): if not request.method == 'POST': raise Exception(_("Must call API endpoint with POST verb.")) data = json.loads( request.raw_post_data ) # Django has some weird post processing into request.POST, so use .body lang_code = lcode_to_ietf(data['lang']) force_job('languagepackdownload', _("Language pack download"), lang_code=lang_code, locale=request.language) return JsonResponseMessageSuccess( _("Successfully started language pack download for %(lang_name)s.") % {"lang_name": get_language_name(lang_code)})
def start_video_download(request): """ API endpoint for launching the videodownload job. """ force_job("videodownload", stop=True, locale=request.language) paths = OrderedSet(json.loads(request.body or "{}").get("paths", [])) lang = json.loads(request.body or "{}").get("lang", "en") youtube_ids = get_download_youtube_ids(paths, language=lang, downloaded=False) queue = VideoQueue() queue.add_files(youtube_ids, language=lang) force_job("videodownload", _("Download Videos"), locale=lang) return JsonResponseMessageSuccess(_("Launched video download process successfully."))
def start_video_download(request): """ API endpoint for launching the videodownload job. """ youtube_ids = OrderedSet(simplejson.loads(request.body or "{}").get("youtube_ids", [])) # One query per video (slow) video_files_to_create = [id for id in youtube_ids if not get_object_or_None(VideoFile, youtube_id=id)] # OK to do bulk_create; cache invalidation triggered via save download for lang_code, lang_youtube_ids in divide_videos_by_language(video_files_to_create).iteritems(): VideoFile.objects.bulk_create([VideoFile(youtube_id=id, flagged_for_download=True, language=lang_code) for id in lang_youtube_ids]) # OK to update all, since we're not setting all props above. # One query per chunk for chunk in break_into_chunks(youtube_ids): video_files_needing_model_update = VideoFile.objects.filter(download_in_progress=False, youtube_id__in=chunk).exclude(percent_complete=100) video_files_needing_model_update.update(percent_complete=0, cancel_download=False, flagged_for_download=True) force_job("videodownload", _("Download Videos"), locale=request.language) return JsonResponseMessageSuccess(_("Launched video download process successfully."))
def start_video_download(request): force_job("videodownload", stop=True, locale=request.language) """ API endpoint for launching the videodownload job. """ youtube_ids = OrderedSet( simplejson.loads(request.body or "{}").get("youtube_ids", [])) # One query per video (slow) video_files_to_create = [ id for id in youtube_ids if not get_object_or_None(VideoFile, youtube_id=id) ] # OK to do bulk_create; cache invalidation triggered via save download for lang_code, lang_youtube_ids in divide_videos_by_language( video_files_to_create).iteritems(): VideoFile.objects.bulk_create([ VideoFile(youtube_id=id, flagged_for_download=True, language=lang_code) for id in lang_youtube_ids ]) # OK to update all, since we're not setting all props above. # One query per chunk for chunk in break_into_chunks(youtube_ids): video_files_needing_model_update = VideoFile.objects.filter( download_in_progress=False, youtube_id__in=chunk).exclude(percent_complete=100) video_files_needing_model_update.update(percent_complete=0, cancel_download=False, flagged_for_download=True) force_job("videodownload", _("Download Videos"), locale=request.language) return JsonResponseMessageSuccess( _("Launched video download process successfully."))
def setup_backup(): force_job("kalitebackup", frequency="DAILY")
def initialize_registration(): force_job("syncmodels", "Secure Sync", "HOURLY") # now launches asynchronously
def force_sync(request): """ """ force_job("syncmodels") # now launches asynchronously return JsonResponse({})