Example #1
0
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,
        }
    )
Example #2
0
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,
        })
Example #3
0
def home(request):
    http_host = request.META['HTTP_HOST']

    if http_host == 'bearblog.dev' or http_host == 'www.bearblog.dev' or http_host == 'localhost:8000':
        return render(request, 'landing.html')
    elif 'bearblog.dev' in http_host or 'localhost:8000' in http_host:
        extracted = tldextract.extract(http_host)
        blog = get_object_or_404(Blog, subdomain=extracted.subdomain)
        root = get_root(blog.subdomain)
    else:
        blog = get_object_or_404(Blog, domain=http_host)
        root = http_host

    all_posts = blog.post_set.filter(publish=True).order_by('-published_date')

    content = markdown(blog.content, extensions=['fenced_code'])

    return render(
        request, 'home.html', {
            'blog': blog,
            'content': content,
            'posts': get_posts(all_posts),
            'nav': get_nav(all_posts),
            'root': root,
            'meta_description': unmark(blog.content)[:160]
        })
Example #4
0
def post(request, slug):
    http_host = request.META['HTTP_HOST']

    if http_host == 'bearblog.dev' or http_host == 'localhost:8000':
        return redirect('/')
    elif 'bearblog.dev' in http_host or 'localhost:8000' in http_host:
        extracted = tldextract.extract(http_host)
        if is_protected(extracted.subdomain):
            return redirect(get_base_root(extracted))

        blog = get_object_or_404(Blog, subdomain=extracted.subdomain)
        root = get_root(extracted, blog.subdomain)
    else:
        blog = get_object_or_404(Blog, domain=http_host)
        root = http_host

    if request.GET.get('preview'):
        all_posts = blog.post_set.all().order_by('-published_date')
    else:
        all_posts = blog.post_set.filter(
            publish=True).order_by('-published_date')

    post = get_post(all_posts, slug)

    content = markdown(post.content, extensions=['fenced_code'])

    return render(
        request, 'post.html', {
            'blog': blog,
            'content': content,
            'post': post,
            'nav': get_nav(all_posts),
            'root': root,
            'meta_description': unmark(post.content)[:160]
        })
Example #5
0
def subscribe(request):
    blog = resolve_address(request)
    if not blog:
        return not_found(request)

    subscribe_message = ""
    if request.method == "POST":
        if request.POST.get("email", "") and not request.POST.get("name", ""):
            email = request.POST.get("email", "")
            subscriber_dupe = Subscriber.objects.filter(blog=blog,
                                                        email_address=email)
            if not subscriber_dupe:
                validate_subscriber_email(email, blog)
                subscribe_message = "Check your email to confirm your subscription."
            else:
                subscribe_message = "You are already subscribed."

    all_posts = blog.post_set.filter(publish=True).order_by('-published_date')

    return render(
        request, 'subscribe.html', {
            'blog': blog,
            'nav': get_nav(all_posts),
            'root': blog.useful_domain(),
            'subscribe_message': subscribe_message
        })
Example #6
0
def posts(request):
    http_host = request.META['HTTP_HOST']

    if http_host == 'bearblog.dev' or http_host == 'localhost:8000':
        return redirect('/')
    elif 'bearblog.dev' in http_host or 'localhost:8000' in http_host:
        extracted = tldextract.extract(http_host)
        if is_protected(extracted.subdomain):
            return redirect(get_base_root(extracted))

        blog = get_object_or_404(Blog, subdomain=extracted.subdomain)
        root = get_root(extracted, blog.subdomain)
    else:
        blog = get_object_or_404(Blog, domain=http_host)
        root = http_host

    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': root,
            'meta_description': unmark(blog.content)[:160]
        })
Example #7
0
def post(request, slug):
    http_host = request.META['HTTP_HOST']

    if http_host == 'bearblog.dev' or http_host == 'localhost:8000':
        return redirect('/')
    elif 'bearblog.dev' in http_host or 'localhost:8000' in http_host:
        extracted = tldextract.extract(http_host)
        if is_protected(extracted.subdomain):
            return redirect(get_base_root(extracted))

        blog = get_object_or_404(Blog, subdomain=extracted.subdomain)
        root = get_root(extracted, blog.subdomain)
    else:
        blog = get_object_or_404(Blog, domain=http_host)
        root = http_host

    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 = markdown(post.content, extensions=['fenced_code'])

    return render(
        request, 'post.html', {
            'blog': blog,
            'content': content,
            'post': post,
            'nav': get_nav(all_posts),
            'root': root,
            'meta_description': unmark(post.content)[:160],
            'upvoted': upvoted
        })
Example #8
0
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')

    return render(
        request, 'home.html', {
            'blog': blog,
            'content': blog.content,
            'posts': get_posts(all_posts),
            'nav': get_nav(all_posts),
            'root': blog.useful_domain(),
        })
Example #9
0
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]
        })
Example #10
0
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
        })
Example #11
0
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),
            'nav': get_nav(all_posts),
            'root': blog.useful_domain(),
            'meta_description': meta_description
        })
Example #12
0
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 = request.POST.get("pk", "")
            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,
            'nav': get_nav(all_posts),
            'root': blog.useful_domain(),
            'meta_description': meta_description,
            'upvoted': upvoted
        })
Example #13
0
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]
        })
Example #14
0
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,
            'nav': get_nav(all_posts),
            'root': blog.useful_domain(),
            'meta_description': meta_description,
            'tags': tags,
            'query': query,
        })