예제 #1
0
 def test_years_before_1900(self):
     d = datetime.date(year=1899, month=1, day=1)
     m = Month([], d)
     try:
         m.name()
     except ValueError as value_error:
         self.fail(value_error)
예제 #2
0
 def setUp(self):
     rule = Rule(frequency="WEEKLY")
     rule.save()
     cal = Calendar(name="MyCal")
     cal.save()
     data = {
         'title':
         'Recent Event',
         'start':
         datetime.datetime(2008, 1, 5, 8, 0, tzinfo=pytz.utc),
         'end':
         datetime.datetime(2008, 1, 5, 9, 0, tzinfo=pytz.utc),
         'end_recurring_period':
         datetime.datetime(2008, 5, 5, 0, 0, tzinfo=pytz.utc),
         'rule':
         rule,
         'calendar':
         cal
     }
     recurring_event = Event(**data)
     recurring_event.save()
     self.month = Month(events=Event.objects.all(),
                        date=datetime.datetime(2008,
                                               2,
                                               7,
                                               9,
                                               0,
                                               tzinfo=pytz.utc))
예제 #3
0
 def test_years_before_1900(self):
     d = datetime.date(year=1899, month=1, day=1)
     m = Month([], d)
     try:
         m.name()
     except ValueError as value_error:
         self.fail(value_error)
예제 #4
0
 def setUp(self):
     self.month = Month(events=Event.objects.all(),
                        date=datetime.datetime(2008,
                                               2,
                                               7,
                                               9,
                                               0,
                                               tzinfo=pytz.utc))
예제 #5
0
def monthly_schedule(request, year, month):
    if int(year) > 2037 or int(year) < 1970 or int(month) < 1 or int(month) > 12:
        raise Http404

    MonthlyScheduleFormset = formset_factory(wraps(MonthlyScheduleForm)(partial(MonthlyScheduleForm, days=monthrange(int(year), int(month))[1])), extra=0)

    initial_data = []
    for barber in Barber.objects.all():
        data = {}
        calendar = Calendar.objects.get_or_create(name='barber_schedule')[0]
        month_period = Month(calendar.events.get_for_object(barber), datetime(int(year), int(month), 1))
        for day_period in month_period.get_days():
            if day_period.has_occurrences():
                data['day_{}'.format(day_period.start.day)] = True
        initial_data.append(data)

    if request.method == 'POST':
        formset = MonthlyScheduleFormset(request.POST, initial=initial_data)
        if formset.is_valid():
            for form, barber in zip(formset, Barber.objects.all()):
                for day in form.changed_data:
                    if not form.cleaned_data[day]:
                        calendar = Calendar.objects.get(name='barber_schedule')
                        events = calendar.events.get_for_object(barber)
                        period = Day(events, datetime(int(year), int(month), int(day[4:])))
                        if period.has_occurrences():
                            for occurrence in period.get_occurrences():
                                Event.objects.get(id=occurrence.event_id).delete()
                    else:
                        calendar = Calendar.objects.get_or_create(name='barber_schedule')[0]
                        event = Event(
                            start=make_aware(datetime(int(year), int(month), int(day[4:]), settings.DAY_START)),
                            end=make_aware(datetime(int(year), int(month), int(day[4:]), settings.DAY_END))
                        )
                        event.save()
                        calendar.events.add(event)
                        relation = EventRelation.objects.create_relation(event, barber)
                        relation.save()

    else:
        formset = MonthlyScheduleFormset(initial=initial_data)

    context = dict(
        admin.site.each_context(request),
        days=range(1, monthrange(int(year), int(month))[1] + 1),
        first_weekday=monthrange(int(year), int(month))[0],
        barbers=zip(Barber.objects.all(), formset),
        formset=formset,
        prev_date=(datetime(int(year), int(month), 1) - timedelta(days=1)),
        current_date=datetime.now(),
        next_date=(datetime(int(year), int(month), monthrange(int(year), int(month))[1]) + timedelta(days=1)),
    )
    if request.method == 'POST':
        return redirect(reverse('admin:monthly_schedule', kwargs={'year': year, 'month': month}), context)
    else:
        return render(request, 'admin/monthly_schedule.html', context)
예제 #6
0
class TestMonth(TestCase):
    def setUp(self):
        rule = Rule(frequency = "WEEKLY")
        rule.save()
        data = {
                'title': 'Recent Event',
                'start': datetime.datetime(2008, 1, 5, 8, 0),
                'end': datetime.datetime(2008, 1, 5, 9, 0),
                'end_recurring_period' : datetime.datetime(2008, 5, 5, 0, 0),
                'rule': rule,
               }
        recurring_event = Event(**data)
        recurring_event.save()
        self.month = Month(events=Event.objects.all(),
                           date=datetime.datetime(2008, 2, 7, 9, 0))
    def test_get_weeks(self):
        weeks = self.month.get_weeks()
        self.assertEqual([(week.start,week.end) for week in weeks],
            [
                (datetime.datetime(2008, 1, 27, 0, 0),
                datetime.datetime(2008, 2, 3, 0, 0)),
                (datetime.datetime(2008, 2, 3, 0, 0),
                datetime.datetime(2008, 2, 10, 0, 0)),
                (datetime.datetime(2008, 2, 10, 0, 0),
                 datetime.datetime(2008, 2, 17, 0, 0)),
                (datetime.datetime(2008, 2, 17, 0, 0),
                 datetime.datetime(2008, 2, 24, 0, 0)),
                (datetime.datetime(2008, 2, 24, 0, 0),
                 datetime.datetime(2008, 3, 2, 0, 0))
            ])

    def test_get_days(self):
        weeks = self.month.get_weeks()
        week = weeks[0]
        days = week.get_days()
        self.assertEqual(
            [
                (len(day.occurrences), day.start,day.end) for day in days
            ],
            [
                (0, datetime.datetime(2008, 1, 27, 0, 0),
                 datetime.datetime(2008, 1, 28, 0, 0)),
                (0, datetime.datetime(2008, 1, 28, 0, 0),
                 datetime.datetime(2008, 1, 29, 0, 0)),
                (0, datetime.datetime(2008, 1, 29, 0, 0),
                 datetime.datetime(2008, 1, 30, 0, 0)),
                (0, datetime.datetime(2008, 1, 30, 0, 0),
                 datetime.datetime(2008, 1, 31, 0, 0)),
                (0, datetime.datetime(2008, 1, 31, 0, 0),
                 datetime.datetime(2008, 2, 1, 0, 0)),
                (0, datetime.datetime(2008, 2, 1, 0, 0),
                 datetime.datetime(2008, 2, 2, 0, 0)),
                (1, datetime.datetime(2008, 2, 2, 0, 0),
                 datetime.datetime(2008, 2, 3, 0, 0))]
            )
