Example #1
0
    def test_edge_case_events(self):
        cal = Calendar(name="MyCal")
        cal.save()
        data_1 = {
            'title': 'Edge case event test one',
            'start': datetime.datetime(2013, 1, 5, 8, 0, tzinfo=pytz.utc),
            'end': datetime.datetime(2013, 1, 5, 9, 0, tzinfo=pytz.utc),
            'calendar': cal
        }
        data_2 = {
            'title': 'Edge case event test two',
            'start': datetime.datetime(2013, 1, 5, 9, 0, tzinfo=pytz.utc),
            'end': datetime.datetime(2013, 1, 5, 12, 0, tzinfo=pytz.utc),
            'calendar': cal
        }
        event_one = Event(**data_1)
        event_two = Event(**data_2)
        event_one.save()
        event_two.save()
        occurrences_two = event_two.get_occurrences(datetime.datetime(2013, 1, 5, 9, 0, tzinfo=pytz.utc),
                                                    datetime.datetime(2013, 1, 5, 12, 0, tzinfo=pytz.utc))
        self.assertEqual(1, len(occurrences_two))

        occurrences_one = event_one.get_occurrences(datetime.datetime(2013, 1, 5, 9, 0, tzinfo=pytz.utc),
                                                    datetime.datetime(2013, 1, 5, 12, 0, tzinfo=pytz.utc))
        self.assertEqual(0, len(occurrences_one))
    def setUp(self):
        weekly = Rule(frequency = "WEEKLY")
        weekly.save()
        daily = Rule(frequency = "DAILY")
        daily.save()
        cal = Calendar(name="MyCal")
        cal.save()

        self.event1 = Event(**{
                'title': 'Weekly Event',
                'start': datetime.datetime(2009, 4, 1, 8, 0),
                'end': datetime.datetime(2009, 4, 1, 9, 0),
                'end_recurring_period' : datetime.datetime(2009, 10, 5, 0, 0),
                'rule': weekly,
                'calendar': cal
               })
        self.event1.save()
        self.event2 = Event(**{
                'title': 'Recent Event',
                'start': datetime.datetime(2008, 1, 5, 9, 0),
                'end': datetime.datetime(2008, 1, 5, 10, 0),
                'end_recurring_period' : datetime.datetime(2009, 5, 5, 0, 0),
                'rule': daily,
                'calendar': cal
               })
        self.event2.save()
Example #3
0
def allnight_submit(request):
    datestr = request.POST['date']
    club = request.POST['club']
    # 철야를 신청한 동아리의 calendar slug 값
    owner_slug = admin_slug_dict[club]
    color = slug_color_dict[owner_slug]

    start = (datetime.datetime.strptime(datestr, '%b %d, %Y') +
             datetime.timedelta(days=1))
    end = start + datetime.timedelta(hours=6)

    # DEFAULT slug만 따로 try-except하는 이유:
    # 이미 철야가 등록된 동아리가 있는지 check하기 위함
    try:
        event = Event.objects.get(
            calendar=Calendar.objects.get(slug='DEFAULT'),
            start=start,
            end=end,
            creator=UserModel.objects.get(username=club),
        )
        return render_to_response(
            'error.html', {
                'error_name': '403',
                'error_msg': '이미 철야가 등록된 날짜입니다 :( ',
                'prev_page': '/allnight'
            })

    except ObjectDoesNotExist:
        event = Event(
            calendar=Calendar.objects.get(slug='DEFAULT'),
            title=club[:-5],
            start=start,
            end=end,
            color_event=color,
            creator=UserModel.objects.get(username=club),
        )
        event.save()

    # DEFAULT 제외
    for slug in slugs[1:]:
        if slug == owner_slug:
            title = '철야'
            c = '#333333'
        else:
            title = club[:-5]
            c = others_color

        Event(
            calendar=Calendar.objects.get(slug=slug),
            title=title,
            start=start,
            end=end,
            color_event=c,
            creator=UserModel.objects.get(username=club),
        ).save()

    url = '/timetable'
    return HttpResponseRedirect(url)
