def update_published_podcasts(request, username): User = get_user_model() user = get_object_or_404(User, username=username) published_podcasts = [pp.podcast for pp in user.publishedpodcast_set.all()] update_podcasts.delay([podcast.url for podcast in published_podcasts]) return HttpResponse('Updated:\n' + '\n'.join([p.url for p in published_podcasts]), content_type='text/plain')
def update_published_podcasts(request, username): user = User.get_user(username) if not user: raise Http404 published_podcasts = podcasts_by_id(user.published_objects) update_podcasts.delay([podcast.url for podcast in published_podcasts]) return HttpResponse('Updated:\n' + '\n'.join([p.url for p in published_podcasts]), mimetype='text/plain')
def update_published_podcasts(request, username): User = get_user_model() user = get_object_or_404(User, username=username) published_podcasts = [pp.podcast for pp in user.publishedpodcast_set.all()] update_podcasts.delay([podcast.url for podcast in published_podcasts]) return HttpResponse( 'Updated:\n' + '\n'.join([p.url for p in published_podcasts]), content_type='text/plain', )
def update_podcast(request, podcast): if not check_publisher_permission(request.user, podcast): return HttpResponseForbidden() update_podcasts.delay([podcast.url]) messages.success(request, _('The update has been scheduled. It might take some time until the results are visible.')) url = get_podcast_link_target(podcast, 'podcast-publisher-detail') return HttpResponseRedirect(url)
def post(self, request): url = request.POST.get('url', None) if not url: raise Http404 res = update_podcasts.delay([url]) return HttpResponseRedirect(reverse('add-podcast-status', args=[res.task_id]))
def add_podcast(request): # TODO what if the url doesn't have a valid podcast? url = normalize_feed_url( json.loads(request.body.decode('utf-8')).get('url', '')) # 404 before we query for url, because query would complain # about missing param if not url: raise Http404 try: # podcast exists, redirects Podcast.objects.get(urls__url=url) api_podcast_info_path = reverse('api-podcast-info') return HttpResponseRedirect(f'{api_podcast_info_path}?url={url}') except Podcast.DoesNotExist: # podcast doesn't exist, add new podcast res = update_podcasts.delay([url]) response = HttpResponse(status=202) job_status_path = reverse('api-add-podcast-status', kwargs={"job_id": res.task_id}) response['Location'] = f'{job_status_path}?url={url}' return response
def update_podcast(sender, **kwargs): """ update podcast in background when receiving pubsub-notification """ from mygpo.data.tasks import update_podcasts logger.info('updating podcast for "%s" after pubsub notification', sender) update_podcasts.delay([sender])