예제 #7
0
파일: tests.py 프로젝트: jsalzman89/factory
 def test_get_values(self):
     self.client.login(username='******', password='******')
     date = datetime.datetime(2015, 6, 1)
     resp = self.client.get(reverse('admin:monthly_schedule', kwargs={'year': date.year, 'month': date.month}))
     formset = resp.context['formset']
     self.assertEqual(len(formset), Barber.objects.all().count())
     for form, barber in zip(formset, Barber.objects.all()):
         month = Month(self.calendar.events.get_for_object(barber), date=date)
         self.assertEqual(len(form.visible_fields()), len(list(month.get_days())))
         self.assertEqual(len(form.changed_data), len(month.get_occurrences()))
         for day, occ in zip(form.changed_data, month.cached_get_sorted_occurrences()):
             self.assertEqual(int(day[4:]), occ.end.day)
 def setUp(self):
     rule = Rule.objects.create(frequency="WEEKLY")
     cal = Calendar.objects.create(name="MyCal")
     Event.objects.create(
         subtitle=subtitle,
         start=datetime.datetime(2008, 1, 5, 8, 0, tzinfo=pytz.utc),
         end=datetime.datetime(2008, 1, 5, 9, 0, tzinfo=pytz.utc),
         end_recurring_period=datetime.datetime(2008, 5, 5, 0, 0, tzinfo=pytz.utc),
         rule=rule,
         calendar=cal,
     )
     self.month = Month(events=Event.objects.all(),
                        date=datetime.datetime(2008, 2, 7, 9, 0, tzinfo=pytz.utc))
예제 #9
0
def month_table(context,  calendar, month, size="regular", shift=None):
    if shift:
        if shift == -1:
            month = Month(calendar.events.all(), month.prev())
        if shift == 1:
            month = Month(calendar.events.all(), month.next())
    if size == "small":
        context['day_names']  = weekday_abbrs
    else:
        context['day_names']  = weekday_names
    context['calendar'] = calendar
    context['month'] = month
    context['size'] = size
    return context
예제 #10
0
class TestMonth(TestCase):
    def setUp(self):
        rule = Rule(frequency="WEEKLY")
        rule.save()
        data = {
            'title': 'Recent Event',
            'start': datetime.datetime(2008, 1, 5, 8, 0),
            'end': datetime.datetime(2008, 1, 5, 9, 0),
            'end_recurring_period': datetime.datetime(2008, 5, 5, 0, 0),
            'rule': rule,
        }
        recurring_event = Event(**data)
        recurring_event.save()
        self.month = Month(events=Event.objects.all(),
                           date=datetime.datetime(2008, 2, 7, 9, 0))

    def test_get_weeks(self):
        weeks = self.month.get_weeks()
        self.assertEqual([(week.start, week.end) for week in weeks],
                         [(datetime.datetime(2008, 1, 27, 0, 0),
                           datetime.datetime(2008, 2, 3, 0, 0)),
                          (datetime.datetime(2008, 2, 3, 0, 0),
                           datetime.datetime(2008, 2, 10, 0, 0)),
                          (datetime.datetime(2008, 2, 10, 0, 0),
                           datetime.datetime(2008, 2, 17, 0, 0)),
                          (datetime.datetime(2008, 2, 17, 0, 0),
                           datetime.datetime(2008, 2, 24, 0, 0)),
                          (datetime.datetime(2008, 2, 24, 0, 0),
                           datetime.datetime(2008, 3, 2, 0, 0))])

    def test_get_days(self):
        weeks = self.month.get_weeks()
        week = weeks[0]
        days = week.get_days()
        self.assertEqual(
            [(len(day.occurrences), day.start, day.end) for day in days],
            [(0, datetime.datetime(2008, 1, 27, 0,
                                   0), datetime.datetime(2008, 1, 28, 0, 0)),
             (0, datetime.datetime(2008, 1, 28, 0,
                                   0), datetime.datetime(2008, 1, 29, 0, 0)),
             (0, datetime.datetime(2008, 1, 29, 0,
                                   0), datetime.datetime(2008, 1, 30, 0, 0)),
             (0, datetime.datetime(2008, 1, 30, 0,
                                   0), datetime.datetime(2008, 1, 31, 0, 0)),
             (0, datetime.datetime(2008, 1, 31, 0,
                                   0), datetime.datetime(2008, 2, 1, 0, 0)),
             (0, datetime.datetime(
                 2008, 2, 1, 0, 0), datetime.datetime(2008, 2, 2, 0, 0)),
             (1, datetime.datetime(
                 2008, 2, 2, 0, 0), datetime.datetime(2008, 2, 3, 0, 0))])
예제 #11
0
 def setUp(self):
     rule = Rule(frequency="WEEKLY")
     rule.save()
     data = {
         'title': 'Recent Event',
         'start': datetime.datetime(2008, 1, 5, 8, 0),
         'end': datetime.datetime(2008, 1, 5, 9, 0),
         'end_recurring_period': datetime.datetime(2008, 5, 5, 0, 0),
         'rule': rule,
     }
     recurring_event = Event(**data)
     recurring_event.save()
     self.month = Month(events=Event.objects.all(),
                        date=datetime.datetime(2008, 2, 7, 9, 0))
예제 #12
0
    def setUp(self):
        self.timezone = pytz.timezone('Europe/Amsterdam')
        self.day = Day(
            events=Event.objects.all(),
            date=self.timezone.localize(datetime.datetime(2013, 12, 17, 9, 0)),
            tzinfo=self.timezone
        )

        self.week = Week(
            events=Event.objects.all(),
            date=self.timezone.localize(datetime.datetime(2013, 12, 17, 9, 0)),
            tzinfo=self.timezone,
        )

        self.month = Month(
            events=Event.objects.all(),
            date=self.timezone.localize(datetime.datetime(2013, 12, 17, 9, 0)),
            tzinfo=self.timezone,
        )

        self.year = Year(
            events=Event.objects.all(),
            date=self.timezone.localize(datetime.datetime(2013, 12, 17, 9, 0)),
            tzinfo=self.timezone,
        )
예제 #13
0
 def setUp(self):
     self.timezone = pytz.timezone('Europe/Amsterdam')
     self.month = Month(
         events=Event.objects.all(),
         date=self.timezone.localize(datetime.datetime(2013, 11, 17, 9, 0)),
         tzinfo=self.timezone,
     )
예제 #14
0
 def setUp(self):
     rule = Rule(frequency="WEEKLY")
     rule.save()
     cal = Room(name="MyCal")
     cal.save()
     data = {
         'title': 'Recent Reservation',
         'start': datetime.datetime(2008, 1, 5, 8, 0),
         'end': datetime.datetime(2008, 1, 5, 9, 0),
         'end_recurring_period': datetime.datetime(2008, 5, 5, 0, 0),
         'rule': rule,
         'room': cal
     }
     recurring_reservation = Reservation(**data)
     recurring_reservation.save()
     self.month = Month(reservations=Reservation.objects.all(),
                        date=datetime.datetime(2008, 2, 7, 9, 0))