Example #4
0
    def add_new(self, user):
        try:
            client = Client.objects.get(pk=self.cleaned_data['client'])

            if client.phone:
                event_title = "{name} {phone} {id}".format(
                    name=client.get_full_name(),
                    phone=client.phone,
                    id=client.client_id)
            else:
                event_title = "{name} {id}".format(name=client.get_full_name(),
                                                   id=client.client_id)

            event = Event(start=parser.parse(
                self.cleaned_data['start_datetime']),
                          end=parser.parse(self.cleaned_data['end_datetime']),
                          title=event_title,
                          creator=user)
            event.save()
            appointment = Appointment(
                client=client,
                venue=Venue.objects.get(pk=self.cleaned_data['venue_id']),
                event=event,
                creator=user,
                customer=user.userprofile.customer)
            appointment.save()
            return appointment
        except Client.DoesNotExist:
            return False
Example #5
0
def clubSubmit(request):
    date = request.POST.getlist('date')
    time = request.POST.getlist('time')
    team = request.POST.get('teamname')
    club = request.POST.get('club')
    # example: Jul 13, 2018 12:30 PM
    start = datetime.datetime.strptime(date[0] + ' ' + time[0],
                                       '%b %d, %Y %I:%M %p')
    end = datetime.datetime.strptime(date[1] + ' ' + time[1],
                                     '%b %d, %Y %I:%M %p')
    color = random.choice(color_set)
    if end < start:
        return render_to_response(
            'error.html', {
                'error_name': '시간설정 오류!',
                'error_msg': error_msg_dict['time_err'],
                'prev_page': '/sctime'
            })

    url = '/timetable'

    slug = admin_slug_dict[club]
    Event(
        calendar=Calendar.objects.get(slug=slug),
        title=team,
        start=start,
        end=end,
        color_event=color,
        creator=UserModel.objects.get(username=club),
    ).save()

    url = '/timetable'

    return HttpResponseRedirect(url)
Example #6
0
def create_twelve(request):
    if request.is_ajax():
        to_monday = date.today().weekday()
        start = date.today() - datetime.timedelta(days=to_monday)  # Find Monday
        fake_end = start + datetime.timedelta(days=84)
        if fake_end.weekday() != 4:
            end = fake_end - datetime.timedelta(days=(fake_end.weekday() - 4))
        else:
            end = fake_end
        day = start
        total = 0
        dupe_list = []
        weekend = set([5, 6])  # Python week starts on Monday as 0
        while day <= end:
            if day.weekday() not in weekend:
                    for period in period_choices:
                        for cart in cart_choice:
                            open = Event(day=day, period=period[0], cart=cart[0])
                            try:
                                open.save()
                                total+=1
                            except IntegrityError:
                                dupe = str(open)
                                dupe_list.append(dupe)
                                pass
            day += datetime.timedelta(days=1)
        data = {'start': start, 'end': end, 'dupe_list': dupe_list, 'total': total}
        return HttpResponse(json.dumps(data, cls=DjangoJSONEncoder))
Example #7
0
def create_month(request):
    if request.is_ajax():
        month = date.today().month
        year = date.today().year
       # last = calendar.monthrange(year, month) # Last day
        start = date.today().replace(day=1) # Get the first day of the month
        end = date.today().replace(day=(calendar.monthrange(year, month)[1]))
        weekend = set([5, 6])  # Python week starts on Monday as 0
        dupe_list = []
        total = 0
        day = start
        while day <= end:
            if day.weekday() not in weekend:
                    for period in period_choices:
                        for cart in cart_choice:
                            open = Event(day=day, period=period[0], cart=cart[0])
                            try:
                                open.save()
                                total+=1
                            except IntegrityError:
                                dupe = str(open)
                                dupe_list.append(dupe)
                                pass
            day += datetime.timedelta(days=1)
        data = {'start': start, 'end': end, 'dupe_list': dupe_list, 'total': total}
        return HttpResponse(json.dumps(data, cls=DjangoJSONEncoder))
Example #8
0
    def save(self, *args, **kwargs):
        if not self.nk:
            self.nk = create_hash(self)

        if self.cs_event.status != 'r':
            data = {
                'title':
                'Charging Time for ' + str(self.ev) +
                str(self.cs_event.cs.name),
                'start':
                self.cs_event.startDateTime,
                'end':
                self.cs_event.endDateTime,
                'calendar':
                self.ev.calendar
            }

            event = Event(**data)
            event.save()
            self.cs_event.ev_event_id = event.id
            self.cs_event.save()
            self.ev.calendar.events.add(event)
        else:
            raise ValidationError(_('EV event already reserved'))

        super().save(*args, **kwargs)
