From 6b7749b6be811f8a1ef705139a21bbab98a5b796 Mon Sep 17 00:00:00 2001 From: Raymond Yee Date: Fri, 25 Jul 2014 13:49:12 -0700 Subject: [PATCH] in active_campaigns feed, exclude books w/o ebooks --- api/opds.py | 3 +- notebooks/opds.ipynb | 103 +++++++++++++++++++++++++------------------ 2 files changed, 61 insertions(+), 45 deletions(-) diff --git a/api/opds.py b/api/opds.py index 32b73796..3a4a8cea 100644 --- a/api/opds.py +++ b/api/opds.py @@ -131,7 +131,8 @@ class active_campaigns(Facet): """ title = "Unglue.it Catalog: Books under Active Campaign" feed_path = "active_campaigns" - works = models.Work.objects.filter(campaigns__status='ACTIVE').order_by('-created') + works = models.Work.objects.filter(campaigns__status='ACTIVE', + editions__ebooks__isnull=False).distinct().order_by('-created') description= "With your help we're raising money to make these books free to the world." def opds_feed_for_works(works, feed_path, title="Unglue.it Catalog"): diff --git a/notebooks/opds.ipynb b/notebooks/opds.ipynb index fa52d4f7..94e82a63 100644 --- a/notebooks/opds.ipynb +++ b/notebooks/opds.ipynb @@ -1,7 +1,7 @@ { "metadata": { "name": "", - "signature": "sha256:9c22749755ac63be304b4d1975df24fa2f5ae6afb32dd56374a060df17645c96" + "signature": "sha256:79e7f4505df4df7b3f16885d4d975832795dea0dd4b4d0790179dc25b15f8eee" }, "nbformat": 3, "nbformat_minor": 0, @@ -637,17 +637,7 @@ ], "language": "python", "metadata": {}, - "outputs": [ - { - "metadata": {}, - "output_type": "pyout", - "prompt_number": 18, - "text": [ - "['http://127.0.0.1:8000/download_ebook/1317/']" - ] - } - ], - "prompt_number": 18 + "outputs": [] }, { "cell_type": "heading", @@ -675,17 +665,7 @@ ], "language": "python", "metadata": {}, - "outputs": [ - { - "metadata": {}, - "output_type": "pyout", - "prompt_number": 30, - "text": [ - "'https://unglue.it/download_ebook/906/?feed=opds'" - ] - } - ], - "prompt_number": 30 + "outputs": [] }, { "cell_type": "heading", @@ -704,17 +684,7 @@ ], "language": "python", "metadata": {}, - "outputs": [ - { - "metadata": {}, - "output_type": "pyout", - "prompt_number": 32, - "text": [ - "[, , , , , , , , , , , ]" - ] - } - ], - "prompt_number": 32 + "outputs": [] }, { "cell_type": "code", @@ -724,17 +694,62 @@ ], "language": "python", "metadata": {}, - "outputs": [ - { - "metadata": {}, - "output_type": "pyout", - "prompt_number": 34, - "text": [ - "[, , , , , , , , , , , ]" - ] - } + "outputs": [] + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "must exclude campaigns without ebooks" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "from regluit.core import models\n", + "from django.db.models import Q\n", + "\n", + "len(models.Work.objects.filter(campaigns__status='ACTIVE').order_by('-created'))" ], - "prompt_number": 34 + "language": "python", + "metadata": {}, + "outputs": [] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "works = models.Work.objects.filter(campaigns__status='ACTIVE',\n", + " editions__ebooks__isnull=False).distinct().order_by('-created')\n", + "[w.ebooks() for w in works]" + ], + "language": "python", + "metadata": {}, + "outputs": [] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "works = Work.objects.all()\n", + "work = works[0]\n", + "work.ebooks()" + ], + "language": "python", + "metadata": {}, + "outputs": [] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "models.Work.objects.filter(work)" + ], + "language": "python", + "metadata": {}, + "outputs": [] }, { "cell_type": "heading",