예제 #15
0
    def get_context_data(self, **kwargs):
        context = super(SchedulesDetailView, self).get_context_data(**kwargs)
        schedule = self.get_object()
        date = timezone.now()
        date_from_request = coerce_date_dict(self.request.GET) or None
        if date_from_request:
            try:
                date = datetime(**date_from_request)
            except ValueError:
                raise Http404
        event_list = schedule.event_set.all()
        on_call_1, on_call_2 = self.get_on_call_users()
        local_timezone = timezone.get_default_timezone()
        if 'django_timezone' in self.request.session:  # pragma: no cover
            local_timezone = pytz.timezone(
                self.request.session['django_timezone'])
        period_objects = {}
        month = Month(event_list, date, None, None, local_timezone)
        shift = None
        if shift:  # pragma: no cover
            if shift == -1:
                month = month.prev()
            if shift == 1:
                month = month.next()
        size = 'regular'
        day_names = weekday_abbrs if size == 'small' else weekday_names

        extra_context = {
            'day_names': day_names,
            'month': month,
            'size': size,
            'date': date,
            'periods': period_objects,
            'calendar': schedule,
            'weekday_names': weekday_names,
            'currently_oncall_1': on_call_1,
            'currently_oncall_2': on_call_2,
            'local_timezone': local_timezone,
            'current_date': timezone.now(),
            'here': f"{self.request.get_full_path()}",
        }
        context.update(extra_context)
        return context
예제 #16
0
class TestMonth(TestCase):
    def setUp(self):
        rule = Rule(frequency="WEEKLY")
        rule.save()
        cal = Calendar(name="MyCal")
        cal.save()
        data = {
            "title": "Recent Event",
            "start": datetime.datetime(2008, 1, 5, 8, 0),
            "end": datetime.datetime(2008, 1, 5, 9, 0),
            "end_recurring_period": datetime.datetime(2008, 5, 5, 0, 0),
            "rule": rule,
            "calendar": cal,
        }
        recurring_event = Event(**data)
        recurring_event.save()
        self.month = Month(events=Event.objects.all(), date=datetime.datetime(2008, 2, 7, 9, 0))

    def test_get_weeks(self):
        weeks = self.month.get_weeks()
        self.assertEqual(
            [(week.start, week.end) for week in weeks],
            [
                (datetime.datetime(2008, 1, 27, 0, 0), datetime.datetime(2008, 2, 3, 0, 0)),
                (datetime.datetime(2008, 2, 3, 0, 0), datetime.datetime(2008, 2, 10, 0, 0)),
                (datetime.datetime(2008, 2, 10, 0, 0), datetime.datetime(2008, 2, 17, 0, 0)),
                (datetime.datetime(2008, 2, 17, 0, 0), datetime.datetime(2008, 2, 24, 0, 0)),
                (datetime.datetime(2008, 2, 24, 0, 0), datetime.datetime(2008, 3, 2, 0, 0)),
            ],
        )

    def test_get_days(self):
        weeks = self.month.get_weeks()
        week = weeks[0]
        days = week.get_days()
        self.assertEqual(
            [(len(day.occurrences), day.start, day.end) for day in days],
            [
                (0, datetime.datetime(2008, 1, 27, 0, 0), datetime.datetime(2008, 1, 28, 0, 0)),
                (0, datetime.datetime(2008, 1, 28, 0, 0), datetime.datetime(2008, 1, 29, 0, 0)),
                (0, datetime.datetime(2008, 1, 29, 0, 0), datetime.datetime(2008, 1, 30, 0, 0)),
                (0, datetime.datetime(2008, 1, 30, 0, 0), datetime.datetime(2008, 1, 31, 0, 0)),
                (0, datetime.datetime(2008, 1, 31, 0, 0), datetime.datetime(2008, 2, 1, 0, 0)),
                (0, datetime.datetime(2008, 2, 1, 0, 0), datetime.datetime(2008, 2, 2, 0, 0)),
                (1, datetime.datetime(2008, 2, 2, 0, 0), datetime.datetime(2008, 2, 3, 0, 0)),
            ],
        )

    def test_month_convenience_functions(self):
        self.assertEqual(self.month.prev_month(), datetime.datetime(2008, 1, 1, 0, 0))
        self.assertEqual(self.month.next_month(), datetime.datetime(2008, 3, 1, 0, 0))
        self.assertEqual(self.month.current_year(), datetime.datetime(2008, 1, 1, 0, 0))
        self.assertEqual(self.month.prev_year(), datetime.datetime(2007, 1, 1, 0, 0))
        self.assertEqual(self.month.next_year(), datetime.datetime(2009, 1, 1, 0, 0))
예제 #17
0
 def setUp(self):
     rule = Rule.objects.create(frequency="WEEKLY")
     cal = Calendar.objects.create(name="MyCal")
     Event.objects.create(
         title='Recent Event',
         start=datetime.datetime(2008, 1, 5, 8, 0, tzinfo=pytz.utc),
         end=datetime.datetime(2008, 1, 5, 9, 0, tzinfo=pytz.utc),
         end_recurring_period=datetime.datetime(2008, 5, 5, 0, 0, tzinfo=pytz.utc),
         rule=rule,
         calendar=cal,
     )
     self.month = Month(events=Event.objects.all(),
                        date=datetime.datetime(2008, 2, 7, 9, 0, tzinfo=pytz.utc))
예제 #18
0
 def setUp(self):
     rule = Rule.objects.create(frequency="WEEKLY")
     cal = Calendar.objects.create(name="MyCal")
     data = {
         'title': 'Recent Event',
         'start': datetime.datetime(2008, 1, 5, 8, 0, tzinfo=pytz.utc),
         'end': datetime.datetime(2008, 1, 5, 9, 0, tzinfo=pytz.utc),
         'end_recurring_period': datetime.datetime(2008, 5, 5, 0, 0, tzinfo=pytz.utc),
         'rule': rule,
         'calendar': cal
     }
     Event.objects.create(**data)
     self.month = Month(events=Event.objects.all(),
                        date=datetime.datetime(2008, 2, 7, 9, 0, tzinfo=pytz.utc))
예제 #19
0
 def setUp(self):
     rule = Rule(frequency = "WEEKLY")
     rule.save()
     data = {
             'title': 'Recent Event',
             'start': datetime.datetime(2008, 1, 5, 8, 0),
             'end': datetime.datetime(2008, 1, 5, 9, 0),
             'end_recurring_period' : datetime.datetime(2008, 5, 5, 0, 0),
             'rule': rule,
            }
     recurring_event = Event(**data)
     recurring_event.save()
     self.month = Month(events=Event.objects.all(),
                        date=datetime.datetime(2008, 2, 7, 9, 0))
