Skip to content

Commit

Permalink
search dropdown in popup editor of attendance list page now works
Browse files Browse the repository at this point in the history
  • Loading branch information
xjlin0 committed Jun 26, 2022
1 parent 8dbe064 commit 9b54d6d
Show file tree
Hide file tree
Showing 6 changed files with 29 additions and 16 deletions.
5 changes: 5 additions & 0 deletions attendees/occasions/services/attendance_service.py
Original file line number Diff line number Diff line change
Expand Up @@ -133,6 +133,11 @@ def by_organization_meet_characters(current_user, meet_slugs, character_slugs, s
|
Q(attending__registration__registrant=current_user.attendee)), Q.AND)

if search_value and search_operation == 'contains' and search_expression == 'attending_label': # only contains supported now
extra_filters.add((Q(attending__registration__registrant__infos__icontains=search_value)
|
Q(attending__attendee__infos__icontains=search_value)), Q.AND)

if filter: # only support single/double level so far
filter_list = json.loads(filter)
search_term = (filter_list[-1][-1]
Expand Down
9 changes: 7 additions & 2 deletions attendees/occasions/services/gathering_service.py
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ def by_family_meets(user, meet_slugs):
) # another way is to get assemblys from registration, but it relies on attendingmeet validations

@staticmethod
def by_organization_meets(current_user, meet_slugs, start, finish, orderbys, filter):
def by_organization_meets(current_user, meet_slugs, start, finish, orderbys, filter, search_value, search_expression=None, search_operation=None,):
orderby_list = GatheringService.orderby_parser(orderbys)
extra_filters = Q(
meet__assembly__division__organization__slug=current_user.organization.slug
Expand All @@ -63,11 +63,16 @@ def by_organization_meets(current_user, meet_slugs, start, finish, orderbys, fil
|
Q(attendings__registration__registrant=current_user.attendee)), Q.AND)

if search_value and search_operation == 'contains' and search_expression == 'display_name': # for searching in drop down of popup editor
extra_filters.add((Q(display_name__icontains=search_value)
|
Q(infos__icontains=search_value)), Q.AND)

if filter: # [["meet","=",1],"or",["meet","=",2]] is already filtered by slugs above
filter_term = json.loads(filter) # [["display_name","contains","207"],"or",["site","contains","207"]]
if isinstance(filter_term[0], list) and filter_term[0][1] == 'contains':
search_term = filter_term[0][2]
if search_term:
if search_term: # for searching in the upper right search bar of datagrid
search_filters = Q(display_name__icontains=search_term) # Gathering level
search_filters.add(Q(infos__icontains=search_term), Q.OR) # Gathering level

Expand Down
3 changes: 3 additions & 0 deletions attendees/occasions/views/api/organization_meet_gatherings.py
Original file line number Diff line number Diff line change
Expand Up @@ -107,6 +107,9 @@ def get_queryset(self):
finish=self.request.query_params.get("finish"),
orderbys=orderby_list,
filter=self.request.query_params.get("filter"),
search_value=self.request.query_params.get("searchValue"),
search_expression=self.request.query_params.get("searchExpr"),
search_operation=self.request.query_params.get("searchOperation"),
)

else:
Expand Down
4 changes: 2 additions & 2 deletions attendees/persons/services/atteningmeet_service.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ def by_organization_meet_characters(current_user, meet_slugs, character_slugs, s
|
Q(attending__registration__registrant=current_user.attendee)), Q.AND)

if search_value and search_operation == 'contains' and search_expression == 'attending_label': # only contains supported now
if search_value and search_operation == 'contains' and search_expression == 'attending_label': # for searching in drop down of popup editor
extra_filters.add((Q(attending__registration__registrant__infos__icontains=search_value)
|
Q(attending__attendee__infos__icontains=search_value)), Q.AND)
Expand All @@ -28,7 +28,7 @@ def by_organization_meet_characters(current_user, meet_slugs, character_slugs, s
search_term = (filter_list[-1][-1]
if filter_list[1] == 'or'
else filter_list[0][0][-1]) if isinstance(filter_list[-1], list) else filter_list[-1]
if isinstance(search_term, str):
if isinstance(search_term, str): # for searching in the upper right search bar of datagrid
extra_filters.add((Q(attending__registration__registrant__infos__icontains=search_term)
|
Q(category__display_name__icontains=search_term)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import time

from django.contrib.auth.mixins import LoginRequiredMixin
from django.db.models import Q
from rest_framework import viewsets
from rest_framework.exceptions import AuthenticationFailed
from rest_framework.response import Response
Expand Down Expand Up @@ -50,14 +51,13 @@ def get_queryset(self):
) # order_by('meet','start')
# Todo: add group column to orderby_list
if pk:
filters = {
'pk': pk,
'meets__assembly__division__organization': current_user_organization,
}
filters = Q(meets__assembly__division__organization=current_user_organization).add(Q(pk=pk), Q.AND)
if not current_user.can_see_all_organizational_meets_attendees():
filters['attendee'] = current_user.attendee
filters.add((Q(attendee__in=current_user.attendee.scheduling_attendees())
|
Q(registration__registrant=current_user.attendee)), Q.AND)

return Attending.objects.filter(**filters).distinct()
return Attending.objects.filter(filters).distinct()

else:
return Attending.objects.filter(
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import time

from django.contrib.auth.mixins import LoginRequiredMixin
from django.db.models import Q
from rest_framework import viewsets
from rest_framework.exceptions import AuthenticationFailed
from rest_framework.response import Response
Expand Down Expand Up @@ -53,14 +54,13 @@ def get_queryset(self):
) # order_by('meet','start')
# Todo: add group column to orderby_list
if pk:
filters = {
'pk': pk,
'meets__assembly__division__organization': current_user_organization,
}
filters = Q(meets__assembly__division__organization=current_user_organization).add(Q(pk=pk), Q.AND)
if not current_user.can_see_all_organizational_meets_attendees():
filters['attendee'] = current_user.attendee
filters.add((Q(attendee__in=current_user.attendee.scheduling_attendees())
|
Q(registration__registrant=current_user.attendee)), Q.AND)

return Attending.objects.filter(**filters).distinct()
return Attending.objects.filter(filters).distinct()

else:
if group_string:
Expand Down

0 comments on commit 9b54d6d

Please sign in to comment.