Example #9
0
    def save(self, *args, **kwargs):
        #TODO: fix bug (Issue #34) . the save method prevents the creation of another event with the
        # 				same times, even if this is a different CS) SEE issue
        # if self.cs_event_nk is None and CSEvent.objects.filter(startDateTime=self.startDateTime, endDateTime=self.endDateTime).exists():
        # 	raise ValidationError(_('CS Event at {0}-{1} already exists'.format(self.startDateTime, self.endDateTime)))

        if not self.cs_event_nk:
            self.cs_event_nk = create_hash(self)

        if self.ev_event_id == -1:  # not reserved yet

            cs_cal = Calendar.objects.get(id=self.cs.calendar.id)

            data = {
                'title': 'Charging Slot for ' + self.cs.name,
                'start': self.startDateTime,
                'end': self.endDateTime,
                'calendar': cs_cal
            }

            event = Event(**data)
            event.save()
            cs_cal.events.add(event)

        elif self.ev_event_id != -1 and self.status == 'AVAILABLE':  # about to be reserved
            self.status = 'RESERVED'

        super().save(*args, **kwargs)
Example #10
0
def add_task(request, flat_id=None):
    name = request.data.get('name', None)
    user_ids = request.data.get('users', None)
    frequency = request.data.get('frequency', None)

    if name is None or user_ids is None or frequency is None:
        return Response(data={'message': 'Wrong parameters'}, status=400)

    if frequency not in ['DAILY', 'WEEKLY', 'MONTHLY']:
        return Response(
            data={'message': 'Frequency can be: DAILY, WEEKLY, MONTHLY'},
            status=400)

    try:
        flat = Flat.objects.get(id=flat_id)
    except ObjectDoesNotExist:
        return Response(
            data={'message': 'The flat {0} does not exist.'.format(flat_id)},
            status=400)

    user_list = []
    for user_id in user_ids.split(','):
        try:
            user = User.objects.get(id=user_id)
            if user not in flat.users.all():
                return Response(data={
                    'message':
                    '{0} is not a member of the flat.'.format(user.username)
                },
                                status=400)

            user_list.append(user)
        except ObjectDoesNotExist:
            return Response(data={
                'message':
                'The user id {0} does not exist.'.format(user_id)
            },
                            status=400)

    rule = Rule(frequency=frequency, name='{0}_{1}'.format(frequency, name))
    rule.save()

    event = Event(rule=rule,
                  start=datetime.now(),
                  end=datetime.now() + timedelta(days=60),
                  calendar=Calendar.objects.get_calendar_for_object(flat))
    event.save()

    task = Task(flat=flat, name=name, event=event)
    task.save()

    for u in user_list:
        task.users.add(u)
    task.refresh_from_db()

    return Response(data={
        'message': 'Your task has been created.',
        'task': TaskSerializer(task).data,
    },
                    status=200)
Example #11
0
def borrowSubmit(request):
    date = request.POST.getlist('date')
    time = request.POST.getlist('time')
    team = request.POST.get('teamname')
    club = request.POST.get('club')
    # Jul 13, 2018 12:30 PM
    start = datetime.datetime.strptime(date[0]+' '+time[0], '%b %d, %Y %I:%M %p')
    end = datetime.datetime.strptime(date[1]+' '+time[1], '%b %d, %Y %I:%M %p')
    color = random.choice(color_set)
    if end < start:
        return render_to_response('error.html', {'error_name': '시간설정 오류!', 'error_msg': error_msg_dict['time_err'], 'prev_page': '/borrow'})

    url = '/timetable'
		
    events = []
    
    for slug in slugs:
        if slug != 'DEFAULT':
            color = others_color
        events.append(Event(calendar=Calendar.objects.get(slug=slug),
                   			title=team,
                   			start=start,
                   			end=end,
                   			color_event=color,
                   			creator=UserModel.objects.get(username=club),)
					 )
		
    for event in events:	
        event.save()
    
    return HttpResponseRedirect(url)
