def discover_exclude(request): """Discover new reads page.""" ids = followed_ids(request) ids.append(request.user.pk) readings = Reading.objects.all().exclude(user__pk__in=ids).order_by("-created") d = {"objects": page(request, readings, 10), "title": "Discover"} return render_to_response("readings/feed.html", d, context_instance=RequestContext(request))
def feed(request): """Home page, show all readings from users.""" # delete any friendly forwarding saved urls if request.session.get("next"): del request.session["next"] # if user is logged out if request.user.is_anonymous(): # show all readings in random order # day = datetime.date.today() - timedelta(days=28) # readings = Reading.objects.all().filter( # created__gte=day).order_by('?') # show first 10 readings readings = Reading.objects.all().order_by("-created")[:10] # if user is logged in else: # show readings from the users feed readings = request.user.profile.read_feed() # if no readings exist for feed, redirect to discover page if not readings: return HttpResponseRedirect(reverse("readings.views.discover")) d = {"title": "Skimreads"} if request.user.is_anonymous(): d["form"] = SignUpForm() d["objects"] = readings[0:10] else: d["objects"] = page(request, readings, 10) return render_to_response("readings/feed.html", d, context_instance=RequestContext(request))
def list_user(request, slug): """Readings for a single user.""" profile = get_object_or_404(Profile, slug=slug) user = User.objects.get(pk=profile.user_id) readings = Reading.objects.filter(user=user).order_by("-created") d = { "current_pk": user.pk, "objects": page(request, readings, 10), "profile_user": user, "title": "%s Reads" % user.first_name, } return render_to_response("readings/feed.html", add_csrf(request, d), context_instance=RequestContext(request))
def category(request, slug, category): """ Show all readings that user has commented, faved, added a note, tagged, or voted on. """ profile = get_object_or_404(Profile, slug=slug) user = profile.user if category == 'comments': if profile.comment_reply_count() == 0: return HttpResponseRedirect(reverse('readings.views.list_user', args=[profile.slug])) li = [comment.note.reading for comment in user.comment_set.all()] li += [reply.comment.note.reading for reply in user.reply_set.all()] li = set(li) title = 'Commented' if category == 'favorites': if profile.favorite_count() == 0: return HttpResponseRedirect(reverse('readings.views.list_user', args=[profile.slug])) li = set([fave.reading for fave in user.favorite_set.all()]) title = 'Favorite' if category == 'notes': if profile.note_count() == 0: return HttpResponseRedirect(reverse('readings.views.list_user', args=[profile.slug])) li = set([note.reading for note in user.note_set.all()]) title = 'Noted' if category == 'tags': if profile.tie_count() == 0: return HttpResponseRedirect(reverse('readings.views.list_user', args=[profile.slug])) li = set([tie.reading for tie in user.tie_set.all()]) title = 'Tagged' if category == 'votes': if profile.vote_count() == 0: return HttpResponseRedirect(reverse('readings.views.list_user', args=[profile.slug])) li = set([vote.note.reading for vote in user.vote_set.all()]) title = 'Voted' readings = reading_sorted(li) d = { 'current_pk': user.pk, 'objects': page(request, readings, 10), 'profile_user': user, 'title': "%s's %s Readings" % (user.first_name, title), } return render_to_response('readings/feed.html', add_csrf(request, d), context_instance=RequestContext(request))
def detail(request, slug): """Show all readings for a single tag.""" tag = get_object_or_404(Tag, slug=slug) readings = tag.readings() d = {"objects": page(request, readings, 10), "tag": tag, "title": "%s Reads" % tag.name.capitalize()} return render_to_response("readings/feed.html", add_csrf(request, d), context_instance=RequestContext(request))
def discover(request): """Show all reads.""" readings = Reading.objects.all().order_by("-created") d = {"discover": True, "objects": page(request, readings, 10), "title": "Discover"} return render_to_response("readings/feed.html", d, context_instance=RequestContext(request))