[PATCH] Show logged-in user's drafts for logged in user

2 views
Skip to first unread message

m...@nysv.org

unread,
Nov 23, 2009, 6:16:33 AM11/23/09
to byteflow...@googlegroups.com
# HG changeset patch
# User Markus Törnqvist <m...@nysv.org>
# Date 1258974921 0
# Branch mjt
# Node ID 602f864fdeb27ed359d6cb27049a685263e41a04
# Parent f3f9e490507ea98e5b20ba71ba9d1fa46f88674d
Show logged-in user's drafts for logged in user
while hiding future publications.

diff --git a/apps/blog/views.py b/apps/blog/views.py
--- a/apps/blog/views.py
+++ b/apps/blog/views.py
@@ -26,6 +26,8 @@
from tagging.views import tagged_object_list
from render import render

+from django.db.models import Q
+
def _get_reply_to(request):
try:
return int(request.GET.get('reply_to', None))
@@ -35,7 +37,15 @@

def post_list(request, *args, **kwargs):
"""Post listing. Only shows posts that are older than now()"""
- kwargs['queryset'] = Post.objects.exclude(date__gt=dt.now())
+
+ if request.user.id:
+ # the OR clause includes logged-in user's drafts as well
+ q_lookup = (Q(is_draft=False) | Q(author=request.user))
+ # exclude future posts on the premise that drafts are always current
+ kwargs['queryset'] = Post.whole_objects.filter(q_lookup).exclude(date__gt=dt.now())
+ else:
+ kwargs['queryset'] = Post.objects.exclude(date__gt=dt.now())
+
return object_list(request, *args, **kwargs)


Alexander Solovyov

unread,
Nov 23, 2009, 6:32:43 AM11/23/09
to byteflow...@googlegroups.com
> +    if request.user.id:
> +        # the OR clause includes logged-in user's drafts as well
> +        q_lookup = (Q(is_draft=False) | Q(author=request.user))
> +        # exclude future posts on the premise that drafts are always current
> +        kwargs['queryset'] = Post.whole_objects.filter(q_lookup).exclude(date__gt=dt.now())
> +    else:
> +        kwargs['queryset'] = Post.objects.exclude(date__gt=dt.now())

This can be rewritten as:

if request.user.id:
qs = ...
else:
qs = Post.objects
kwargs['queryset'] = qs.exclude(date...)

This will keep us DRY. ;-)

--
Alexander

m...@nysv.org

unread,
Nov 23, 2009, 6:44:08 AM11/23/09
to byteflow...@googlegroups.com
# HG changeset patch
# User Markus Törnqvist <m...@nysv.org>
# Date 1258976632 0
# Branch mjt
# Node ID f80d50cd6bf388eb8d41a6ba5554ffa0a8174c3b

# Parent f3f9e490507ea98e5b20ba71ba9d1fa46f88674d
Show logged-in user's drafts for logged in user
while hiding future publications.

diff --git a/apps/blog/views.py b/apps/blog/views.py
--- a/apps/blog/views.py
+++ b/apps/blog/views.py
@@ -26,6 +26,8 @@
from tagging.views import tagged_object_list
from render import render

+from django.db.models import Q
+
def _get_reply_to(request):
try:
return int(request.GET.get('reply_to', None))

@@ -35,7 +37,18 @@



def post_list(request, *args, **kwargs):
"""Post listing. Only shows posts that are older than now()"""
- kwargs['queryset'] = Post.objects.exclude(date__gt=dt.now())
+
+

+ if request.user.id:
+ # the OR clause includes logged-in user's drafts as well
+ q_lookup = (Q(is_draft=False) | Q(author=request.user))

+ qs = Post.whole_objects.filter(q_lookup)
+ else:
+ qs = Post.objects
+
+ # hide all posts that are not yet published
+ kwargs['queryset'] = qs.exclude(date__gt=dt.now())

Markus Törnqvist

unread,
Nov 23, 2009, 6:51:06 AM11/23/09
to byteflow...@googlegroups.com
On Mon, Nov 23, 2009 at 01:32:43PM +0200, Alexander Solovyov wrote:
>
>This can be rewritten as:
>
> if request.user.id:
> qs = ...
> else:
> qs = Post.objects
> kwargs['queryset'] = qs.exclude(date...)
>
>This will keep us DRY. ;-)

I'm not a huge fan of assigning the manager instance as if it was
the query set, but I submitted a patch like that.

Thanks!

--
mjt

Yuri Baburov

unread,
Nov 23, 2009, 7:08:03 AM11/23/09
to byteflow...@googlegroups.com
else:
qs = Post.objects.all() would be better, no?

--
Best regards, Yuri V. Baburov, ICQ# 99934676, Skype: yuri.baburov,
MSN: bu...@live.com

Markus Törnqvist

unread,
Nov 23, 2009, 7:44:13 AM11/23/09
to byteflow...@googlegroups.com
On Mon, Nov 23, 2009 at 06:08:03PM +0600, Yuri Baburov wrote:
>
>else:
> qs = Post.objects.all() would be better, no?

Maybe.

I'll cook up a patch like that if requested, but I'm kinda busy with
other stuff now.

Still I think the last one is good enough :)

--
mjt

Reply all
Reply to author
Forward
0 new messages