summaryrefslogtreecommitdiffstats
path: root/activities/views/search.py
diff options
context:
space:
mode:
Diffstat (limited to 'activities/views/search.py')
-rw-r--r--activities/views/search.py32
1 files changed, 32 insertions, 0 deletions
diff --git a/activities/views/search.py b/activities/views/search.py
new file mode 100644
index 0000000..b748348
--- /dev/null
+++ b/activities/views/search.py
@@ -0,0 +1,32 @@
+from django import forms
+from django.views.generic import FormView
+
+from users.models import Identity
+
+
+class Search(FormView):
+
+ template_name = "activities/search.html"
+
+ class form_class(forms.Form):
+ query = forms.CharField()
+
+ def form_valid(self, form):
+ 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]:
+ results["identities"].add(identity)
+ else:
+ for identity in Identity.objects.filter(username=query)[:20]:
+ results["identities"].add(identity)
+ for identity in Identity.objects.filter(username__startswith=query)[:20]:
+ results["identities"].add(identity)
+ # Render results
+ context = self.get_context_data(form=form)
+ context["results"] = results
+ return self.render_to_response(context)