diff --git a/training/templates/list_event_participants.html b/training/templates/list_event_participants.html index 949b6636..caf6f08a 100644 --- a/training/templates/list_event_participants.html +++ b/training/templates/list_event_participants.html @@ -43,6 +43,7 @@ {% if is_tr_ongoing%} + {% if record.reg_approval_status == 1 %} {% else %} @@ -53,6 +54,7 @@ {% if is_tr_completed %} + {% if record.attendance_marked %} {% else %} diff --git a/training/views.py b/training/views.py index 52859938..0d41e93e 100644 --- a/training/views.py +++ b/training/views.py @@ -862,8 +862,6 @@ def get_context_data(self, **kwargs): context['is_tr_completed'] = is_tr_completed(self.event.id) context['is_event_closed'] = is_event_closed(self.event.id) - - return context def post(self, request, *args, **kwargs): @@ -871,39 +869,47 @@ def post(self, request, *args, **kwargs): self.user = request.user eventid = kwargs['eventid'] attendance_type = request.POST.get('event_status', None) + displayed_users = request.POST.getlist('displayed_users', []) if attendance_type == 'attend': - if request.POST and 'user' in request.POST: - marked_participant = request.POST.getlist('user', None) - # delete un marked record if exits - EventAttendance.objects.filter(event_id =eventid).exclude(participant_id__in = marked_participant).delete() - # insert new record if not exits + marked_participant = request.POST.getlist('user', []) + if displayed_users: + # delete unmarked record if exists, only for displayed users on this page + EventAttendance.objects.filter( + event_id=eventid, + participant_id__in=displayed_users + ).exclude( + participant_id__in=marked_participant + ).delete() + # insert new record if not exists for record in marked_participant: - event_attend = EventAttendance.objects.filter(event_id =eventid, participant_id = record) - if not event_attend.exists(): - EventAttendance.objects.create(event_id =eventid, participant_id = record) - #print marked_participant - success_url = '/training/event/rp/completed' + if record in displayed_users: + event_attend = EventAttendance.objects.filter(event_id=eventid, participant_id=record) + if not event_attend.exists(): + EventAttendance.objects.create(event_id=eventid, participant_id=record) else: - EventAttendance.objects.filter(event_id = eventid).delete() - success_url = '/training/event/rp/completed' + EventAttendance.objects.filter(event_id=eventid).delete() + success_url = '/training/event/rp/completed' elif attendance_type == 'reg': - if request.POST and 'user_reg' in request.POST: - marked_registrations = request.POST.getlist('user_reg', None) - # delete un marked record if exits - remove_reg = Participant.objects.filter(event_id =eventid, reg_approval_status=1).exclude(id__in = marked_registrations).update(reg_approval_status=0) - - # insert new record if not exits + marked_registrations = request.POST.getlist('user_reg', []) + if displayed_users: + # update reg_approval_status to 0 for displayed users that are not marked + Participant.objects.filter( + event_id=eventid, + id__in=displayed_users + ).exclude( + id__in=marked_registrations + ).update(reg_approval_status=0) + # insert new record if not exists for record in marked_registrations: - reg_attend = Participant.objects.filter(event_id =eventid, id = record, reg_approval_status=1) - if not reg_attend.exists(): - mark_reg_approval(record, eventid) - #print marked_registrations - success_url = '/training/event/rp/ongoing' + if record in displayed_users: + reg_attend = Participant.objects.filter(event_id=eventid, id=record, reg_approval_status=1) + if not reg_attend.exists(): + mark_reg_approval(record, eventid) else: - Participant.objects.filter(event_id =eventid).update(reg_approval_status=0) - success_url = '/training/event/rp/ongoing' + Participant.objects.filter(event_id=eventid).update(reg_approval_status=0) + success_url = '/training/event/rp/ongoing' return HttpResponseRedirect(success_url)