Fix search logic for full names

This commit is contained in:
Jan Tuomi
2017-09-25 23:06:44 +03:00
parent 51e16df08b
commit d3e763aa05
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