Example #12
0
def set_time(weekList, weekday, curYear, curMonth, lastDay):
    j=1
    for aList in weekList:
        i=0
        isMorning = weekList.index(aList) == 0
        for day in aList:
            if isMorning:
                tit = '오전 공용시간\n드럼/합주 우선:\n' + slug_user_dict[day]
                c = club_colors[0]
            else:    
                tit = slug_user_dict[day]
            
            date = getFLDay(i, weekday, lastDay)
                
            for slug in slugs:
                # 자기 동아리 시간은 동아리별 시간표에서 비워둔다
                # 동아리 내 시간분배를 잘 볼 수 있게 하기 위함
                # 단, 아침은 예외
                if not isMorning and day == slug:
                    continue
                    
                if slug == 'DEFAULT' and not isMorning:
                    c = slug_color_dict[day]
                elif not isMorning:
                    c = others_color
                    
                try:
                    event = Event.objects.get(calendar=Calendar.objects.get(slug=slug),
                                              start=datetime.datetime(curYear, curMonth, date['first'], j*6, 0),
                                              end=datetime.datetime(curYear, curMonth, date['first'], j*6, 0) + datetime.timedelta(hours=6),
                                              )
                    Event.objects.filter(calendar=Calendar.objects.get(slug=slug),
                                         start=datetime.datetime(curYear, curMonth, date['first'], j*6, 0),
                                         end=datetime.datetime(curYear, curMonth, date['first'], j*6, 0) + datetime.timedelta(hours=6),
                                         ).update(title=tit, color_event=c, creator=UserModel.objects.get(username='******'),)
                except ObjectDoesNotExist:
                    Event(calendar=Calendar.objects.get(slug=slug),
                          title=tit,
                          start=datetime.datetime(curYear, curMonth, date['first'], j*6, 0),
                          end=datetime.datetime(curYear, curMonth, date['first'], j*6, 0) + datetime.timedelta(hours=6),
                          rule=Rule.objects.get(id=3),  # Weekly;
                          end_recurring_period=datetime.datetime(curYear, curMonth, date['last'], j*6, 0) + datetime.timedelta(hours=6),
                          color_event=c,
                          creator=UserModel.objects.get(username='******'),
                          ).save()
                
            # 이전에 설정을 했을 경우
            # 이미 등록되있는 다른 동아리 시간 삭제
            try:
                Event.objects.get(calendar=Calendar.objects.get(slug=day),
                                  start=datetime.datetime(curYear, curMonth, date['first'], j*6, 0),
                                  end=datetime.datetime(curYear, curMonth, date['first'], j*6, 0) + datetime.timedelta(hours=6),
                                  ).delete()
            except ObjectDoesNotExist:
                pass

            i += 1
        j += 1
    
    return
 def __create_event(self, title, start, end, cal):
     return Event(
         title=title,
         start=start,
         end=end,
         calendar=cal,
     )
Example #14
0
    def forms_valid(self, forms):
        date = forms['date_form'].save()
        self.show.date = date
        forms['poster_form'].save()
        info = forms['show_info_form'].save(commit=False)

        if self.request.FILES.get('image'):
            info.poster, created = Image.objects.get_or_create(
                image=self.request.FILES.get('image'),
                title="Poster",
                user=self.request.user)
        elif self.request.POST.get('poster'):
            imageId = self.request.POST.get('poster')
            info.poster = get_object_or_None(Image, id=imageId)

        if not info.location:
            info.location = info.venue.profile.contact_info.location

        info.save()
        forms['show_info_form'].save_m2m()
        participants = info.participants()

        # create or edit event for each particpent in show
        forms['event_form'].save()
        for user in participants:
            event = get_object_or_None(Event,
                                       show=self.show,
                                       calendar=user.calendar)
            if self.request.user != user and not event:
                event = Event(show=self.show, calendar=user.calendar)
                event.save()
        self.show.save()
        return self.get_success_url()
Example #15
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))
Example #16
0
 def save(self, force_insert=False, force_update=False):
     new_task = True
     super(PostEater, self).save(force_insert, force_update)
     end = self.startDateTime + timedelta(minutes=1)
     color = '#A41515'
     description = "http://127.0.0.1:8000/posts/" + str(
         self.submit_time.strftime("%Y/%b/%d"))
     user_short = self.user.profile.housename
     if new_task:
         event = Event(start=self.startDateTime,
                       end=end,
                       title=user_short,
                       description=description,
                       calendar_id=1)
         event.save()
         rel = EventRelation.objects.create_relation(event, self)
         rel.save()
         try:
             cal = Calendar.objects.get(name="hooggeacht")
         except Calendar.DoesNotExist:
             cal = Calendar(name="bla")
             cal.save()
         cal.events.add(event)
     else:
         event = Event.objects.get_for_object(self)[0]
         event.start = self.startDateTime
         event.end = end
         event.title = title
         event.description = self.description
         event.eventColor = self.color
         event.save()