예제 #20
0
 def setUp(self):
     rule = Rule(frequency="WEEKLY")
     rule.save()
     cal = Calendar(name="MyCal")
     cal.save()
     data = {
         "title": "Recent Event",
         "start": datetime.datetime(2008, 1, 5, 8, 0),
         "end": datetime.datetime(2008, 1, 5, 9, 0),
         "end_recurring_period": datetime.datetime(2008, 5, 5, 0, 0),
         "rule": rule,
         "calendar": cal,
     }
     recurring_event = Event(**data)
     recurring_event.save()
     self.month = Month(events=Event.objects.all(), date=datetime.datetime(2008, 2, 7, 9, 0))
 def setUp(self):
     rule = Rule(frequency="WEEKLY")
     rule.save()
     cal = Room(name="MyCal")
     cal.save()
     data = {
         "title": "Recent Reservation",
         "start": datetime.datetime(2008, 1, 5, 8, 0),
         "end": datetime.datetime(2008, 1, 5, 9, 0),
         "end_recurring_period": datetime.datetime(2008, 5, 5, 0, 0),
         "rule": rule,
         "room": cal,
     }
     recurring_reservation = Reservation(**data)
     recurring_reservation.save()
     self.month = Month(reservations=Reservation.objects.all(), date=datetime.datetime(2008, 2, 7, 9, 0))
class TestMonth(TestCase):
    def setUp(self):
        rule = Rule(frequency="WEEKLY")
        rule.save()
        cal = Room(name="MyCal")
        cal.save()
        data = {
            "title": "Recent Reservation",
            "start": datetime.datetime(2008, 1, 5, 8, 0),
            "end": datetime.datetime(2008, 1, 5, 9, 0),
            "end_recurring_period": datetime.datetime(2008, 5, 5, 0, 0),
            "rule": rule,
            "room": cal,
        }
        recurring_reservation = Reservation(**data)
        recurring_reservation.save()
        self.month = Month(reservations=Reservation.objects.all(), date=datetime.datetime(2008, 2, 7, 9, 0))

    def test_get_weeks(self):
        weeks = self.month.get_weeks()
        actuals = [(week.start, week.end) for week in weeks]

        if FIRST_DAY_OF_WEEK == 0:
            expecteds = [
                (datetime.datetime(2008, 1, 27, 0, 0), datetime.datetime(2008, 2, 3, 0, 0)),
                (datetime.datetime(2008, 2, 3, 0, 0), datetime.datetime(2008, 2, 10, 0, 0)),
                (datetime.datetime(2008, 2, 10, 0, 0), datetime.datetime(2008, 2, 17, 0, 0)),
                (datetime.datetime(2008, 2, 17, 0, 0), datetime.datetime(2008, 2, 24, 0, 0)),
                (datetime.datetime(2008, 2, 24, 0, 0), datetime.datetime(2008, 3, 2, 0, 0)),
            ]
        else:
            expecteds = [
                (datetime.datetime(2008, 1, 28, 0, 0), datetime.datetime(2008, 2, 4, 0, 0)),
                (datetime.datetime(2008, 2, 4, 0, 0), datetime.datetime(2008, 2, 11, 0, 0)),
                (datetime.datetime(2008, 2, 11, 0, 0), datetime.datetime(2008, 2, 18, 0, 0)),
                (datetime.datetime(2008, 2, 18, 0, 0), datetime.datetime(2008, 2, 25, 0, 0)),
                (datetime.datetime(2008, 2, 25, 0, 0), datetime.datetime(2008, 3, 3, 0, 0)),
            ]

        for actual, expected in zip(actuals, expecteds):
            self.assertEqual(actual, expected)

    def test_get_days(self):
        weeks = self.month.get_weeks()
        week = list(weeks)[0]
        days = week.get_days()
        actuals = [(len(day.occurrences), day.start, day.end) for day in days]

        if FIRST_DAY_OF_WEEK == 0:
            expecteds = [
                (0, datetime.datetime(2008, 1, 27, 0, 0), datetime.datetime(2008, 1, 28, 0, 0)),
                (0, datetime.datetime(2008, 1, 28, 0, 0), datetime.datetime(2008, 1, 29, 0, 0)),
                (0, datetime.datetime(2008, 1, 29, 0, 0), datetime.datetime(2008, 1, 30, 0, 0)),
                (0, datetime.datetime(2008, 1, 30, 0, 0), datetime.datetime(2008, 1, 31, 0, 0)),
                (0, datetime.datetime(2008, 1, 31, 0, 0), datetime.datetime(2008, 2, 1, 0, 0)),
                (0, datetime.datetime(2008, 2, 1, 0, 0), datetime.datetime(2008, 2, 2, 0, 0)),
                (1, datetime.datetime(2008, 2, 2, 0, 0), datetime.datetime(2008, 2, 3, 0, 0)),
            ]

        else:
            expecteds = [
                (0, datetime.datetime(2008, 1, 28, 0, 0), datetime.datetime(2008, 1, 29, 0, 0)),
                (0, datetime.datetime(2008, 1, 29, 0, 0), datetime.datetime(2008, 1, 30, 0, 0)),
                (0, datetime.datetime(2008, 1, 30, 0, 0), datetime.datetime(2008, 1, 31, 0, 0)),
                (0, datetime.datetime(2008, 1, 31, 0, 0), datetime.datetime(2008, 2, 1, 0, 0)),
                (0, datetime.datetime(2008, 2, 1, 0, 0), datetime.datetime(2008, 2, 2, 0, 0)),
                (1, datetime.datetime(2008, 2, 2, 0, 0), datetime.datetime(2008, 2, 3, 0, 0)),
                (0, datetime.datetime(2008, 2, 3, 0, 0), datetime.datetime(2008, 2, 4, 0, 0)),
            ]

        for actual, expected in zip(actuals, expecteds):
            self.assertEqual(actual, expected)

    def test_month_convenience_functions(self):
        self.assertEqual(self.month.prev_month().start, datetime.datetime(2008, 1, 1, 0, 0))
        self.assertEqual(self.month.next_month().start, datetime.datetime(2008, 3, 1, 0, 0))
        self.assertEqual(self.month.current_year().start, datetime.datetime(2008, 1, 1, 0, 0))
        self.assertEqual(self.month.prev_year().start, datetime.datetime(2007, 1, 1, 0, 0))
        self.assertEqual(self.month.next_year().start, datetime.datetime(2009, 1, 1, 0, 0))
예제 #23
0
 def get_month(self, date=datetime.datetime.now()):
     # deleteme
     # logging.debug(" ".join(['Calendar.get_month method date:', date.strftime('%Y-%m-%d')]))
     return Month(self.events.all(), date)
