def scheduled_reminders(request, domain, template="reminders/partial/scheduled_reminders.html"): reminders = CaseReminderHandler.get_all_reminders(domain) dates = [] now = datetime.utcnow() today = now.date() if reminders: start_date = reminders[0].next_fire.date() if today < start_date: start_date = today end_date = reminders[-1].next_fire.date() else: start_date = end_date = today # make sure start date is a Monday and enddate is a Sunday start_date -= timedelta(days=start_date.weekday()) end_date += timedelta(days=6-end_date.weekday()) while start_date <= end_date: dates.append(start_date) start_date += timedelta(days=1) return render_to_response(request, template, { 'domain': domain, 'reminders': reminders, 'dates': dates, 'today': today, 'now': now, })
def page_context(self): page_context = super(ScheduledRemindersCalendarView, self).page_context timezone = Domain.get_by_name(self.domain).get_default_timezone() reminders = CaseReminderHandler.get_all_reminders(self.domain) dates = [] now = datetime.utcnow() timezone_now = datetime.now(timezone) today = timezone_now.date() def adjust_next_fire_to_timezone(reminder_utc): return ServerTime(reminder_utc.next_fire).user_time(timezone).done() if reminders: start_date = adjust_next_fire_to_timezone(reminders[0]).date() if today < start_date: start_date = today end_date = adjust_next_fire_to_timezone(reminders[-1]).date() else: start_date = end_date = today # make sure start date is a Monday and enddate is a Sunday start_date -= timedelta(days=start_date.weekday()) end_date += timedelta(days=6 - end_date.weekday()) while start_date <= end_date: dates.append(start_date) start_date += timedelta(days=1) reminder_data = [] for reminder in reminders: handler = reminder.handler recipient = reminder.recipient recipient_desc = get_recipient_name(recipient) case = reminder.case reminder_data.append( { "handler_name": handler.nickname, "next_fire": adjust_next_fire_to_timezone(reminder), "recipient_desc": recipient_desc, "recipient_type": handler.recipient, "case_id": case.case_id if case is not None else None, "case_name": case.name if case is not None else None, } ) page_context.update( { "domain": self.domain, "reminder_data": reminder_data, "dates": dates, "today": today, "now": now, "timezone": timezone, "timezone_now": timezone_now, } ) return page_context
def add_reminder_status_info(self, result): if self.domain_object.uses_new_reminders: events_pending = get_count_of_active_schedule_instances_due(self.domain, datetime.utcnow()) else: events_pending = len(CaseReminderHandler.get_all_reminders( domain=self.domain, due_before=datetime.utcnow(), ids_only=True )) result['events_pending'] = events_pending
def scheduled_reminders(request, domain, template="reminders/partial/scheduled_reminders.html"): reminders = CaseReminderHandler.get_all_reminders(domain) dates = [] now = datetime.utcnow() today = now.date() if reminders: start_date = reminders[0].next_fire.date() if today < start_date: start_date = today end_date = reminders[-1].next_fire.date() else: start_date = end_date = today # make sure start date is a Monday and enddate is a Sunday start_date -= timedelta(days=start_date.weekday()) end_date += timedelta(days=6-end_date.weekday()) while start_date <= end_date: dates.append(start_date) start_date += timedelta(days=1) reminder_data = [] for reminder in reminders: handler = reminder.handler recipient = reminder.recipient if isinstance(recipient, CouchUser): recipient_desc = "User '" + recipient.raw_username + "'" elif isinstance(recipient, CommCareCase): recipient_desc = "Case '" + recipient.name + "'" elif isinstance(recipient, Group): recipient_desc = "Group '" + recipient.name + "'" elif isinstance(recipient, SurveySample): recipient_desc = "Survey Sample '" + recipient.name + "'" else: recipient_desc = "" case = reminder.case reminder_data.append({ "handler_name" : handler.nickname, "next_fire" : reminder.next_fire, "recipient_desc" : recipient_desc, "recipient_type" : handler.recipient, "case_id" : case.get_id if case is not None else None, "case_name" : case.name if case is not None else None, }) return render(request, template, { 'domain': domain, 'reminder_data': reminder_data, 'dates': dates, 'today': today, 'now': now, })
def page_context(self): page_context = super(ScheduledRemindersCalendarView, self).page_context timezone = Domain.get_by_name(self.domain).get_default_timezone() reminders = CaseReminderHandler.get_all_reminders(self.domain) dates = [] now = datetime.utcnow() timezone_now = datetime.now(timezone) today = timezone_now.date() def adjust_next_fire_to_timezone(reminder_utc): return ServerTime( reminder_utc.next_fire).user_time(timezone).done().replace( tzinfo=None) if reminders: start_date = adjust_next_fire_to_timezone(reminders[0]).date() if today < start_date: start_date = today end_date = adjust_next_fire_to_timezone(reminders[-1]).date() else: start_date = end_date = today # make sure start date is a Monday and enddate is a Sunday start_date -= timedelta(days=start_date.weekday()) end_date += timedelta(days=6 - end_date.weekday()) while start_date <= end_date: dates.append(start_date) start_date += timedelta(days=1) reminder_data = [] for reminder in reminders: handler = reminder.handler recipient = reminder.recipient recipient_desc = get_recipient_name(recipient) case = reminder.case reminder_data.append({ "handler_name": handler.nickname, "next_fire": adjust_next_fire_to_timezone(reminder), "recipient_desc": recipient_desc, "recipient_type": handler.recipient, "case_id": case.case_id if case is not None else None, "case_name": case.name if case is not None else None, })
def scheduled_reminders(request, domain, template="reminders/partial/scheduled_reminders.html"): reminders = CaseReminderHandler.get_all_reminders(domain) dates = [] now = datetime.utcnow() today = now.date() if reminders: start_date = reminders[0].next_fire.date() if today < start_date: start_date = today end_date = reminders[-1].next_fire.date() else: start_date = end_date = today # make sure start date is a Monday and enddate is a Sunday start_date -= timedelta(days=start_date.weekday()) end_date += timedelta(days=6 - end_date.weekday()) while start_date <= end_date: dates.append(start_date) start_date += timedelta(days=1) reminder_data = [] for reminder in reminders: handler = reminder.handler recipient = reminder.recipient recipient_desc = get_recipient_name(recipient) case = reminder.case reminder_data.append({ "handler_name": handler.nickname, "next_fire": reminder.next_fire, "recipient_desc": recipient_desc, "recipient_type": handler.recipient, "case_id": case.get_id if case is not None else None, "case_name": case.name if case is not None else None, })