Example #17
0
 def __create_event(self, start, end):
     data = {
             'title': 'Recent Event',
             'start': start,
             'end': end
         }
     return Event(**data)
    def test_all_day_event_cook_slots(self):
        cal = Calendar(name='MyCal', slug='MyCalSlug')
        cal.save()
        start = datetime.datetime(datetime.datetime.now().year,
                                  1,
                                  5,
                                  0,
                                  0,
                                  tzinfo=pytz.utc)
        end = datetime.datetime(datetime.datetime.now().year,
                                1,
                                6,
                                0,
                                0,
                                tzinfo=pytz.utc)
        data = {
            'title': 'All Day Event',
            'start': start,
            'end': end,
            'calendar': self.cal,
        }
        event = Event(**data)
        event.save()
        period = Day([event], start, end)

        slots = _cook_slots(period, 60)
        self.assertEqual(len(slots), 24)
Example #19
0
 def __create_event(self, title, start, end, cal):
     return Event(**{
             'title': title,
             'start': start,
             'end': end,
             'calendar': cal
            })
Example #20
0
 def test_recurring_event_get_occurrences(self):
     recurring_event = Event(**self.recurring_data)
     occurrences = recurring_event.get_occurrences(start=datetime.datetime(2008, 1, 12, 0, 0, tzinfo=pytz.utc),
                                                   end=datetime.datetime(2008, 1, 20, 0, 0, tzinfo=pytz.utc))
     self.assertEqual(["%s to %s" % (o.start, o.end) for o in occurrences],
                       ['2008-01-12 08:00:00+00:00 to 2008-01-12 09:00:00+00:00',
                        '2008-01-19 08:00:00+00:00 to 2008-01-19 09:00:00+00:00'])
Example #21
0
 def setUp(self):
     rule = Rule(frequency="WEEKLY")
     rule.save()
     cal = Calendar(name="MyCal")
     cal.save()
     self.recurring_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
     }
     self.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),
         'calendar':
         cal
     }
     self.recurring_event = Event(**self.recurring_data)
     self.recurring_event.save()
     self.start = datetime.datetime(2008, 1, 12, 0, 0, tzinfo=pytz.utc)
     self.end = datetime.datetime(2008, 1, 27, 0, 0, tzinfo=pytz.utc)
Example #22
0
 def test_get_occurrence(self):
     event = Event(**self.recurring_data)
     event.save()
     occurrence = event.get_occurrence(datetime.datetime(2008, 1, 5, 8, 0))
     self.assertEqual(occurrence.start, datetime.datetime(2008, 1, 5, 8))
     occurrence.save()
     occurrence = event.get_occurrence(datetime.datetime(2008, 1, 5, 8, 0))
     self.assertTrue(occurrence.pk is not None)
Example #23
0
    def test_event_get_occurrences(self):
        event = Event(**self.data)
        event.save()
        occurrences = event.get_occurrences(
            start=datetime.datetime(2008, 1, 12, 0, 0),
            end=datetime.datetime(2008, 1, 20, 0, 0))

        self.assertEquals(["%s to %s" % (o.start, o.end) for o in occurrences],
                          [])
Example #24
0
 def __create_recurring_event(self, title, start, end, end_recurring, rule, cal):
      return Event(**{
             'title': title,
             'start': start,
             'end': end,
             'end_recurring_period': end_recurring,
             'rule': rule,
             'calendar': cal
            })
Example #25
0
    def setUp(self):
        weekly = Rule.objects.create(frequency="WEEKLY")
        daily = Rule.objects.create(frequency="DAILY")
        cal = Calendar.objects.create(name="MyCal")
        self.default_tzinfo = timezone.get_default_timezone()

        self.event1 = Event(
            **{
                'title':
                'Weekly Event',
                'start':
                datetime.datetime(2009, 4, 1, 8, 0,
                                  tzinfo=self.default_tzinfo),
                'end':
                datetime.datetime(2009, 4, 1, 9, 0,
                                  tzinfo=self.default_tzinfo),
                'end_recurring_period':
                datetime.datetime(
                    2009, 10, 5, 0, 0, tzinfo=self.default_tzinfo),
                'rule':
                weekly,
                'calendar':
                cal
            })
        self.event1.save()
        self.event2 = Event(
            **{
                'title':
                'Recent Event',
                'start':
                datetime.datetime(2008, 1, 5, 9, 0,
                                  tzinfo=self.default_tzinfo),
                'end':
                datetime.datetime(
                    2008, 1, 5, 10, 0, tzinfo=self.default_tzinfo),
                'end_recurring_period':
                datetime.datetime(2009, 5, 5, 0, 0,
                                  tzinfo=self.default_tzinfo),
                'rule':
                daily,
                'calendar':
                cal
            })
        self.event2.save()