예제 #24
0
class TestMonth(TestCase):
    def setUp(self):
        rule = Rule(frequency="WEEKLY")
        rule.save()
        cal = Calendar(name="MyCal")
        cal.save()
        data = {
            'title':
            'Recent Event',
            'start':
            datetime.datetime(2008, 1, 5, 8, 0, tzinfo=pytz.utc),
            'end':
            datetime.datetime(2008, 1, 5, 9, 0, tzinfo=pytz.utc),
            'end_recurring_period':
            datetime.datetime(2008, 5, 5, 0, 0, tzinfo=pytz.utc),
            'rule':
            rule,
            'calendar':
            cal
        }
        recurring_event = Event(**data)
        recurring_event.save()
        self.month = Month(events=Event.objects.all(),
                           date=datetime.datetime(2008,
                                                  2,
                                                  7,
                                                  9,
                                                  0,
                                                  tzinfo=pytz.utc))

    def test_get_weeks(self):
        weeks = self.month.get_weeks()
        actuals = [(week.start, week.end) for week in weeks]

        if settings.FIRST_DAY_OF_WEEK == 0:
            expecteds = [
                (datetime.datetime(2008, 1, 27, 0, 0, tzinfo=pytz.utc),
                 datetime.datetime(2008, 2, 3, 0, 0, tzinfo=pytz.utc)),
                (datetime.datetime(2008, 2, 3, 0, 0, tzinfo=pytz.utc),
                 datetime.datetime(2008, 2, 10, 0, 0, tzinfo=pytz.utc)),
                (datetime.datetime(2008, 2, 10, 0, 0, tzinfo=pytz.utc),
                 datetime.datetime(2008, 2, 17, 0, 0, tzinfo=pytz.utc)),
                (datetime.datetime(2008, 2, 17, 0, 0, tzinfo=pytz.utc),
                 datetime.datetime(2008, 2, 24, 0, 0, tzinfo=pytz.utc)),
                (datetime.datetime(2008, 2, 24, 0, 0, tzinfo=pytz.utc),
                 datetime.datetime(2008, 3, 2, 0, 0, tzinfo=pytz.utc))
            ]
        else:
            expecteds = [
                (datetime.datetime(2008, 1, 28, 0, 0, tzinfo=pytz.utc),
                 datetime.datetime(2008, 2, 4, 0, 0, tzinfo=pytz.utc)),
                (datetime.datetime(2008, 2, 4, 0, 0, tzinfo=pytz.utc),
                 datetime.datetime(2008, 2, 11, 0, 0, tzinfo=pytz.utc)),
                (datetime.datetime(2008, 2, 11, 0, 0, tzinfo=pytz.utc),
                 datetime.datetime(2008, 2, 18, 0, 0, tzinfo=pytz.utc)),
                (datetime.datetime(2008, 2, 18, 0, 0, tzinfo=pytz.utc),
                 datetime.datetime(2008, 2, 25, 0, 0, tzinfo=pytz.utc)),
                (datetime.datetime(2008, 2, 25, 0, 0, tzinfo=pytz.utc),
                 datetime.datetime(2008, 3, 3, 0, 0, tzinfo=pytz.utc))
            ]

        for actual, expected in zip(actuals, expecteds):
            self.assertEqual(actual, expected)

    def test_get_days(self):
        weeks = self.month.get_weeks()
        week = list(weeks)[0]
        days = week.get_days()
        actuals = [(len(day.occurrences), day.start, day.end) for day in days]

        if settings.FIRST_DAY_OF_WEEK == 0:
            expecteds = [
                (0, datetime.datetime(2008, 1, 27, 0, 0, tzinfo=pytz.utc),
                 datetime.datetime(2008, 1, 28, 0, 0, tzinfo=pytz.utc)),
                (0, datetime.datetime(2008, 1, 28, 0, 0, tzinfo=pytz.utc),
                 datetime.datetime(2008, 1, 29, 0, 0, tzinfo=pytz.utc)),
                (0, datetime.datetime(2008, 1, 29, 0, 0, tzinfo=pytz.utc),
                 datetime.datetime(2008, 1, 30, 0, 0, tzinfo=pytz.utc)),
                (0, datetime.datetime(2008, 1, 30, 0, 0, tzinfo=pytz.utc),
                 datetime.datetime(2008, 1, 31, 0, 0, tzinfo=pytz.utc)),
                (0, datetime.datetime(2008, 1, 31, 0, 0, tzinfo=pytz.utc),
                 datetime.datetime(2008, 2, 1, 0, 0, tzinfo=pytz.utc)),
                (0, datetime.datetime(2008, 2, 1, 0, 0, tzinfo=pytz.utc),
                 datetime.datetime(2008, 2, 2, 0, 0, tzinfo=pytz.utc)),
                (1, datetime.datetime(2008, 2, 2, 0, 0, tzinfo=pytz.utc),
                 datetime.datetime(2008, 2, 3, 0, 0, tzinfo=pytz.utc)),
            ]

        else:
            expecteds = [
                (0, datetime.datetime(2008, 1, 28, 0, 0, tzinfo=pytz.utc),
                 datetime.datetime(2008, 1, 29, 0, 0, tzinfo=pytz.utc)),
                (0, datetime.datetime(2008, 1, 29, 0, 0, tzinfo=pytz.utc),
                 datetime.datetime(2008, 1, 30, 0, 0, tzinfo=pytz.utc)),
                (0, datetime.datetime(2008, 1, 30, 0, 0, tzinfo=pytz.utc),
                 datetime.datetime(2008, 1, 31, 0, 0, tzinfo=pytz.utc)),
                (0, datetime.datetime(2008, 1, 31, 0, 0, tzinfo=pytz.utc),
                 datetime.datetime(2008, 2, 1, 0, 0, tzinfo=pytz.utc)),
                (0, datetime.datetime(2008, 2, 1, 0, 0, tzinfo=pytz.utc),
                 datetime.datetime(2008, 2, 2, 0, 0, tzinfo=pytz.utc)),
                (1, datetime.datetime(2008, 2, 2, 0, 0, tzinfo=pytz.utc),
                 datetime.datetime(2008, 2, 3, 0, 0, tzinfo=pytz.utc)),
                (0, datetime.datetime(2008, 2, 3, 0, 0, tzinfo=pytz.utc),
                 datetime.datetime(2008, 2, 4, 0, 0, tzinfo=pytz.utc))
            ]

        for actual, expected in zip(actuals, expecteds):
            self.assertEqual(actual, expected)

    def test_month_convenience_functions(self):
        self.assertEqual(self.month.prev_month().start,
                         datetime.datetime(2008, 1, 1, 0, 0, tzinfo=pytz.utc))
        self.assertEqual(self.month.next_month().start,
                         datetime.datetime(2008, 3, 1, 0, 0, tzinfo=pytz.utc))
        self.assertEqual(self.month.current_year().start,
                         datetime.datetime(2008, 1, 1, 0, 0, tzinfo=pytz.utc))
        self.assertEqual(self.month.prev_year().start,
                         datetime.datetime(2007, 1, 1, 0, 0, tzinfo=pytz.utc))
        self.assertEqual(self.month.next_year().start,
                         datetime.datetime(2009, 1, 1, 0, 0, tzinfo=pytz.utc))
