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)
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 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, )
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, )
def setUp(self): self.month = Month(events=Event.objects.all(), date=datetime.datetime(2008, 2, 7, 9, 0, tzinfo=pytz.utc))
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)
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))
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 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 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
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
def current_month(self): return Month(self.events, self.start, tzinfo=self.tzinfo)
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)
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)