'Filter objects so only the ones with a user\'s reading access
are included'

def can_read(self, user):

    if user.has_perm(u'wiki.moderate'):
        return self
    if user.is_anonymous():
        q = self.filter(article__other_read=True)
    else:
        q = self.filter(((Q(article__other_read=True) | Q(article__owner=user)) | (Q(article__group__user=user) & Q(article__group_read=True)))).distinct()
    return q