class TestMonth(TestCase):

    def setUp(self):
        rule = Rule.objects.create(frequency="WEEKLY")
        cal = Calendar.objects.create(name="MyCal")
        Event.objects.create(
            subtitle=subtitle,
            start=datetime.datetime(2008, 1, 5, 8, 0, tzinfo=pytz.utc),
            end=datetime.datetime(2008, 1, 5, 9, 0, tzinfo=pytz.utc),
            end_recurring_period=datetime.datetime(2008, 5, 5, 0, 0, tzinfo=pytz.utc),
            rule=rule,
            calendar=cal,
        )
        self.month = Month(events=Event.objects.all(),
                           date=datetime.datetime(2008, 2, 7, 9, 0, tzinfo=pytz.utc))

    # def test_get_weeks(self):
    #     weeks = self.month.get_weeks()
    #     actuals = [(week.start, week.end) for week in weeks]
    #
    #     if settings.FIRST_DAY_OF_WEEK == 0:
    #         expecteds = [
    #             (datetime.datetime(2008, 1, 27, 0, 0, tzinfo=pytz.utc),
    #              datetime.datetime(2008, 2, 3, 0, 0, tzinfo=pytz.utc)),
    #             (datetime.datetime(2008, 2, 3, 0, 0, tzinfo=pytz.utc),
    #              datetime.datetime(2008, 2, 10, 0, 0, tzinfo=pytz.utc)),
    #             (datetime.datetime(2008, 2, 10, 0, 0, tzinfo=pytz.utc),
    #              datetime.datetime(2008, 2, 17, 0, 0, tzinfo=pytz.utc)),
    #             (datetime.datetime(2008, 2, 17, 0, 0, tzinfo=pytz.utc),
    #              datetime.datetime(2008, 2, 24, 0, 0, tzinfo=pytz.utc)),
    #             (datetime.datetime(2008, 2, 24, 0, 0, tzinfo=pytz.utc),
    #              datetime.datetime(2008, 3, 2, 0, 0, tzinfo=pytz.utc))
    #         ]
    #     else:
    #         expecteds = [
    #             (datetime.datetime(2008, 1, 28, 0, 0, tzinfo=pytz.utc),
    #              datetime.datetime(2008, 2, 4, 0, 0, tzinfo=pytz.utc)),
    #             (datetime.datetime(2008, 2, 4, 0, 0, tzinfo=pytz.utc),
    #              datetime.datetime(2008, 2, 11, 0, 0, tzinfo=pytz.utc)),
    #             (datetime.datetime(2008, 2, 11, 0, 0, tzinfo=pytz.utc),
    #              datetime.datetime(2008, 2, 18, 0, 0, tzinfo=pytz.utc)),
    #             (datetime.datetime(2008, 2, 18, 0, 0, tzinfo=pytz.utc),
    #              datetime.datetime(2008, 2, 25, 0, 0, tzinfo=pytz.utc)),
    #             (datetime.datetime(2008, 2, 25, 0, 0, tzinfo=pytz.utc),
    #              datetime.datetime(2008, 3, 3, 0, 0, tzinfo=pytz.utc))
    #         ]
    #
    #     for actual, expected in zip(actuals, expecteds):
    #         self.assertEqual(actual, expected)

    # def test_get_days(self):
    #     weeks = self.month.get_weeks()
    #     week = list(weeks)[0]
    #     days = week.get_days()
    #     actuals = [(len(day.occurrences), day.start, day.end) for day in days]
    #
    #     if settings.FIRST_DAY_OF_WEEK == 0:
    #         expecteds = [
    #             (
    #                 0,
    #                 datetime.datetime(2008, 1, 27, 0, 0, tzinfo=pytz.utc),
    #                 datetime.datetime(2008, 1, 28, 0, 0, tzinfo=pytz.utc)
    #             ),
    #             (
    #                 0,
    #                 datetime.datetime(2008, 1, 28, 0, 0, tzinfo=pytz.utc),
    #                 datetime.datetime(2008, 1, 29, 0, 0, tzinfo=pytz.utc)
    #             ),
    #             (
    #                 0,
    #                 datetime.datetime(2008, 1, 29, 0, 0, tzinfo=pytz.utc),
    #                 datetime.datetime(2008, 1, 30, 0, 0, tzinfo=pytz.utc)
    #             ),
    #             (
    #                 0,
    #                 datetime.datetime(2008, 1, 30, 0, 0, tzinfo=pytz.utc),
    #                 datetime.datetime(2008, 1, 31, 0, 0, tzinfo=pytz.utc)
    #             ),
    #             (
    #                 0,
    #                 datetime.datetime(2008, 1, 31, 0, 0, tzinfo=pytz.utc),
    #                 datetime.datetime(2008, 2, 1, 0, 0, tzinfo=pytz.utc)
    #             ),
    #             (
    #                 0,
    #                 datetime.datetime(2008, 2, 1, 0, 0, tzinfo=pytz.utc),
    #                 datetime.datetime(2008, 2, 2, 0, 0, tzinfo=pytz.utc)
    #             ),
    #             (
    #                 1,
    #                 datetime.datetime(2008, 2, 2, 0, 0, tzinfo=pytz.utc),
    #                 datetime.datetime(2008, 2, 3, 0, 0, tzinfo=pytz.utc)
    #             ),
    #         ]
    #
    #     else:
    #         expecteds = [
    #             (0, datetime.datetime(2008, 1, 28, 0, 0, tzinfo=pytz.utc),
    #              datetime.datetime(2008, 1, 29, 0, 0, tzinfo=pytz.utc)),
    #             (0, datetime.datetime(2008, 1, 29, 0, 0, tzinfo=pytz.utc),
    #              datetime.datetime(2008, 1, 30, 0, 0, tzinfo=pytz.utc)),
    #             (0, datetime.datetime(2008, 1, 30, 0, 0, tzinfo=pytz.utc),
    #              datetime.datetime(2008, 1, 31, 0, 0, tzinfo=pytz.utc)),
    #             (0, datetime.datetime(2008, 1, 31, 0, 0, tzinfo=pytz.utc),
    #              datetime.datetime(2008, 2, 1, 0, 0, tzinfo=pytz.utc)),
    #             (0, datetime.datetime(2008, 2, 1, 0, 0, tzinfo=pytz.utc),
    #              datetime.datetime(2008, 2, 2, 0, 0, tzinfo=pytz.utc)),
    #             (1, datetime.datetime(2008, 2, 2, 0, 0, tzinfo=pytz.utc),
    #              datetime.datetime(2008, 2, 3, 0, 0, tzinfo=pytz.utc)),
    #             (0, datetime.datetime(2008, 2, 3, 0, 0, tzinfo=pytz.utc),
    #              datetime.datetime(2008, 2, 4, 0, 0, tzinfo=pytz.utc))
    #         ]
    #
    #     for actual, expected in zip(actuals, expecteds):
    #         self.assertEqual(actual, expected)

    def test_month_convenience_functions(self):
        self.assertEqual(self.month.prev_month().start, datetime.datetime(2008, 1, 1, 0, 0, tzinfo=pytz.utc))
        self.assertEqual(self.month.next_month().start, datetime.datetime(2008, 3, 1, 0, 0, tzinfo=pytz.utc))
        self.assertEqual(self.month.current_year().start, datetime.datetime(2008, 1, 1, 0, 0, tzinfo=pytz.utc))
        self.assertEqual(self.month.prev_year().start, datetime.datetime(2007, 1, 1, 0, 0, tzinfo=pytz.utc))
        self.assertEqual(self.month.next_year().start, datetime.datetime(2009, 1, 1, 0, 0, tzinfo=pytz.utc))
 def current_month(self):
     return Month(self.events, self.start, tzinfo=self.tzinfo)
