Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class ThreadManager(models.Manager):
- def by_user(self, user):
- qlookup = Q(first=user) | Q(second=user)
- qlookup2 = Q(first=user) & Q(second=user)
- qs = self.get_queryset().filter(qlookup).exclude(qlookup2).distinct()
- return qs
- def get_or_new(self, user, other_username): # get_or_create
- username = user.username
- if username == other_username:
- return None, False
- qlookup1 = Q(first__username=username) & Q(second__username=other_username)
- qlookup2 = Q(first__username=other_username) & Q(second__username=username)
- qs = self.get_queryset().filter(qlookup1 | qlookup2).distinct()
- if qs.count() == 1:
- return qs.first(), False
- elif qs.count() > 1:
- return qs.order_by('timestamp').first(), False
- else:
- Klass = user.__class__
- user2 = Klass.objects.get(username=other_username)
- if user != user2:
- obj = self.model(
- first=user,
- second=user2
- )
- obj.save()
- return obj, True
- return None, False
- def get_object(self):
- other_username = self.kwargs.get("username")
- print(other_username)
- print(self.request.user)
- obj, created = Thread.objects.get_or_new(self.request.user, other_username)
- if obj == None:
- raise Http404
- return obj
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement