def added(request,adder_id=-1): logger = logging.getLogger('ohdei.adder.views.added') if not adder_id or adder_id == -1: logger.debug("no adder_id") try: pid = int(request.GET.get('pid', '-1')) logger.debug("pid %s" % pid) except ValueError: logger.debug("no pid") pid = -1 try: p = Permaginator(Adder.objects.order_by('id'), 25, 3) page = p.perma_page(pid) logger.debug("page OK") except Exception: logger.debug("no page") page = None return render_to_response('added.html', {'page':page}, context_instance=RequestContext(request)) else: adder_id = base58decode(adder_id) logger.debug("adder %s" % adder_id) try: adder = Adder.objects.get(id=adder_id) except ObjectDoesNotExist: logger.error("no adder with adder_id %s" % adder_id) raise Http404 try: download = Download.objects.filter(adder_id=adder_id)[0] # FIXME: show all related logger.debug("found download %s" % download.id) logger.debug("checking File") # the File object is created after the Celery task starts running, until that moment we got only a Donwload and no Files file = download.file_set.filter(file_number=1)[0] # FIXME: show all related logger.debug("found file %s" % file.id) result = Downloader.AsyncResult(file.task_id) state = result.state info = result.info logger.debug("task info: %s - %s" % (state, info, )) except IndexError: logger.debug("no download File yet") file = info = None state = 'NODOWNLOAD' except (ObjectDoesNotExist, IndexError): logger.error("no download with adder_id %s" % adder_id) file = info = None state = 'NODOWNLOAD' return render_to_response('added_show.html', {'state':state, 'info':info, 'file_link':str(download.id)}, context_instance=RequestContext(request))
def cancel_download(request, b58id=-1): logger = logging.getLogger('ohdei.adder.views.cancel_download') if not b58id or b58id == -1: logger.debug("no adder_id, nothing cancelled") raise Http404 else: adder_id = base58decode(b58id) logger.debug("cancelling download for adder %s" % b58id) try: download = Download.objects.get(adder_id=adder_id) logger.debug("found download %s" % download.id) logger.debug("checking file") file = download.file.filter(file_number=1)[0] logger.debug("download id is %s" % file.id) except ObjectDoesNotExist: logger.error("no download with adder_id %s, nothing cancelled" % b58id) raise Http404 if not file.task_id or file.task_id < 1: logger.error("no download task_id, nothing cancelled") raise Http404 logger.debug("cancelling download task %s" % download.task_id) file.cancel() logger.error("download cancelled") return HttpResponseRedirect("/added/%s" % b58id)