Example #26
0
    def book(self,
             start=None,
             end=None,
             numero_ospiti=None,
             servizi_opzionali=[],
             user=None,
             session=None):
        print 'Alloggio book'
        print 'user:'******'session:', session

        day_count = end - start
        notti = day_count.days

        reservation = Reservation()
        if user.is_authenticated():
            reservation.user = user

        # if not session.exists(session.session_key):
        #     session.create()
        #
        # reservation.session = Session.objects.get(session_key=session.session_key)
        reservation.alloggio = self
        reservation.numero_ospiti = numero_ospiti

        alloggio_quote = self.getAlloggioPrice(notti, numero_ospiti)
        reservation.price = alloggio_quote['prezzo']
        reservation.iva = alloggio_quote['iva']

        reservation_event = Event(start=start,
                                  end=end,
                                  calendar=self.calendar,
                                  title='reservation ')

        reservation_event.save()
        reservation.event = reservation_event

        reservation.save()
        if user.is_authenticated():
            reservation.notify_reservation()

        for service in servizi_opzionali:
            reservation_service = ReservationService(original_service=service,
                                                     reservation=reservation)
            reservation_quote = service.getServicePrice(notti, numero_ospiti)
            reservation_service.costo = service.costo
            reservation_service.fattore_tempo = service.fattore_tempo
            reservation_service.price = reservation_quote['prezzo']
            reservation_service.iva = reservation_quote['iva']
            reservation_service.save()

            # reservation.servizi_opzional.add(reservation_service)

        # reservation.servizi_opzional = servizi_opzionali

        return reservation
Example #27
0
 def test_event_get_occurrences_after(self):
     recurring_event = Event(**self.recurring_data)
     recurring_event.save()
     occurrences = recurring_event.get_occurrences(
         start=datetime.datetime(2008, 1, 5),
         end=datetime.datetime(2008, 1, 6))
     occurrence = occurrences[0]
     occurrence2 = recurring_event.occurrences_after(
         datetime.datetime(2008, 1, 5)).next()
     self.assertEqual(occurrence, occurrence2)
 def __create_recurring_event(self, title, start, end, end_recurring, rule,
                              cal):
     return Event(
         title=title,
         start=start,
         end=end,
         end_recurring_period=end_recurring,
         rule=rule,
         calendar=cal,
     )
Example #29
0
    def setUp(self):
        weekly = Rule.objects.create(frequency="WEEKLY")
        daily = Rule.objects.create(frequency="DAILY")
        cal = Calendar.objects.create(name="MyCal")
        self.default_tzinfo = timezone.get_default_timezone()
        self.start = datetime.datetime.now() - datetime.timedelta(days=10)
        self.end = self.start + datetime.timedelta(days=300)
        self.event1 = Event(
            **{
                'title': 'Weekly Event',
                'start': self.start,
                'end': self.end,
                'end_recurring_period': self.end,
                'rule': weekly,
                'calendar': cal
            })
        self.event1.save()
        self.occ = Occurrence(event=self.event1,
                              start=self.start,
                              end=self.end,
                              original_start=self.start,
                              original_end=self.end)
        self.occ.save()

        self.event2 = Event(
            **{
                'title':
                'Recent Event',
                'start':
                datetime.datetime(2008, 1, 5, 9, 0,
                                  tzinfo=self.default_tzinfo),
                'end':
                datetime.datetime(
                    2008, 1, 5, 10, 0, tzinfo=self.default_tzinfo),
                'end_recurring_period':
                datetime.datetime(2009, 5, 5, 0, 0,
                                  tzinfo=self.default_tzinfo),
                'rule':
                daily,
                'calendar':
                cal
            })
        self.event2.save()
Example #30
0
 def create_event(self, user):
     start = parser.parse(self.cleaned_data['start_datetime'])
     end = parser.parse(self.cleaned_data['end_datetime'])
     new_event = Event(start=start,
                       end=end,
                       title=self.cleaned_data['title'],
                       description=self.cleaned_data['description'],
                       creator=user)
     new_event.save()
     return new_event