Merge branch 'develop' into 'master'

Fix search logic for full names

See merge request !51
This commit is contained in:
Jan Tuomi
2017-09-25 23:33:05 +03:00
3 changed files with 18 additions and 33 deletions
+15 -24
View File
@@ -3,6 +3,7 @@
from django.db import models
from django.utils import timezone
from django.utils.translation import ugettext_lazy as _
from django.db.models import Q
import csv
@@ -27,30 +28,6 @@ class BaseMember(models.Model):
"""Return member last name, first name and email."""
return "{} {}, {}".format(self.last_name, self.first_name, self.email)
@staticmethod
def from_csv(data):
clean_data = data.strip().split('\n')
csv_reader = csv.reader(clean_data)
members = []
for line in csv_reader:
try:
line = list(map(lambda x: x.strip(), line))
print(line)
member = Member.from_array([
line[0], line[1], line[2], line[3],
bool(int(line[4])), bool(int(line[5]))
])
members.append(member)
except:
return False
for member in members:
member.save()
return True
def as_array(self):
"""Return member model as an array."""
return [
@@ -95,6 +72,13 @@ class Payment(models.Model):
"""Return payment id and date."""
return 'Payment no. {}, {}'.format(self.id, str(self.date))
@staticmethod
def find_payments_by_name(query_name):
qs = Payment.objects.all()
for term in query_name.split():
qs = qs.filter(Q(member__first_name__icontains=term) | Q(member__last_name__icontains=term))
return qs
class Member(BaseMember):
"""Member model represets one member on the registry."""
@@ -126,6 +110,13 @@ class Member(BaseMember):
jas=bool(array[5]),
)
@staticmethod
def find_members_by_name(query_name):
qs = Member.objects.all()
for term in query_name.split():
qs = qs.filter(Q(first_name__icontains=term) | Q(last_name__icontains=term))
return qs
# To avoid problems with a cyclical import, this is at the bottom of the file
from members.forms import MemberForm # nopep8
+2 -6
View File
@@ -27,9 +27,7 @@ def member_list(request, *args, **kwargs):
"""Render members list."""
search = request.GET.get('q', None)
if search:
firsts = Member.objects.filter(first_name__istartswith=search)
lasts = Member.objects.filter(last_name__istartswith=search)
members = firsts | lasts
members = Member.find_members_by_name(search)
else:
members = Member.objects.all()
@@ -198,8 +196,6 @@ class MemberAutoComplete(autocomplete.Select2QuerySetView):
qs = Member.objects.all()
if self.q:
firsts = qs.filter(first_name__istartswith=self.q)
lasts = qs.filter(last_name__istartswith=self.q)
qs = firsts | lasts
qs = Member.find_members_by_name(self.q)
return qs
+1 -3
View File
@@ -23,9 +23,7 @@ def payment_list(request, *args, **kwargs):
"""Render list of payments."""
search = request.GET.get('q', None)
if search:
firsts = Payment.objects.filter(member__first_name__istartswith=search)
lasts = Payment.objects.filter(member__last_name__istartswith=search)
payments = firsts | lasts
payments = Payment.find_payments_by_name(search)
else:
payments = Payment.objects.all()