예제 #27
0
class TestMonth(TestCase):

    def setUp(self):
        rule = Rule(frequency = "WEEKLY")
        rule.save()
        cal = Calendar(name="MyCal")
        cal.save()
        data = {
                'title': 'Recent Event',
                'start': datetime.datetime(2008, 1, 5, 8, 0, tzinfo=pytz.utc),
                'end': datetime.datetime(2008, 1, 5, 9, 0, tzinfo=pytz.utc),
                'end_recurring_period' : datetime.datetime(2008, 5, 5, 0, 0, tzinfo=pytz.utc),
                'rule': rule,
                'calendar': cal
               }
        recurring_event = Event(**data)
        recurring_event.save()
        self.month = Month(events=Event.objects.all(),
                           date=datetime.datetime(2008, 2, 7, 9, 0, tzinfo=pytz.utc))

    def test_get_weeks(self):
        weeks = self.month.get_weeks()
        actuals = [(week.start, week.end) for week in weeks]

        if settings.FIRST_DAY_OF_WEEK == 0:
            expecteds = [
                (datetime.datetime(2008, 1, 27, 0, 0, tzinfo=pytz.utc),
                 datetime.datetime(2008, 2, 3, 0, 0, tzinfo=pytz.utc)),
                (datetime.datetime(2008, 2, 3, 0, 0, tzinfo=pytz.utc),
                 datetime.datetime(2008, 2, 10, 0, 0, tzinfo=pytz.utc)),
                (datetime.datetime(2008, 2, 10, 0, 0, tzinfo=pytz.utc),
                 datetime.datetime(2008, 2, 17, 0, 0, tzinfo=pytz.utc)),
                (datetime.datetime(2008, 2, 17, 0, 0, tzinfo=pytz.utc),
                 datetime.datetime(2008, 2, 24, 0, 0, tzinfo=pytz.utc)),
                (datetime.datetime(2008, 2, 24, 0, 0, tzinfo=pytz.utc),
                 datetime.datetime(2008, 3, 2, 0, 0, tzinfo=pytz.utc))
            ]
        else:
            expecteds = [
                (datetime.datetime(2008, 1, 28, 0, 0, tzinfo=pytz.utc),
                 datetime.datetime(2008, 2, 4, 0, 0, tzinfo=pytz.utc)),
                (datetime.datetime(2008, 2, 4, 0, 0, tzinfo=pytz.utc),
                 datetime.datetime(2008, 2, 11, 0, 0, tzinfo=pytz.utc)),
                (datetime.datetime(2008, 2, 11, 0, 0, tzinfo=pytz.utc),
                 datetime.datetime(2008, 2, 18, 0, 0, tzinfo=pytz.utc)),
                (datetime.datetime(2008, 2, 18, 0, 0, tzinfo=pytz.utc),
                 datetime.datetime(2008, 2, 25, 0, 0, tzinfo=pytz.utc)),
                (datetime.datetime(2008, 2, 25, 0, 0, tzinfo=pytz.utc),
                 datetime.datetime(2008, 3, 3, 0, 0, tzinfo=pytz.utc))
            ]

        for actual, expected in zip(actuals, expecteds):
            self.assertEqual(actual, expected)

    def test_get_days(self):
        weeks = self.month.get_weeks()
        week = list(weeks)[0]
        days = week.get_days()
        actuals = [(len(day.occurrences), day.start,day.end) for day in days]

        if settings.FIRST_DAY_OF_WEEK == 0:
            expecteds = [
                (
                    0,
                    datetime.datetime(2008, 1, 27, 0, 0, tzinfo=pytz.utc),
                    datetime.datetime(2008, 1, 28, 0, 0, tzinfo=pytz.utc)
                ),
                (
                    0,
                    datetime.datetime(2008, 1, 28, 0, 0, tzinfo=pytz.utc),
                    datetime.datetime(2008, 1, 29, 0, 0, tzinfo=pytz.utc)
                ),
                (
                    0,
                    datetime.datetime(2008, 1, 29, 0, 0, tzinfo=pytz.utc),
                    datetime.datetime(2008, 1, 30, 0, 0, tzinfo=pytz.utc)
                ),
                (
                    0,
                    datetime.datetime(2008, 1, 30, 0, 0, tzinfo=pytz.utc),
                    datetime.datetime(2008, 1, 31, 0, 0, tzinfo=pytz.utc)
                ),
                (
                    0,
                    datetime.datetime(2008, 1, 31, 0, 0, tzinfo=pytz.utc),
                    datetime.datetime(2008, 2, 1, 0, 0, tzinfo=pytz.utc)
                ),
                (
                    0,
                    datetime.datetime(2008, 2, 1, 0, 0, tzinfo=pytz.utc),
                    datetime.datetime(2008, 2, 2, 0, 0, tzinfo=pytz.utc)
                ),
                (
                    1,
                    datetime.datetime(2008, 2, 2, 0, 0, tzinfo=pytz.utc),
                    datetime.datetime(2008, 2, 3, 0, 0, tzinfo=pytz.utc)
                ),
            ]

        else:
            expecteds = [
                (0, datetime.datetime(2008, 1, 28, 0, 0, tzinfo=pytz.utc),
                 datetime.datetime(2008, 1, 29, 0, 0, tzinfo=pytz.utc)),
                (0, datetime.datetime(2008, 1, 29, 0, 0, tzinfo=pytz.utc),
                 datetime.datetime(2008, 1, 30, 0, 0, tzinfo=pytz.utc)),
                (0, datetime.datetime(2008, 1, 30, 0, 0, tzinfo=pytz.utc),
                 datetime.datetime(2008, 1, 31, 0, 0, tzinfo=pytz.utc)),
                (0, datetime.datetime(2008, 1, 31, 0, 0, tzinfo=pytz.utc),
                 datetime.datetime(2008, 2, 1, 0, 0, tzinfo=pytz.utc)),
                (0, datetime.datetime(2008, 2, 1, 0, 0, tzinfo=pytz.utc),
                 datetime.datetime(2008, 2, 2, 0, 0, tzinfo=pytz.utc)),
                (1, datetime.datetime(2008, 2, 2, 0, 0, tzinfo=pytz.utc),
                 datetime.datetime(2008, 2, 3, 0, 0, tzinfo=pytz.utc)),
                (0, datetime.datetime(2008, 2, 3, 0, 0, tzinfo=pytz.utc),
                 datetime.datetime(2008, 2, 4, 0, 0, tzinfo=pytz.utc))
            ]

        for actual, expected in zip(actuals, expecteds):
            self.assertEqual(actual, expected)


    def test_month_convenience_functions(self):
        self.assertEqual( self.month.prev_month().start, datetime.datetime(2008, 1, 1, 0, 0, tzinfo=pytz.utc))
        self.assertEqual( self.month.next_month().start, datetime.datetime(2008, 3, 1, 0, 0, tzinfo=pytz.utc))
        self.assertEqual( self.month.current_year().start, datetime.datetime(2008, 1, 1, 0, 0, tzinfo=pytz.utc))
        self.assertEqual( self.month.prev_year().start, datetime.datetime(2007, 1, 1, 0, 0, tzinfo=pytz.utc))
        self.assertEqual( self.month.next_year().start, datetime.datetime(2009, 1, 1, 0, 0, tzinfo=pytz.utc))
