Adds direct messages UI

This commit is contained in:
Mouse Reeve
2020-12-13 16:16:12 -08:00
parent 4fcdbe5299
commit 943d97c0bc
4 changed files with 78 additions and 2 deletions

View File

@ -113,11 +113,36 @@ def get_suggested_books(user, max_books=5):
return suggested_books
@login_required
@require_GET
def direct_messages_page(request, page=1):
''' like a feed but for dms only '''
activities = get_activity_feed(request.user, 'direct')
paginated = Paginator(activities, PAGE_LENGTH)
activity_page = paginated.page(page)
prev_page = next_page = None
if activity_page.has_next():
next_page = '/direct-message/?page=%d#feed' % \
activity_page.next_page_number()
if activity_page.has_previous():
prev_page = '/direct-messages/?page=%d#feed' % \
activity_page.previous_page_number()
data = {
'title': 'Direct Messages',
'user': request.user,
'activities': activity_page.object_list,
'next': next_page,
'prev': prev_page,
}
return TemplateResponse(request, 'direct_messages.html', data)
def get_activity_feed(user, filter_level, model=models.Status):
''' get a filtered queryset of statuses '''
# status updates for your follow network
if user.is_anonymous:
user = None
if user:
following = models.User.objects.filter(
Q(followers=user) | Q(id=user.id)
@ -135,6 +160,16 @@ def get_activity_feed(user, filter_level, model=models.Status):
'-published_date'
)
if filter_level == 'direct':
return activities.filter(
Q(user=user) | Q(mention_users=user),
privacy='direct'
)
# never show DMs in the regular feed
activities = activities.filter(~Q(privacy='direct'))
if hasattr(activities, 'select_subclasses'):
activities = activities.select_subclasses()