Advertisement
Guest User

Untitled

a guest
Jun 25th, 2019
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.46 KB | None | 0 0
  1. class ThreadManager(models.Manager):
  2. def by_user(self, user):
  3. qlookup = Q(first=user) | Q(second=user)
  4. qlookup2 = Q(first=user) & Q(second=user)
  5. qs = self.get_queryset().filter(qlookup).exclude(qlookup2).distinct()
  6. return qs
  7.  
  8. def get_or_new(self, user, other_username): # get_or_create
  9. username = user.username
  10.  
  11. if username == other_username:
  12. return None, False
  13.  
  14. qlookup1 = Q(first__username=username) & Q(second__username=other_username)
  15. qlookup2 = Q(first__username=other_username) & Q(second__username=username)
  16.  
  17. qs = self.get_queryset().filter(qlookup1 | qlookup2).distinct()
  18.  
  19. if qs.count() == 1:
  20. return qs.first(), False
  21. elif qs.count() > 1:
  22. return qs.order_by('timestamp').first(), False
  23. else:
  24. Klass = user.__class__
  25. user2 = Klass.objects.get(username=other_username)
  26. if user != user2:
  27. obj = self.model(
  28. first=user,
  29. second=user2
  30. )
  31. obj.save()
  32. return obj, True
  33. return None, False
  34.  
  35. def get_object(self):
  36. other_username = self.kwargs.get("username")
  37. print(other_username)
  38. print(self.request.user)
  39. obj, created = Thread.objects.get_or_new(self.request.user, other_username)
  40. if obj == None:
  41. raise Http404
  42. return obj
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement