Merge branch 'develop' into 'master'
Fix search logic for full names See merge request !51
This commit is contained in:
+15
-24
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user