Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class ProductQuerySet(
- FlagMessageQuerySetMixin, ModuleItemFilterQuerysetMixin, BaseQuerySet):
- valid_module_filter_field = ('min_ranking', 'max_ranking')
- def sort_by_nullable_field(self, field):
- statement = 'CASE WHEN {db_table}.{field} IS NULL THEN 0 ELSE 1 END'\
- .format(db_table=Product,
- field=field[1:] if field[0] == '-' else field)
- return self.extra(select={'null_position': statement})\
- .order_by('-null_position', field)
- def include_all_related(self):
- return self.select_related('brand').select_related('badge')\
- .prefetch_related('categories')
- def include_user_following(self, user):
- if not user or not user.is_authenticated:
- return self.extra({'user_following': False})
- else:
- select = 'SELECT followers.id ' \
- 'FROM {follow} AS followers ' \
- 'WHERE followers.user_id = {user_id} ' \
- 'AND followers.product_id = marketplace_product.id ' \
- 'LIMIT 1'.format(follow=ProductFollower._meta.db_table,
- user_id=user.id)
- return self.extra(select={'user_following': select})
- def include_user_review_id(self, user):
- if not user or not user.is_authenticated:
- return self.extra()
- else:
- select = 'SELECT r.entry_ptr_id FROM {review} AS r ' \
- 'JOIN {entry} as e ON e.id = r.entry_ptr_id ' \
- 'WHERE e.author_id = {user_id} ' \
- 'AND r.product_id = marketplace_product.id ' \
- 'LIMIT 1'.format(review=Review._meta.db_table,
- entry=Entry._meta.db_table,
- user_id=user.id)
- return self.extra(select={'user_review_id': select})
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement