diff options
author | Andrew Godwin | 2022-11-17 18:52:00 -0700 |
---|---|---|
committer | Andrew Godwin | 2022-11-17 15:10:09 -0700 |
commit | 0851fbd1ec09b142608667bf90ee806e59cafb28 (patch) | |
tree | eb4bfa7e52ef0a66460840747ea83b7685e1a5e8 /activities/views/search.py | |
parent | 2154e6f02252576d8652e66f26fa4ae635d0f8ee (diff) | |
download | takahe-0851fbd1ec09b142608667bf90ee806e59cafb28.tar.gz takahe-0851fbd1ec09b142608667bf90ee806e59cafb28.tar.bz2 takahe-0851fbd1ec09b142608667bf90ee806e59cafb28.zip |
Add search and better notifications
Diffstat (limited to 'activities/views/search.py')
-rw-r--r-- | activities/views/search.py | 32 |
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) |