def get_user_groups(self, user): """ Return all group memberships for one user. """ key = make_key('groups', user.pk) groups = cache.get(key) if groups is None: groups = self.filter(members=user).order_by('-date_joined') cache.set(key, groups) return groups
def unviewed_requests(self, user): """ Return all unviewed membership requests. """ key = make_key('unviewed_requests', user.pk) unviewed_requests = cache.get(key) if unviewed_requests is None: unviewed_requests = self.filter(Q(viewed__isnull=True) | Q(viewed=False), from_user=user) cache.set(key, unviewed_requests) return unviewed_requests
def requests(self, user): """ Return all membership requests. """ key = make_key('requests', user.pk) requests = cache.get(key) if requests is None: requests = self.filter(from_user=user) cache.set(key, requests) return requests
def rejected_requests(self, user): """ Return all rejected membership requests. """ key = make_key('rejected_requests', user.pk) rejected_requests = cache.get(key) if rejected_requests is None: rejected_requests = self.filter(Q(rejected__isnull=False) | Q(rejected=True), from_user=user) cache.set(key, rejected_requests) return rejected_requests
def is_member(self, user, group): """ Check if user is a group member. """ if user.is_authenticated() and isinstance(group, self.model.__class__): key = make_key('members', group.pk) members = cache.get(key) if members is not None and user in members: return True else: try: member = self.get(member=user, group=group) return True except self.model.DoesNotExist: return False return False