Exemplo n.º 1
0
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,
    })
Exemplo n.º 2
0
    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
Exemplo n.º 3
0
    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
Exemplo n.º 4
0
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,
    })
Exemplo n.º 5
0
    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,
            })
Exemplo n.º 6
0
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,
        })