def feed(request): address_info = resolve_address(request) if not address_info: return redirect('/') blog = address_info['blog'] root = address_info['root'] all_posts = blog.post_set.filter(publish=True, is_page=False).order_by('-published_date') fg = FeedGenerator() fg.id(f'{root}/') fg.author({'name': blog.subdomain, 'email': 'hidden'}) fg.title(blog.title) fg.subtitle(unmark(blog.content)[:160]) fg.link(href=f"{root}/feed/", rel='self') fg.link(href=root, rel='alternate') for post in all_posts: fe = fg.add_entry() fe.id(f"{root}/{post.slug}") fe.title(post.title) fe.author({'name': blog.subdomain, 'email': 'hidden'}) fe.link(href=f"{root}/feed") fe.content(unmark(post.content)) atomfeed = fg.atom_str(pretty=True) return HttpResponse(atomfeed, content_type='application/atom+xml')
def feed(request): address_info = resolve_address(request) if not address_info: return redirect('/') blog = address_info['blog'] root = address_info['root'] all_posts = blog.post_set.filter(publish=True, is_page=False).order_by('-published_date') fg = FeedGenerator() fg.id(f'http://{root}/') fg.author({'name': blog.subdomain, 'email': blog.user.email}) fg.title(blog.title) fg.subtitle(unmark(blog.content)[:160]) fg.link(href=f"http://{root}/", rel='alternate') for post in all_posts: fe = fg.add_entry() fe.id(f"http://{root}/{post.slug}/") fe.title(post.title) fe.author({'name': blog.subdomain, 'email': blog.user.email}) fe.link(href=f"http://{root}/feed/") fe.content(unmark(post.content)) fe.updated(post.published_date) if request.GET.get('type') == 'rss': fg.link(href=f"http://{root}/feed/?type=rss", rel='self') rssfeed = fg.rss_str(pretty=True) return HttpResponse(rssfeed, content_type='application/rss+xml') else: fg.link(href=f"http://{root}/feed/", rel='self') atomfeed = fg.atom_str(pretty=True) return HttpResponse(atomfeed, content_type='application/atom+xml')
def posts(request): address_info = resolve_address(request) if not address_info: return redirect('/') blog = address_info['blog'] query = request.GET.get('q', '') if query: try: tag = Tag.objects.get(name=query) all_posts = blog.post_set.filter(tags=tag, publish=True).order_by('-published_date') except Tag.DoesNotExist: all_posts = [] else: all_posts = blog.post_set.filter(publish=True).order_by('-published_date') tags = [] for post in all_posts: tags += post.tags.most_common()[:10] tags = list(dict.fromkeys(tags)) return render( request, 'posts.html', { 'blog': blog, 'posts': get_posts(all_posts), 'nav': get_nav(all_posts), 'root': address_info['root'], 'meta_description': unmark(blog.content)[:160], 'tags': tags, 'query': query, } )
def posts(request): address_info = resolve_address(request) if not address_info: return redirect('/') blog = address_info['blog'] query = request.GET.get('q', '') if query: all_posts = blog.post_set.filter( Q(publish=True) & Q(content__icontains=query)).order_by('-published_date') else: all_posts = blog.post_set.filter( publish=True).order_by('-published_date') if blog.hashtags: hashtags = json.loads(blog.hashtags) else: hashtags = [] return render( request, 'posts.html', { 'blog': blog, 'posts': get_posts(all_posts), 'nav': get_nav(all_posts), 'root': address_info['root'], 'meta_description': unmark(blog.content)[:160], 'hashtags': hashtags, 'query': query, })
def posts(request): blog = resolve_address(request) if not blog: return not_found(request) query = request.GET.get('q', '') if query: try: tag = Tag.objects.get(name=query) all_posts = blog.post_set.filter( tags=tag, publish=True).order_by('-published_date') except Tag.DoesNotExist: all_posts = [] blog_posts = all_posts else: all_posts = blog.post_set.filter( publish=True).order_by('-published_date') blog_posts = get_posts(all_posts) tags = [] for post in all_posts: tags += post.tags.most_common()[:10] tags = list(dict.fromkeys(tags)) meta_description = blog.meta_description or unmark(blog.content)[:160] return render( request, 'posts.html', { 'blog': blog, 'posts': blog_posts, 'root': blog.useful_domain(), 'meta_description': meta_description, 'tags': tags, 'query': query, })
def feed(request): blog = resolve_address(request) if not blog: raise Http404("Blog does not exist") all_posts = blog.post_set.filter(publish=True, is_page=False).order_by('-published_date') fg = FeedGenerator() fg.id(blog.useful_domain()) fg.author({'name': blog.subdomain, 'email': 'hidden'}) fg.title(blog.title) fg.subtitle(blog.meta_description or clean_text(unmark(blog.content)[:160]) or blog.title) fg.link(href=f"{blog.useful_domain()}/", rel='alternate') for post in all_posts: fe = fg.add_entry() fe.id(f"{blog.useful_domain()}/{post.slug}/") fe.title(post.title) fe.author({'name': blog.subdomain, 'email': 'hidden'}) fe.link(href=f"{blog.useful_domain()}/{post.slug}/") fe.content(clean_text(mistune.html(post.content)), type="html") fe.published(post.published_date) fe.updated(post.published_date) if request.GET.get('type') == 'rss': fg.link(href=f"{blog.useful_domain()}/feed/?type=rss", rel='self') rssfeed = fg.rss_str(pretty=True) return HttpResponse(rssfeed, content_type='application/rss+xml') else: fg.link(href=f"{blog.useful_domain()}/feed/", rel='self') atomfeed = fg.atom_str(pretty=True) return HttpResponse(atomfeed, content_type='application/atom+xml')
def posts(request): address_info = resolve_address(request) if not address_info: return redirect('/') blog = address_info['blog'] all_posts = blog.post_set.filter(publish=True).order_by('-published_date') return render( request, 'posts.html', { 'blog': blog, 'posts': get_posts(all_posts), 'nav': get_nav(all_posts), 'root': address_info['root'], 'meta_description': unmark(blog.content)[:160] })
def home(request): blog = resolve_address(request) if not blog: return render(request, 'landing.html') all_posts = blog.post_set.filter(publish=True).order_by('-published_date') meta_description = blog.meta_description or unmark(blog.content)[:160] return render( request, 'home.html', { 'blog': blog, 'content': blog.content, 'posts': get_posts(all_posts), 'root': blog.useful_domain(), 'meta_description': meta_description })
def post(request, slug): address_info = resolve_address(request) if not address_info: return redirect('/') blog = address_info['blog'] ip_address = client_ip(request) if request.method == "POST": upvoted_pose = get_object_or_404(Post, blog=blog, slug=slug) posts_upvote_dupe = upvoted_pose.upvote_set.filter( ip_address=ip_address) if len(posts_upvote_dupe) == 0: upvote = Upvote(post=upvoted_pose, ip_address=ip_address) upvote.save() if request.GET.get('preview'): all_posts = blog.post_set.annotate( upvote_count=Count('upvote')).all().order_by('-published_date') else: all_posts = blog.post_set.annotate( upvote_count=Count('upvote')).filter( publish=True).order_by('-published_date') post = get_post(all_posts, slug) upvoted = False for upvote in post.upvote_set.all(): if upvote.ip_address == ip_address: upvoted = True content = mistune.html(post.content) return render( request, 'post.html', { 'blog': blog, 'content': content, 'post': post, 'nav': get_nav(all_posts), 'root': address_info['root'], 'meta_description': unmark(post.content)[:160], 'upvoted': upvoted })
def post(request, slug): blog = resolve_address(request) if not blog: return not_found(request) ip_address = client_ip(request) if request.method == "POST": if request.POST.get("pk", ""): # Upvoting pk = sanitise_int(request.POST.get("pk", ""), 7) post = get_object_or_404(Post, pk=pk) posts_upvote_dupe = post.upvote_set.filter(ip_address=ip_address) if len(posts_upvote_dupe) == 0: upvote = Upvote(post=post, ip_address=ip_address) upvote.save() if request.GET.get('preview'): all_posts = blog.post_set.annotate( upvote_count=Count('upvote')).all().order_by('-published_date') else: all_posts = blog.post_set.annotate( upvote_count=Count('upvote')).filter( publish=True).order_by('-published_date') post = get_post(all_posts, slug) upvoted = False for upvote in post.upvote_set.all(): if upvote.ip_address == ip_address: upvoted = True meta_description = post.meta_description or unmark(post.content)[:160] return render( request, 'post.html', { 'blog': blog, 'content': post.content, 'post': post, 'root': blog.useful_domain(), 'meta_description': meta_description, 'meta_image': post.meta_image or blog.meta_image, 'upvoted': upvoted })
def home(request): address_info = resolve_address(request) if not address_info: return render(request, 'landing.html') blog = address_info['blog'] all_posts = blog.post_set.filter(publish=True).order_by('-published_date') content = mistune.html(blog.content) return render( request, 'home.html', { 'blog': blog, 'content': content, 'posts': get_posts(all_posts), 'nav': get_nav(all_posts), 'root': address_info['root'], 'meta_description': unmark(blog.content)[:160] })