summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--activities/views/search.py24
1 files changed, 20 insertions, 4 deletions
diff --git a/activities/views/search.py b/activities/views/search.py
index cf62410..b175052 100644
--- a/activities/views/search.py
+++ b/activities/views/search.py
@@ -1,7 +1,7 @@
from django import forms
from django.views.generic import FormView
-from users.models import Identity
+from users.models import Domain, Identity
class Search(FormView):
@@ -15,12 +15,28 @@ class Search(FormView):
query = form.cleaned_data["query"].lstrip("@").lower()
results = {"identities": set()}
# Search identities
+
if "@" in query:
username, domain = query.split("@", 1)
- for identity in Identity.objects.filter(
- domain_id=domain, username=username
- )[:20]:
+
+ # Resolve the domain to the display domain
+ domain_instance = Domain.get_domain(domain)
+ try:
+ if domain_instance is None:
+ raise Identity.DoesNotExist()
+ identity = Identity.objects.get(
+ domain=domain_instance, username=username
+ )
+ except Identity.DoesNotExist:
+ if self.request.identity is not None:
+ # Allow authenticated users to fetch remote
+ identity = Identity.by_username_and_domain(
+ username, domain, fetch=True
+ )
+ identity = None
+ if identity:
results["identities"].add(identity)
+
else:
for identity in Identity.objects.filter(username=query)[:20]:
results["identities"].add(identity)