1 from .models import Feed, Entry, Subscription, UserEntry
2 from django.shortcuts import render_to_response
3 from django.template import RequestContext
4 from django.http import HttpResponse
5 from django.contrib.auth.decorators import login_required
6 from django.utils import simplejson as json
7 from django.db.models import Q
8 from .utils import add_feed, unread_count
13 return render_to_response('reader/lib.js', context_instance=RequestContext(request), mimetype='text/javascript')
18 return render_to_response('reader/home.html', {
19 'entries': Entry.objects.filter(feed__subscriptions__user=request.user),
20 'feeds': Feed.objects.filter(subscriptions__user=request.user),
21 }, context_instance=RequestContext(request))
25 def get_subscriptions(request):
27 for subscription in Subscription.objects.filter(user=request.user):
29 'id': subscription.pk,
31 'title': subscription.title,
32 'unread': unread_count(request.user, feed=subscription.feed)
37 'title': 'All Entries',
38 'unread': unread_count(request.user),
43 'title': 'Unread Entries',
44 'unread': unread_count(request.user),
46 root.sort(key=lambda sub: sub['id'])
48 return HttpResponse(json.dumps({'len': len(root), 'root': root}), mimetype='application/json')
52 def add_subscription(request):
54 url = request.POST['url']
55 add_feed(url, user=request.user)
62 def get_entries(request):
63 if 'subscription_id' in request.POST:
64 subscription_id = str(request.POST['subscription_id'])
65 if subscription_id == '-2':
66 entries = Entry.objects.filter(feed__subscriptions__user=request.user)
67 elif subscription_id == '-1':
68 entries = Entry.objects.filter(feed__subscriptions__user=request.user).exclude(userentries__user=request.user, userentries__read=True)
69 elif subscription_id.startswith('tag:'):
73 subscription = Subscription.objects.get(user=request.user, id=subscription_id)
74 entries = subscription.feed.entries.all()
75 except Subscription.DoesNotExist:
85 'date': entry.published.isoformat(),
86 'content': entry.content if entry.content else entry.summary,
87 'link': entry.link if entry.link else entry.feed.link,
89 root.sort(key=lambda entry: entry['date'])
92 return HttpResponse(json.dumps({'len': len(root), 'root': root}), mimetype='application/json')
96 def read_entry(request):
97 if 'entry_id' in request.POST:
98 entry = Entry.objects.get(id=request.POST['entry_id'])
99 userentry, created = UserEntry.objects.get_or_create(entry=entry, user=request.user, defaults={ 'read': True })
101 userentry.read = True
106 return HttpResponse()