Skip to content

Commit

Permalink
Merge pull request #4 from xjlin0/dynamic_contacts
Browse files Browse the repository at this point in the history
Dynamic contacts
  • Loading branch information
xjlin0 authored May 22, 2021
2 parents d677996 + 6118286 commit 8cab80a
Show file tree
Hide file tree
Showing 6 changed files with 390 additions and 180 deletions.
25 changes: 18 additions & 7 deletions attendees/persons/serializers/attendee_minimal_serializer.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,9 +37,8 @@ def create(self, validated_data):

instance = Attendee.objects.get(pk=attendee_id)
if instance:
old_photo = instance.photo

if deleting_photo or validated_data.get('photo', None):
old_photo = instance.photo
if old_photo:
old_file = Path(old_photo.path)
old_file.unlink(missing_ok=True)
Expand All @@ -51,7 +50,6 @@ def create(self, validated_data):
defaults=validated_data,
)


return obj
else:
return None
Expand All @@ -61,8 +59,21 @@ def update(self, instance, validated_data):
Update and return an existing `AttendingMeet` instance, given the validated data.
"""
print("hi AttendeeMinimalSerializer.update() 47 here is validated_data: ")
print(validated_data)
instance.save()
return instance
deleting_photo = self._kwargs['data'].get('photo-clear', None)

if instance:
if deleting_photo or validated_data.get('photo', None):
old_photo = instance.photo
if old_photo:
old_file = Path(old_photo.path)
old_file.unlink(missing_ok=True)
if deleting_photo:
validated_data['photo'] = None

obj, created = Attendee.objects.update_or_create(
id=instance.id,
defaults=validated_data,
)

return obj

2 changes: 1 addition & 1 deletion attendees/persons/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@
basename='attending',
)
router.register(
'api/datagrid_data_attendee/(?P<attendee_id>.+)',
'api/datagrid_data_attendee',
api_datagrid_data_attendee_viewset,
basename='attendee',
)
Expand Down
38 changes: 17 additions & 21 deletions attendees/persons/views/api/datagrid_data_attendee.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,33 +19,29 @@ class ApiDatagridDataAttendeeViewSet(LoginRequiredMixin, ModelViewSet): # from
serializer_class = AttendeeMinimalSerializer
# queryset = Attendee.objects.all()

def retrieve(self, request, *args, **kwargs):
attendee_id = self.request.query_params.get('attendee_id')
print("entering retrieve ... ")
attendee = Attendee.objects.annotate(
joined_meets=JSONBAgg(
Func(
Value('slug'), 'attendings__meets__slug',
Value('display_name'), 'attendings__meets__display_name',
function='jsonb_build_object'
),
)
# joined_meets=ArrayAgg('attendings__meets__slug', distinct=True),
).filter(pk=attendee_id).first()
# attendee = get_object_or_404(queryset)
serializer = AttendeeMinimalSerializer(attendee)
return Response(serializer.data)
# def retrieve(self, request, *args, **kwargs):
# attendee_id = self.kwargs.get('pk')
# attendee = Attendee.objects.annotate(
# joined_meets=JSONBAgg(
# Func(
# Value('attendingmeet_id'), 'attendings__attendingmeet__id',
# Value('attending_finish'), 'attendings__attendingmeet__finish',
# Value('attending_start'), 'attendings__attendingmeet__start',
# Value('meet_name'), 'attendings__meets__display_name',
# function='jsonb_build_object'
# ),
# ),
# # contacts=ArrayAgg('attendings__meets__slug', distinct=True),
# ).filter(pk=attendee_id)
# serializer = AttendeeMinimalSerializer(attendee)
# return Response(serializer.data)

def get_queryset(self):
"""
"""
current_user = self.request.user # Todo: guard this API so only admin or scheduler can call it.
querying_attendee_id = self.kwargs.get('attendee_id')
# return AttendeeService.single_record(
# current_user=current_user,
# attendee_id=querying_attendee_id,
# )
querying_attendee_id = self.kwargs.get('pk')

return Attendee.objects.annotate(
joined_meets=JSONBAgg(
Expand Down
Loading

0 comments on commit 8cab80a

Please sign in to comment.