예제 #28
0
class TestMonth(TestCase):
    def setUp(self):
        self.month = Month(events=Event.objects.all(),
                           date=datetime.datetime(2008,
                                                  2,
                                                  7,
                                                  9,
                                                  0,
                                                  tzinfo=pytz.utc))

    def test_get_weeks(self):
        weeks = self.month.get_weeks()
        actuals = [(week.start, week.end) for week in weeks]

        expecteds = [(datetime.datetime(2008, 1, 27, 0, 0, tzinfo=pytz.utc),
                      datetime.datetime(2008, 2, 3, 0, 0, tzinfo=pytz.utc)),
                     (datetime.datetime(2008, 2, 3, 0, 0, tzinfo=pytz.utc),
                      datetime.datetime(2008, 2, 10, 0, 0, tzinfo=pytz.utc)),
                     (datetime.datetime(2008, 2, 10, 0, 0, tzinfo=pytz.utc),
                      datetime.datetime(2008, 2, 17, 0, 0, tzinfo=pytz.utc)),
                     (datetime.datetime(2008, 2, 17, 0, 0, tzinfo=pytz.utc),
                      datetime.datetime(2008, 2, 24, 0, 0, tzinfo=pytz.utc)),
                     (datetime.datetime(2008, 2, 24, 0, 0, tzinfo=pytz.utc),
                      datetime.datetime(2008, 3, 2, 0, 0, tzinfo=pytz.utc))]

        for actual, expected in zip(actuals, expecteds):
            self.assertEqual(actual, expected)

    def test_get_days(self):
        weeks = self.month.get_weeks()
        week = list(weeks)[0]
        days = week.get_days()
        actuals = [(len(day.events), day.start, day.end) for day in days]
        expecteds = [
            (0, datetime.datetime(2008, 1, 27, 0, 0, tzinfo=pytz.utc),
             datetime.datetime(2008,
                               1,
                               27,
                               23,
                               59,
                               59,
                               999999,
                               tzinfo=pytz.utc)),
            (0, datetime.datetime(2008, 1, 28, 0, 0, tzinfo=pytz.utc),
             datetime.datetime(2008,
                               1,
                               28,
                               23,
                               59,
                               59,
                               999999,
                               tzinfo=pytz.utc)),
            (0, datetime.datetime(2008, 1, 29, 0, 0, tzinfo=pytz.utc),
             datetime.datetime(2008,
                               1,
                               29,
                               23,
                               59,
                               59,
                               999999,
                               tzinfo=pytz.utc)),
            (0, datetime.datetime(2008, 1, 30, 0, 0, tzinfo=pytz.utc),
             datetime.datetime(2008,
                               1,
                               30,
                               23,
                               59,
                               59,
                               999999,
                               tzinfo=pytz.utc)),
            (0, datetime.datetime(2008, 1, 31, 0, 0, tzinfo=pytz.utc),
             datetime.datetime(2008,
                               1,
                               31,
                               23,
                               59,
                               59,
                               999999,
                               tzinfo=pytz.utc)),
            (0, datetime.datetime(2008, 2, 1, 0, 0, tzinfo=pytz.utc),
             datetime.datetime(2008, 2, 1, 23, 59, 59, 999999,
                               tzinfo=pytz.utc)),
            (0, datetime.datetime(2008, 2, 2, 0, 0, tzinfo=pytz.utc),
             datetime.datetime(2008, 2, 2, 23, 59, 59, 999999,
                               tzinfo=pytz.utc)),
        ]

        for actual, expected in zip(actuals, expecteds):
            self.assertEqual(actual, expected)

    def test_month_convenience_functions(self):
        self.assertEqual(self.month.prev_month().start,
                         datetime.datetime(2008, 1, 1, 0, 0, tzinfo=pytz.utc))
        self.assertEqual(self.month.next_month().start,
                         datetime.datetime(2008, 3, 1, 0, 0, tzinfo=pytz.utc))
        self.assertEqual(self.month.current_year().start,
                         datetime.datetime(2008, 1, 1, 0, 0, tzinfo=pytz.utc))
        self.assertEqual(self.month.prev_year().start,
                         datetime.datetime(2007, 1, 1, 0, 0, tzinfo=pytz.utc))
        self.assertEqual(self.month.next_year().start,
                         datetime.datetime(2009, 1, 1, 0, 0, tzinfo=pytz.utc))
예제 #29
0
def details(request, calendar_slug,  periods=None):
    try:
        schedule = get_object_or_404(Calendar, slug=calendar_slug)
        date = coerce_date_dict(request.GET) or None
        if date:
            try:
                date = datetime(**date)
            except ValueError:
                raise Http404
        else:
            date = timezone.now()
        event_list = schedule.event_set.all()
        currently_oncall_users = escalation_helper.get_current_events_users(schedule)
        if len(currently_oncall_users) >= 2:
            oncall1 = f"{currently_oncall_users[0].username}, Phone Number: {currently_oncall_users[0].profile.phone_number}"
            oncall2 = f"{currently_oncall_users[1].username}, Phone Number: {currently_oncall_users[1].profile.phone_number}"
        else:
            oncall1 = "Nobody"
            oncall2 = "Nobody"

        if 'django_timezone' in request.session:
            local_timezone = pytz.timezone(request.session['django_timezone'])
        else:
            local_timezone = timezone.get_default_timezone()
        period_objects = {}
        for period in periods:
            if period.__name__.lower() == 'year':
                period_objects[period.__name__.lower()] = Year(event_list, date, None, local_timezone)
            else:
                period_objects[period.__name__.lower()] = Month(event_list, date, None, None, local_timezone)
        template = 'schedules/detail.html'
        month = period_objects['month']
        shift = None
        if shift:
            if shift == -1:
                month = month.prev()
            if shift == 1:
                month = next(month)
        size = 'regular'
        if size == 'small':
            day_names = weekday_abbrs
        else:
            day_names = weekday_names

        context = {
            'day_names': day_names,
            'month': month,
            'size': size,

            'date': date,
            'periods': period_objects,
            'calendar': schedule,
            'weekday_names': weekday_names,
            'currently_oncall_1': oncall1,
            'currently_oncall_2': oncall2,
            'local_timezone': local_timezone,
            'current_date': timezone.now(),
            'here': f"{request.get_full_path()}",
        }
        return render(request, template, context)
    except Calendar.DoesNotExist:
        raise Http404
예제 #30
0
 def get_month(self, date=None):
     if date is None:
         date = timezone.now()
     local_timezone = pytz.timezone('UTC')
     return Month(self.get_events(), date, None, None, local_timezone)