Example #1
0
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))
Example #2
0
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)