Skip to content

Commit

Permalink
feat: check the status update active dates to compute the user last send
Browse files Browse the repository at this point in the history
  • Loading branch information
harshithpabbati committed Jun 23, 2021
1 parent 6d1e29d commit 63e1186
Showing 1 changed file with 27 additions and 25 deletions.
52 changes: 27 additions & 25 deletions status/StatusUpdateReporter.py
Expand Up @@ -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+'
Expand Down Expand Up @@ -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:
Expand Down Expand Up @@ -214,7 +219,7 @@ def generateDailyReport(self):
sendCount = totalMembers - (didNotSendCount + invalidUpdatesCount)
if self.isTelegram:
message = '<b>Daily Status Update Report</b> \n\n &#128197; ' + date.strftime(
'%d %B %Y') + ' | &#128228; ' + str(sendCount) + '/' + str(totalMembers) + ' Members'
'%d %B %Y') + ' | &#128228; ' + str(sendCount) + '/' + str(totalMembers) + ' Members'

message += '\n\n<b>' + self.getPercentageSummary(sendCount, totalMembers, self.isTelegram) + '</b>'
else:
Expand All @@ -228,17 +233,19 @@ def generateDailyReport(self):
if updates.count() > 0:
if self.isTelegram:
message += '\n\n<b>&#11088; First : </b>' + 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 += '<b>&#128012; Last : </b>' + 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:
Expand Down Expand Up @@ -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)
Expand All @@ -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

0 comments on commit 63e1186

Please sign in to comment.