mention.py 919 B

1234567891011121314151617181920212223242526272829303132333435
  1. from rest_framework.decorators import api_view
  2. from rest_framework.response import Response
  3. from django.contrib.auth import get_user_model
  4. from django.contrib.staticfiles.templatetags.staticfiles import static
  5. from misago.conf import settings
  6. UserModel = get_user_model()
  7. @api_view()
  8. def mention_suggestions(request):
  9. suggestions = []
  10. query = request.query_params.get('q', '').lower().strip()[:100]
  11. if query:
  12. queryset = UserModel.objects.filter(
  13. slug__startswith=query,
  14. is_active=True,
  15. ).order_by('slug')[:10]
  16. for user in queryset:
  17. try:
  18. avatar = user.avatars[-1]['url']
  19. except IndexError:
  20. avatar = static(settings.MISAGO_BLANK_AVATAR)
  21. suggestions.append({
  22. 'username': user.username,
  23. 'avatar': avatar,
  24. })
  25. return Response(suggestions)