diff --git a/status/StatusUpdateReporter.py b/status/StatusUpdateReporter.py
index bba3341..e443bef 100644
--- a/status/StatusUpdateReporter.py
+++ b/status/StatusUpdateReporter.py
@@ -66,10 +66,14 @@ def getBatchName(y):
def groupMembersByBatch(members, year):
return UserProfile.objects.filter(user__in=members, batch=year)
+ def getActiveStatusUpdateDays(self, last_send, expected_date, member):
+ return DailyLog.objects.filter(thread=self.thread, members=member, date__lt=expected_date,
+ date__gt=last_send).count()
+
@staticmethod
- def getLastSendStr(last_send, expected_date):
+ def getLastSendStr(diff):
message = ''
- diff = abs(expected_date - last_send)
+ diff = abs(diff)
diff = diff.days + 1
if diff > 28:
message += '1M+'
@@ -127,8 +131,9 @@ def generateBatchWiseDNSReport(self, members, year):
lastSend = self.getMemberLastSend(member.user)
message += str(i) + '. ' + self.getName(member.user)
if lastSend:
- lastSend = self.getLastSendStr(lastSend.date(),
- self.getMemberLastRequiredDate(member.user))
+ expected_date = self.getMemberLastRequiredDate(member.user)
+ diff = self.getActiveStatusUpdateDays(lastSend.date(), expected_date, member.user)
+ lastSend = self.getLastSendStr(diff)
memberHistory = self.getMemberHistory(member.user)
message += ' [ ' + lastSend + ', ' + memberHistory + ']'
else:
@@ -214,7 +219,7 @@ def generateDailyReport(self):
sendCount = totalMembers - (didNotSendCount + invalidUpdatesCount)
if self.isTelegram:
message = 'Daily Status Update Report \n\n 📅 ' + date.strftime(
- '%d %B %Y') + ' | 📤 ' + str(sendCount) + '/' + str(totalMembers) + ' Members'
+ '%d %B %Y') + ' | 📤 ' + str(sendCount) + '/' + str(totalMembers) + ' Members'
message += '\n\n' + self.getPercentageSummary(sendCount, totalMembers, self.isTelegram) + ''
else:
@@ -228,17 +233,19 @@ def generateDailyReport(self):
if updates.count() > 0:
if self.isTelegram:
message += '\n\n⭐ First : ' + first.first_name + ' ' + first.last_name + \
- ' (' + updates[0].timestamp.astimezone(timezone('Asia/Kolkata')).strftime(
- '%I:%M %p') + ')' + '\n'
+ ' (' + updates[0].timestamp.astimezone(timezone('Asia/Kolkata')).strftime(
+ '%I:%M %p') + ')' + '\n'
message += '🐌 Last : ' + last.first_name + ' ' + last.last_name + \
- ' (' + list(reversed(updates))[0].timestamp.astimezone(timezone('Asia/Kolkata')).strftime(
- '%I:%M %p') + ')' + '\n'
+ ' (' + list(reversed(updates))[0].timestamp.astimezone(
+ timezone('Asia/Kolkata')).strftime(
+ '%I:%M %p') + ')' + '\n'
else:
message += '\n\n** :star: First : **' + first.first_name + ' ' + first.last_name + \
- ' (' + updates[0].timestamp.astimezone(timezone('Asia/Kolkata')).strftime(
+ ' (' + updates[0].timestamp.astimezone(timezone('Asia/Kolkata')).strftime(
'%I:%M %p') + ')' + '\n'
message += '** :snail: Last : **' + last.first_name + ' ' + last.last_name + \
- ' (' + list(reversed(updates))[0].timestamp.astimezone(timezone('Asia/Kolkata')).strftime(
+ ' (' + list(reversed(updates))[0].timestamp.astimezone(
+ timezone('Asia/Kolkata')).strftime(
'%I:%M %p') + ')' + '\n'
message += self.generateDidNotSendReport(log.didNotSend)
if thread.footerMessage:
@@ -283,29 +290,24 @@ def kickMembers(self):
member = self.checkKickException(member)
if member and member not in shouldKick:
shouldKick.append(member)
-
except ObjectDoesNotExist:
- raise
+ pass
return shouldKick
-
- def checkKickException(self, member, bot = None):
+
+ def checkKickException(self, member, bot=None):
date = self.date
thread = self.thread
- userProfile = UserProfile.objects.get(user=member)
lastSend = self.getMemberLastSend(member)
if lastSend:
- lastSend = self.getLastSend(lastSend.date(),
- self.getMemberLastRequiredDate(member))
+ diff = self.getActiveStatusUpdateDays(lastSend.date(), self.getMemberLastRequiredDate(member), member)
+ lastSend = self.getLastSend(diff)
else:
- lastSend = self.getLastSend(self.date, self.getNSBMemberLastRequiredDate(member))
+ diff = self.getActiveStatusUpdateDays(self.date, self.getNSBMemberLastRequiredDate(member), member)
+ lastSend = self.getLastSend(diff)
try:
- if bot:
- status = bot.getChatMember(chat_id=agent[1], user_id=userProfile.telegram_id).status
- else:
- status = "present"
if lastSend > thread.noOfDays:
kick = True
exceptions = StatusException.objects.filter(isPaused=True)
@@ -317,9 +319,9 @@ def checkKickException(self, member, bot = None):
break
else:
exception.isPaused = False
- if kick and status != "left":
+ if kick:
return member
except:
pass
-
+
return None