Advertisement
Guest User

Untitled

a guest
Aug 19th, 2017
54
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.87 KB | None | 0 0
  1. class ProductQuerySet(
  2. FlagMessageQuerySetMixin, ModuleItemFilterQuerysetMixin, BaseQuerySet):
  3.  
  4. valid_module_filter_field = ('min_ranking', 'max_ranking')
  5.  
  6. def sort_by_nullable_field(self, field):
  7. statement = 'CASE WHEN {db_table}.{field} IS NULL THEN 0 ELSE 1 END'\
  8. .format(db_table=Product,
  9. field=field[1:] if field[0] == '-' else field)
  10. return self.extra(select={'null_position': statement})\
  11. .order_by('-null_position', field)
  12.  
  13. def include_all_related(self):
  14. return self.select_related('brand').select_related('badge')\
  15. .prefetch_related('categories')
  16.  
  17. def include_user_following(self, user):
  18. if not user or not user.is_authenticated:
  19. return self.extra({'user_following': False})
  20. else:
  21. select = 'SELECT followers.id ' \
  22. 'FROM {follow} AS followers ' \
  23. 'WHERE followers.user_id = {user_id} ' \
  24. 'AND followers.product_id = marketplace_product.id ' \
  25. 'LIMIT 1'.format(follow=ProductFollower._meta.db_table,
  26. user_id=user.id)
  27. return self.extra(select={'user_following': select})
  28.  
  29. def include_user_review_id(self, user):
  30. if not user or not user.is_authenticated:
  31. return self.extra()
  32. else:
  33. select = 'SELECT r.entry_ptr_id FROM {review} AS r ' \
  34. 'JOIN {entry} as e ON e.id = r.entry_ptr_id ' \
  35. 'WHERE e.author_id = {user_id} ' \
  36. 'AND r.product_id = marketplace_product.id ' \
  37. 'LIMIT 1'.format(review=Review._meta.db_table,
  38. entry=Entry._meta.db_table,
  39. user_id=user.id)
  40. return self.extra(select={'user_review_id': select})
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement