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)