mention.py 916 B

12345678910111213141516171819202122232425262728293031
  1. from django.contrib.auth import get_user_model
  2. from django.template.context_processors import static
  3. from rest_framework.decorators import api_view
  4. from rest_framework.response import Response
  5. from ...conf import settings
  6. User = 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 = User.objects.filter(slug__startswith=query, is_active=True).order_by(
  13. "slug"
  14. )[:10]
  15. for user in queryset:
  16. try:
  17. avatar = user.avatars[-1]["url"]
  18. except IndexError:
  19. avatar = request.settings.blank_avatar
  20. if not avatar:
  21. avatar = static(settings.MISAGO_BLANK_AVATAR)
  22. suggestions.append({"username": user.username, "avatar": avatar})
  23. return Response(suggestions)