Exemplo n.º 1
0
class TestMultiday(TestCase):
    def setUp(self):
        site = Site.objects.get(is_default_site=True)
        site.hostname = "joy.test"
        site.save()
        self.home = Page.objects.get(slug='home')
        self.user = User.objects.create_user('i', '*****@*****.**', 's3cr3t')
        self.calendar = CalendarPage(owner=self.user,
                                     slug="events",
                                     title="Events")
        self.home.add_child(instance=self.calendar)
        self.calendar.save_revision().publish()

    def testFromPage(self):
        page = MultidayEventPage(owner=self.user,
                                 slug="kainiue-food-festival",
                                 title="KaiNiue Food Festival",
                                 date_from=dt.date(2018, 11, 2),
                                 date_to=dt.date(2018, 11, 5),
                                 tz=pytz.timezone("Pacific/Niue"))
        self.calendar.add_child(instance=page)
        page.save_revision().publish()
        gev = MultidayGEvent.fromPage(page)
        self.assertEqual(gev['dates'], "20181102T000000/20181105T235959")
        self.assertEqual(gev['ctz'], "Pacific/Niue")
Exemplo n.º 2
0
class TestSimpleVEvent(TestCase):
    def setUp(self):
        site = Site.objects.get(is_default_site=True)
        site.hostname = "joy.test"
        site.save()
        self.home = Page.objects.get(slug='home')
        self.user = User.objects.create_user('i', '*****@*****.**', 's3cr3t')
        self.calendar = CalendarPage(owner=self.user,
                                     slug="events",
                                     title="Events")
        self.home.add_child(instance=self.calendar)
        self.calendar.save_revision().publish()

    def testFromPage(self):
        page = SimpleEventPage(owner=self.user,
                               slug="pet-show",
                               title="Pet Show",
                               date=dt.date(1987, 6, 5),
                               time_from=dt.time(11),
                               time_to=dt.time(17, 30),
                               tz=pytz.timezone("Australia/Sydney"))
        self.calendar.add_child(instance=page)
        page.save_revision().publish()
        vev = SimpleVEvent.fromPage(page)
        tz = pytz.timezone("Australia/Sydney")
        self.assertEqual(vev['dtstart'].dt,
                         tz.localize(dt.datetime(1987, 6, 5, 11, 0)))
Exemplo n.º 3
0
 def setUp(self):
     self.home = Page.objects.get(slug='home')
     self.user = User.objects.create_user('i', '*****@*****.**', 's3(r3t')
     self.calendar = CalendarPage(owner=self.user,
                                  slug="events",
                                  title="Events")
     self.home.add_child(instance=self.calendar)
     self.calendar.save_revision().publish()
     self.event = RecurringEventPage(slug="test-meeting",
                                     title="Test Meeting",
                                     repeat=Recurrence(
                                         dtstart=dt.date(1988, 1, 1),
                                         freq=WEEKLY,
                                         byweekday=[MO, WE, FR]),
                                     time_from=dt.time(13),
                                     time_to=dt.time(15, 30))
     self.calendar.add_child(instance=self.event)
     self.info = ExtraInfoPage(
         owner=self.user,
         slug="1988-11-11-extra-info",
         title="Extra Information for Friday 11th of November",
         overrides=self.event,
         except_date=dt.date(1988, 11, 11),
         extra_title="System Demo",
         extra_information="<h3>System Demo</h3>")
     self.event.add_child(instance=self.info)
     self.info.save_revision().publish()
Exemplo n.º 4
0
 def setUp(self):
     imgFile = get_test_image_file()
     imgFile.name = "logo.png"
     self.img = Image.objects.create(title="Logo", file=imgFile)
     imgName = os.path.splitext(os.path.basename(self.img.file.name))[0]
     self.rendName = "{}.width-350.format-png.png".format(imgName)
     Site.objects.update(hostname="joy.test")
     self.home = Page.objects.get(slug='home')
     self.user = User.objects.create_user('i', '*****@*****.**', 's3(R3t')
     self.requestFactory = RequestFactory()
     self.calendar = CalendarPage(owner=self.user,
                                  slug="events",
                                  title="Events")
     self.home.add_child(instance=self.calendar)
     self.calendar.save_revision().publish()
     self.event = RecurringEventPage(owner=self.user,
                                     slug="workshop",
                                     title="Workshop",
                                     image=self.img,
                                     repeat=Recurrence(
                                         dtstart=dt.date(2017, 1, 1),
                                         freq=MONTHLY,
                                         byweekday=[TU(1)],
                                         until=dt.date(2017, 12, 26)))
     self.calendar.add_child(instance=self.event)
     self.event.save_revision().publish()
     self.handler = RssHandler()
Exemplo n.º 5
0
 def testSubSiteAnotherCalendar(self):
     calendar = CalendarPage(owner  = self.user,
                             slug  = "events",
                             title = "Events")
     self.main.add_child(instance=calendar)
     calendar.save_revision().publish()
     self.assertTrue(CalendarPage.can_create_at(self.sub))
Exemplo n.º 6
0
class TestMultidayVEvent(TestCase):
    def setUp(self):
        site = Site.objects.get(is_default_site=True)
        site.hostname = "joy.test"
        site.save()
        self.home = Page.objects.get(slug='home')
        self.user = User.objects.create_user('i', '*****@*****.**', 's3cr3t')
        self.calendar = CalendarPage(owner=self.user,
                                     slug="events",
                                     title="Events")
        self.home.add_child(instance=self.calendar)
        self.calendar.save_revision().publish()

    def testFromPage(self):
        page = MultidayEventPage(owner=self.user,
                                 slug="niuekulele2018",
                                 title="Niuekulele Ukulele Music Festival",
                                 date_from=dt.date(2018, 3, 16),
                                 date_to=dt.date(2018, 3, 20),
                                 tz=pytz.timezone("Pacific/Niue"))
        self.calendar.add_child(instance=page)
        page.save_revision().publish()
        vev = MultidayVEvent.fromPage(page)
        tz = pytz.timezone("Pacific/Niue")
        self.assertEqual(vev['dtstart'].dt,
                         tz.localize(dt.datetime(2018, 3, 16, 0, 0)))
        self.assertEqual(
            vev['dtend'].dt,
            tz.localize(dt.datetime(2018, 3, 20, 23, 59, 59, 999999)))
Exemplo n.º 7
0
 def setUp(self):
     self.home = Page.objects.get(slug='home')
     self.user = User.objects.create_user('i', '*****@*****.**', 's3(r3t')
     self.calendar = CalendarPage(owner=self.user,
                                  slug="events",
                                  title="Events")
     self.home.add_child(instance=self.calendar)
     self.calendar.save_revision().publish()
     self.event = RecurringEventPage(slug="test-meeting",
                                     title="Test Meeting",
                                     repeat=Recurrence(
                                         dtstart=dt.date(1989, 1, 1),
                                         freq=WEEKLY,
                                         byweekday=[MO, WE, FR]),
                                     time_from=dt.time(13),
                                     time_to=dt.time(15, 30))
     self.calendar.add_child(instance=self.event)
     self.cancellation = CancellationPage(
         owner=self.user,
         overrides=self.event,
         except_date=dt.date(1989, 2, 1),
         cancellation_title="Meeting Cancelled",
         cancellation_details="Cancelled due to lack of interest")
     self.event.add_child(instance=self.cancellation)
     self.cancellation.save_revision().publish()
Exemplo n.º 8
0
 def setUp(self):
     self.home = Page.objects.get(slug='home')
     self.user = User.objects.create_user('i', '*****@*****.**', 's3cr3t')
     self.calendar = CalendarPage(owner=self.user,
                                  slug="events",
                                  title="Events")
     self.home.add_child(instance=self.calendar)
     self.calendar.save_revision().publish()
Exemplo n.º 9
0
class TestTZ(TestCase):
    def setUp(self):
        self.home = Page.objects.get(slug='home')
        self.user = User.objects.create_user('i', '*****@*****.**', 's3(r3t')
        self.calendar = CalendarPage(owner=self.user,
                                     slug="events",
                                     title="Events")
        self.home.add_child(instance=self.calendar)
        self.calendar.save_revision().publish()
        self.event = RecurringEventPage(slug="test-meeting",
                                        title="Test Meeting",
                                        repeat=Recurrence(
                                            dtstart=dt.date(1989, 1, 1),
                                            freq=WEEKLY,
                                            byweekday=[MO, WE, FR]),
                                        time_from=dt.time(13, 30),
                                        time_to=dt.time(16),
                                        tz=pytz.timezone("US/Eastern"))
        self.calendar.add_child(instance=self.event)
        self.cancellation = CancellationPage(
            owner=self.user,
            overrides=self.event,
            except_date=dt.date(1989, 2, 1),
            cancellation_title="Meeting Cancelled",
            cancellation_details="Cancelled due to lack of interest")
        self.event.add_child(instance=self.cancellation)
        self.cancellation.save_revision().publish()

    @timezone.override("Australia/Sydney")
    @freeze_timetz("1989-02-02T06:00:00+11:00")
    def testCurrentLocalDt(self):
        when = self.cancellation._current_datetime_from
        self.assertEqual(when.tzinfo.zone, "Australia/Sydney")
        self.assertEqual(when.time(), dt.time(5, 30))
        self.assertEqual(when.date(), dt.date(1989, 2, 2))

    @timezone.override("Australia/Sydney")
    @freeze_timetz("1989-02-02T06:00:00+11:00")
    def testFutureLocalDt(self):
        when = self.cancellation._future_datetime_from
        self.assertIsNone(when)

    @timezone.override("Australia/Sydney")
    def testPastLocalDt(self):
        when = self.cancellation._past_datetime_from
        self.assertEqual(when.tzinfo.zone, "Australia/Sydney")
        self.assertEqual(when.time(), dt.time(5, 30))
        self.assertEqual(when.date(), dt.date(1989, 2, 2))

    @timezone.override("Australia/Sydney")
    @freeze_timetz("1989-10-01T21:00:00+11:00")
    def testCopyFieldsFromParent(self):
        self.assertEqual(self.event.next_date, dt.date(1989, 10, 3))
        cancellation = CancellationPage(owner=self.user)
        cancellation._copyFieldsFromParent(self.event)
        self.assertEqual(cancellation.overrides, self.event)
        self.assertEqual(cancellation.except_date, dt.date(1989, 10, 2))
Exemplo n.º 10
0
class TestTZ(TestCase):
    def setUp(self):
        self.home = Page.objects.get(slug='home')
        self.user = User.objects.create_user('i', '*****@*****.**', 's3cr3t')
        self.calendar = CalendarPage(owner=self.user,
                                     slug="events",
                                     title="Events")
        self.home.add_child(instance=self.calendar)
        self.calendar.save_revision().publish()
        self.event = MultidayEventPage(
            owner=self.user,
            slug="niuekulele2018",
            title="Niuekulele Ukulele Music Festival",
            date_from=dt.date(2018, 3, 16),
            date_to=dt.date(2018, 3, 20),
            tz=pytz.timezone("Pacific/Niue"))
        self.calendar.add_child(instance=self.event)
        self.event.save_revision().publish()

    def testGetEventsByLocalDay(self):
        events = MultidayEventPage.events.byDay(dt.date(2018, 3, 1),
                                                dt.date(2018, 3, 31))
        self.assertEqual(len(events), 31)
        evod1 = events[16]
        self.assertEqual(evod1.date, dt.date(2018, 3, 17))
        self.assertEqual(len(evod1.days_events), 1)
        self.assertEqual(len(evod1.continuing_events), 0)
        evod5 = events[20]
        self.assertEqual(evod5.date, dt.date(2018, 3, 21))
        self.assertEqual(len(evod5.days_events), 0)
        self.assertEqual(len(evod5.continuing_events), 1)
        self.assertEqual(evod1.all_events[0], evod5.all_events[0])
        self.assertEqual(evod1.all_events[0].page, evod5.all_events[0].page)

    @freeze_time("2018-04-01")
    def testLocalWhen(self):
        self.assertEqual(self.event.when,
                         "Friday 16th of March to Wednesday 21st of March")

    def testLocalAt(self):
        self.assertEqual(self.event.at, "")

    @timezone.override("America/Los_Angeles")
    def testCurrentLocalDt(self):
        self.assertIsNone(self.event._current_datetime_from)

    @timezone.override("America/Los_Angeles")
    def testFutureLocalDt(self):
        self.assertIsNone(self.event._future_datetime_from)

    @timezone.override("Pacific/Auckland")
    def testPastLocalDt(self):
        when = self.event._past_datetime_from
        self.assertEqual(when.tzinfo.zone, "Pacific/Auckland")
        self.assertEqual(when.time(), dt.time.max)
        self.assertEqual(when.date(), dt.date(2018, 3, 17))
Exemplo n.º 11
0
 def setUp(self):
     self.user = User.objects.create_superuser('i', '*****@*****.**', 's3(r3t')
     self.request = RequestFactory().get("/test")
     self.request.user = self.user
     self.request.session = {}
     self.home = Page.objects.get(slug='home')
     self.page = CalendarPage(owner=self.user,
                              slug="events",
                              title="Events")
     self.home.add_child(instance=self.page)
     self.page.save_revision().publish()
Exemplo n.º 12
0
 def setUp(self):
     Site.objects.update(hostname="joy.test")
     self.home = Page.objects.get(slug='home')
     self.user = User.objects.create_user('i', '*****@*****.**', 's3cr3t')
     self.requestFactory = RequestFactory()
     self.calendar = CalendarPage(owner=self.user,
                                  slug="events",
                                  title="Events")
     self.home.add_child(instance=self.calendar)
     self.calendar.save_revision().publish()
     self.handler = ICalHandler()
Exemplo n.º 13
0
 def setUp(self):
     imgFile = get_test_image_file()
     imgFile.name = "people.png"
     self.img = Image.objects.create(title="People", file=imgFile)
     imgName = os.path.splitext(os.path.basename(self.img.file.name))[0]
     self.rendName = "{}.width-350.format-png.png".format(imgName)
     Site.objects.update(hostname="joy.test")
     self.home = Page.objects.get(slug='home')
     self.user = User.objects.create_user('i', '*****@*****.**', 's3(R3t')
     self.requestFactory = RequestFactory()
     self.calendar = CalendarPage(owner=self.user,
                                  slug="events",
                                  title="Events")
     self.home.add_child(instance=self.calendar)
     self.calendar.save_revision().publish()
Exemplo n.º 14
0
 def setUp(self):
     self.home = Page.objects.get(slug='home')
     self.user = User.objects.create_user('i', '*****@*****.**', 's3cr3t')
     self.calendar = CalendarPage(owner = self.user,
                                  slug  = "events",
                                  title = "Events")
     self.home.add_child(instance=self.calendar)
     self.calendar.save_revision().publish()
     self.event = MultidayEventPage(owner = self.user,
                                    slug  = "niuekulele2018",
                                    title = "Niuekulele Ukulele Music Festival",
                                    date_from = dt.date(2018,3,16),
                                    date_to   = dt.date(2018,3,20),
                                    tz = pytz.timezone("Pacific/Niue"))
     self.calendar.add_child(instance=self.event)
     self.event.save_revision().publish()
Exemplo n.º 15
0
class TestRecurring(TestCase):
    def setUp(self):
        site = Site.objects.get(is_default_site=True)
        site.hostname = "joy.test"
        site.save()
        self.home = Page.objects.get(slug='home')
        self.user = User.objects.create_user('i', '*****@*****.**', 's3cr3t')
        self.calendar = CalendarPage(owner=self.user,
                                     slug="events",
                                     title="Events")
        self.home.add_child(instance=self.calendar)
        self.calendar.save_revision().publish()

    def testFromPage(self):
        page = RecurringEventPage(owner=self.user,
                                  slug="lunch-and-code",
                                  title="Lunch and Code",
                                  details="What we'll do really depends on "
                                  "what the group feels is useful, "
                                  "some ideas are:\n"
                                  "- Providing feedback on past, or "
                                  "in progress, projects\n"
                                  "- Pair programming\n"
                                  "- Coding\n",
                                  repeat=Recurrence(dtstart=dt.date(
                                      2017, 3, 15),
                                                    freq=MONTHLY,
                                                    byweekday=[FR(-1)]),
                                  time_from=dt.time(12),
                                  time_to=dt.time(13),
                                  tz=pytz.timezone("Pacific/Auckland"),
                                  location="70 Molesworth Street, Wellington")
        self.calendar.add_child(instance=page)
        page.save_revision().publish()
        gev = RecurringGEvent.fromPage(page)
        self.assertEqual(
            gev.url, "http://www.google.com/calendar/event?"
            "action=TEMPLATE&"
            "text=Lunch+and+Code&"
            "details=What+we%27ll+do+really+depends+on+what+the+"
            "group+feels+is+useful%2C+some+ideas+are%3A%0A"
            "-+Providing+feedback+on+past%2C+or+in+progress%2C+projects%0A"
            "-+Pair+programming%0A-+Coding%0A&"
            "location=70+Molesworth+Street%2C+Wellington&"
            "dates=20170331T120000%2F20170331T130000&"
            "ctz=Pacific%2FAuckland&"
            "recur=RRULE%3AFREQ%3DMONTHLY%3BWKST%3DSU%3BBYDAY%3D-1FR")
Exemplo n.º 16
0
 def setUp(self):
     self.home = Page.objects.get(slug='home')
     self.user = User.objects.create_user('i', '*****@*****.**', 's3cr3t')
     self.calendar = CalendarPage(owner=self.user,
                                  slug="events",
                                  title="Events")
     self.home.add_child(instance=self.calendar)
     self.calendar.save_revision().publish()
     self.event = MultidayEventPage(owner=self.user,
                                    slug="allnighter",
                                    title="All Night",
                                    date_from=dt.date(2012, 12, 31),
                                    date_to=dt.date(2013, 1, 1),
                                    time_from=dt.time(23),
                                    time_to=dt.time(3))
     self.calendar.add_child(instance=self.event)
     self.event.save_revision().publish()
Exemplo n.º 17
0
 def testCalendarMixture(self):
     general = GeneralCalendarPage(owner=self.user,
                                   slug="events1",
                                   title="Events")
     self.main.add_child(instance=general)
     general.save_revision().publish()
     self.assertTrue(CalendarPage.can_create_at(self.main))
     calendar = CalendarPage(owner=self.user,
                             slug="events2",
                             title="Events")
     self.main.add_child(instance=calendar)
     calendar.save_revision().publish()
     self.assertTrue(SpecificCalendarPage.can_create_at(self.main))
     specific = SpecificCalendarPage(owner=self.user,
                                     slug="events3",
                                     title="Events")
     self.main.add_child(instance=specific)
     specific.save_revision().publish()
Exemplo n.º 18
0
class TestWagtailHooks(TestCase):
    def setUp(self):
        self.home = Page.objects.get(slug='home')
        self.user = User.objects.create_user('i', '*****@*****.**', 's3(r3t')
        self.page = CalendarPage(owner=self.user,
                                 slug="events",
                                 title="Events")
        self.home.add_child(instance=self.page)
        self.page.save_revision().publish()

    @patch("ls.joyous.wagtail_hooks.ICalHandler")
    def testICalExport(self, Handler):
        request = RequestFactory().get("/test?format=ical")
        handlePageExport(self.page, request, [], {})
        Handler.assert_called_with()
        Handler().serve.assert_called_with(self.page, request, [], {})

    @patch("ls.joyous.wagtail_hooks.GoogleCalendarHandler")
    def testGoogleExport(self, Handler):
        request = RequestFactory().get("/test?format=google")
        handlePageExport(self.page, request, [], {})
        Handler.assert_called_with()
        Handler().serve.assert_called_with(self.page, request, [], {})

    @patch("ls.joyous.wagtail_hooks.RssHandler")
    def testRssExport(self, Handler):
        request = RequestFactory().get("/test?format=rss")
        handlePageExport(self.page, request, [], {})
        Handler.assert_called_with()
        Handler().serve.assert_called_with(self.page, request, [], {})

    @patch("ls.joyous.wagtail_hooks.NullHandler")
    def testNullExport(self, Handler):
        request = RequestFactory().get("/test")
        handlePageExport(self.page, request, [], {})
        Handler.assert_called_with()
        Handler().serve.assert_called_with(self.page, request, [], {})

    def testStashRequest(self):
        request = RequestFactory().get("/test")
        stashRequest(request, self.page)
        self.assertEqual(getattr(self.page, '__joyous_edit_request'), request)
        delattr(self.page, '__joyous_edit_request')
Exemplo n.º 19
0
 def setUp(self):
     self.user = User.objects.create_user('i', '*****@*****.**', 's3cr3t')
     self.calendar = CalendarPage(owner = self.user,
                                  slug  = "events",
                                  title = "Events")
     Page.objects.get(slug='home').add_child(instance=self.calendar)
     self.calendar.save()
     self.calendar.save_revision().publish()
     self.event = RecurringEventPage(owner = self.user,
                                     slug  = "lug-meetup",
                                     title = "Linux Users Group Meetup",
                                     repeat = Recurrence(dtstart=dt.date(2017,8,5),
                                                         freq=MONTHLY,
                                                         byweekday=[TU(1)]),
                                     time_from = dt.time(18,30),
                                     time_to   = dt.time(20),
                                     location  = "6 Mackay St, Greymouth (upstairs)")
     self.calendar.add_child(instance=self.event)
     self.event.save_revision().publish()
Exemplo n.º 20
0
class TestPageFormDeutsche(TestCase):
    Form = ExtraInfoPage.get_edit_handler().get_form_class()

    def setUp(self):
        translation.activate('de')
        self.home = Page.objects.get(slug='home')
        self.user = User.objects.create_user('i', '*****@*****.**', 's3(r3t')
        self.calendar = CalendarPage(owner = self.user,
                                     slug  = "ereignisse",
                                     title = "Ereignisse")
        self.home.add_child(instance=self.calendar)
        self.calendar.save_revision().publish()
        self.event = RecurringEventPage(slug      = "meeting",
                                        title     = "Testen Sie Meeting",
                                        repeat    = Recurrence(dtstart=dt.date(1988,1,1),
                                                               freq=WEEKLY,
                                                               byweekday=[MO,WE,FR]),
                                        time_from = dt.time(13),
                                        time_to   = dt.time(15,30))
        self.calendar.add_child(instance=self.event)
        self.info = ExtraInfoPage(owner = self.user,
                                  overrides = self.event,
                                  except_date = dt.date(1999,1,5),
                                  extra_title = "Freitag",
                                  extra_information = "Besonderer Freitag")
        self.event.add_child(instance=self.info)
        self.info.save_revision().publish()

    def tearDown(self):
        translation.deactivate()

    def testExceptionAlreadyExists(self):
        page = ExtraInfoPage(owner=self.user)
        form = self.Form({'overrides':         self.event,
                          'except_date':       "1999-01-05",
                          'extra_title':       "Es ist Freitag",
                          'extra_information': rich_text("Besonderer spezieller Freitag")},
                          instance=page,
                          parent_page=self.event)
        self.assertFalse(form.is_valid())
        self.assertDictEqual(form.errors,
                             {'except_date': ['Dieses Datum enthält bereits zusätzliche information']})
Exemplo n.º 21
0
 def setUp(self):
     self.user = User.objects.create_user('i', '*****@*****.**', 's3cr3t')
     self.calendar = CalendarPage(owner=self.user,
                                  slug="events",
                                  title="Events")
     Page.objects.get(slug='home').add_child(instance=self.calendar)
     self.calendar.save()
     self.calendar.save_revision().publish()
     self.event = MultidayRecurringEventPage(
         owner=self.user,
         slug="ice-festival",
         title="Ice Festival",
         repeat=Recurrence(dtstart=dt.date(2000, 12, 25),
                           until=dt.date(2020, 1, 31),
                           freq=YEARLY,
                           bymonth=12,
                           byweekday=MO(4)),
         num_days=40)
     self.calendar.add_child(instance=self.event)
     self.event.save_revision().publish()
Exemplo n.º 22
0
 def setUp(self):
     self.home = Page.objects.get(slug='home')
     self.user = User.objects.create_user('i', '*****@*****.**', 's3cr3t')
     self.calendar = CalendarPage(owner = self.user,
                                  slug  = "events",
                                  title = "Events")
     self.home.add_child(instance=self.calendar)
     self.calendar.save_revision().publish()
     self.event = RecurringEventPage(owner = self.user,
                                     slug  = "code-for-boston",
                                     title = "Code for Boston",
                                     repeat    = Recurrence(dtstart=dt.date(2017,1,1),
                                                            freq=WEEKLY,
                                                            byweekday=[TU]),
                                     time_from = dt.time(19),
                                     time_to   = dt.time(21,30),
                                     tz = pytz.timezone("US/Eastern"),
                                     location  = "4th Floor, 1 Broadway, Cambridge, MA")
     self.calendar.add_child(instance=self.event)
     self.event.save_revision().publish()
 def setUp(self):
     self.user = User.objects.create_user('i', '*****@*****.**', 's3cr3t')
     self.calendar = CalendarPage(owner = self.user,
                                  slug  = "events",
                                  title = "Events")
     Page.objects.get(slug='home').add_child(instance=self.calendar)
     self.calendar.save()
     self.calendar.save_revision().publish()
     self.event = MultidayRecurringEventPage(
                            owner = self.user,
                            slug  = "team-retreat",
                            title = "Team Retreat",
                            repeat = Recurrence(dtstart=dt.date(2000,1,1),
                                                freq=YEARLY,
                                                bymonth=8,
                                                byweekday=FR(1)),
                            num_days  = 3,
                            time_from = dt.time(18),
                            time_to   = dt.time(16,30))
     self.calendar.add_child(instance=self.event)
     self.event.save_revision().publish()
Exemplo n.º 24
0
class TestPageForm(TestCase):
    Form = ExtraInfoPage.get_edit_handler().get_form_class()

    def setUp(self):
        self.home = Page.objects.get(slug='home')
        self.user = User.objects.create_user('i', '*****@*****.**', 's3(r3t')
        self.calendar = CalendarPage(owner = self.user,
                                     slug  = "events",
                                     title = "Events")
        self.home.add_child(instance=self.calendar)
        self.calendar.save_revision().publish()
        self.event = RecurringEventPage(slug      = "test-meeting",
                                        title     = "Test Meeting",
                                        repeat    = Recurrence(dtstart=dt.date(1988,1,1),
                                                               freq=WEEKLY,
                                                               byweekday=[MO,WE,FR]),
                                        time_from = dt.time(13),
                                        time_to   = dt.time(15,30))
        self.calendar.add_child(instance=self.event)
        self.info = ExtraInfoPage(owner = self.user,
                                  overrides = self.event,
                                  except_date = dt.date(1999,1,5),
                                  extra_title = "Fri-day",
                                  extra_information = "Special Friday")
        self.event.add_child(instance=self.info)
        self.info.save_revision().publish()

    def testExceptionAlreadyExists(self):
        page = ExtraInfoPage(owner=self.user)
        form = self.Form({'overrides':         self.event,
                          'except_date':       "1999-01-05",
                          'extra_title':       "It's Friday",
                          'extra_information': rich_text("Special Special Friday")},
                          instance=page,
                          parent_page=self.event)
        self.assertFalse(form.is_valid())
        self.assertDictEqual(form.errors,
                             {'except_date': ['That date already has extra information']})
Exemplo n.º 25
0
class TestSimple(TestCase):
    def setUp(self):
        self.home = Page.objects.get(slug='home')
        self.user = User.objects.create_user('i', '*****@*****.**', 's3cr3t')
        self.calendar = CalendarPage(owner=self.user,
                                     slug="events",
                                     title="Events")
        self.home.add_child(instance=self.calendar)
        self.calendar.save_revision().publish()

    def testFromPage(self):
        page = SimpleEventPage(owner=self.user,
                               slug="baseball-game",
                               title="Baseball Game",
                               date=dt.date(2014, 7, 30),
                               time_from=dt.time(13),
                               time_to=dt.time(16),
                               tz=pytz.timezone("America/Los_Angeles"))
        self.calendar.add_child(instance=page)
        page.save_revision().publish()
        gev = SimpleGEvent.fromPage(page)
        self.assertEqual(gev['dates'], "20140730T130000/20140730T160000")
        self.assertEqual(gev['ctz'], "America/Los_Angeles")
Exemplo n.º 26
0
class TestMultidayRecurring(TestCase):
    def setUp(self):
        site = Site.objects.get(is_default_site=True)
        site.hostname = "joy.test"
        site.save()
        self.home = Page.objects.get(slug='home')
        self.user = User.objects.create_user('i', '*****@*****.**', 's3cr3t')
        self.calendar = CalendarPage(owner=self.user,
                                     slug="events",
                                     title="Events")
        self.home.add_child(instance=self.calendar)
        self.calendar.save_revision().publish()

    @freeze_time("2017-08-15")
    def testFromPage(self):
        page = MultidayRecurringEventPage(owner=self.user,
                                          slug="bought-from-rubber-man",
                                          title="Bought from a Rubber Man",
                                          repeat=Recurrence(dtstart=dt.date(
                                              2019, 4, 2),
                                                            freq=WEEKLY,
                                                            byweekday=[TU]),
                                          num_days=3,
                                          time_from=dt.time(16),
                                          time_to=dt.time(18),
                                          tz=pytz.timezone("Pacific/Auckland"))
        self.calendar.add_child(instance=page)
        page.save_revision().publish()
        vev = VEventFactory().makeFromPage(page)
        self.assertIs(type(vev), MultidayRecurringVEvent)
        tz = pytz.timezone("Pacific/Auckland")
        self.assertEqual(vev['DTSTART'].dt,
                         tz.localize(dt.datetime(2019, 4, 2, 16, 0)))
        self.assertEqual(vev['DTEND'].dt,
                         tz.localize(dt.datetime(2019, 4, 4, 18, 0)))
        self.assertEqual(vev['RRULE']['FREQ'], ["WEEKLY"])
        self.assertEqual(vev['RRULE']['BYDAY'], ["TU"])
Exemplo n.º 27
0
class Test40Day(TestCase):
    def setUp(self):
        self.user = User.objects.create_user('i', '*****@*****.**', 's3cr3t')
        self.calendar = CalendarPage(owner=self.user,
                                     slug="events",
                                     title="Events")
        Page.objects.get(slug='home').add_child(instance=self.calendar)
        self.calendar.save()
        self.calendar.save_revision().publish()
        self.event = MultidayRecurringEventPage(
            owner=self.user,
            slug="ice-festival",
            title="Ice Festival",
            repeat=Recurrence(dtstart=dt.date(2000, 12, 25),
                              until=dt.date(2020, 1, 31),
                              freq=YEARLY,
                              bymonth=12,
                              byweekday=MO(4)),
            num_days=40)
        self.calendar.add_child(instance=self.event)
        self.event.save_revision().publish()

    def testGetEventsByDay(self):
        events = MultidayRecurringEventPage.events.byDay(
            dt.date(2020, 1, 1), dt.date(2020, 1, 31))
        self.assertEqual(len(events), 31)
        evod = events[0]
        self.assertEqual(evod.date, dt.date(2020, 1, 1))
        self.assertEqual(len(evod.days_events), 0)
        self.assertEqual(len(evod.continuing_events), 1)
        thisEvent = evod.continuing_events[0]
        self.assertEqual(thisEvent.title, "Ice Festival")
        evod = events[10]
        self.assertEqual(evod.date, dt.date(2020, 1, 11))
        self.assertEqual(len(evod.continuing_events), 1)
        thisEvent = evod.continuing_events[0]
        self.assertEqual(thisEvent.title, "Ice Festival")

    def testStatus(self):
        with freeze_timetz("2019-12-20 13:00:00"):
            self.assertEqual(self.event.status_text, "")
        with freeze_timetz("2020-01-02 13:00:00"):
            self.assertEqual(self.event.status_text, "This event has started.")
        with freeze_timetz("2020-02-03 17:00:00"):
            self.assertEqual(self.event.status_text,
                             "These events have finished.")

    def testAt(self):
        self.assertEqual(self.event.at.strip(), "")

    @freeze_timetz("2035-04-03 10:00:00")
    def testNextDate(self):
        self.assertEqual(self.event.next_date, None)

    @freeze_timetz("2035-04-03 10:00:00")
    def testPrevDate(self):
        self.assertEqual(self.event.prev_date, dt.date(2019, 12, 23))
Exemplo n.º 28
0
 def setUp(self):
     Site.objects.update(hostname="joy.test")
     self.home = Page.objects.get(slug='home')
     self.user = User.objects.create_user('i', '*****@*****.**', 's3(R3t')
     self.requestFactory = RequestFactory()
     self.calendar = CalendarPage(owner=self.user,
                                  slug="events",
                                  title="Events")
     self.home.add_child(instance=self.calendar)
     self.calendar.save_revision().publish()
     self.dicerun = SimpleEventPage(owner=self.user,
                                    slug="mercy-dice-run",
                                    title="Mercy Dice Run",
                                    date=dt.date(2020, 3, 16),
                                    location="Newtown")
     self.calendar.add_child(instance=self.dicerun)
     self.dicerun.save_revision().publish()
     event = SimpleEventPage(owner=self.user,
                             slug="workshop",
                             title="Workshop",
                             date=dt.date(2020, 3, 22))
     self.calendar.add_child(instance=event)
     event.save_revision().publish()
     self.handler = ICalHandler()
Exemplo n.º 29
0
 def setUp(self):
     translation.activate('de')
     self.home = Page.objects.get(slug='home')
     self.user = User.objects.create_user('i', '*****@*****.**', 's3(r3t')
     self.calendar = CalendarPage(owner = self.user,
                                  slug  = "ereignisse",
                                  title = "Ereignisse")
     self.home.add_child(instance=self.calendar)
     self.calendar.save_revision().publish()
     self.event = RecurringEventPage(slug      = "meeting",
                                     title     = "Testen Sie Meeting",
                                     repeat    = Recurrence(dtstart=dt.date(1988,1,1),
                                                            freq=WEEKLY,
                                                            byweekday=[MO,WE,FR]),
                                     time_from = dt.time(13),
                                     time_to   = dt.time(15,30))
     self.calendar.add_child(instance=self.event)
     self.info = ExtraInfoPage(owner = self.user,
                               overrides = self.event,
                               except_date = dt.date(1999,1,5),
                               extra_title = "Freitag",
                               extra_information = "Besonderer Freitag")
     self.event.add_child(instance=self.info)
     self.info.save_revision().publish()
Exemplo n.º 30
0
class TestCalendarPageForm(TestCase):
    def setUp(self):
        self.user = User.objects.create_superuser('i', '*****@*****.**', 's3(r3t')
        self.request = RequestFactory().get("/test")
        self.request.user = self.user
        self.request.session = {}
        self.home = Page.objects.get(slug='home')
        self.page = CalendarPage(owner=self.user,
                                 slug="events",
                                 title="Events")
        self.home.add_child(instance=self.page)
        self.page.save_revision().publish()

    def testImportPanel(self):
        CalendarPageForm.registerImportHandler(Mock())
        panel = CalendarPage.settings_panels[-1]
        self.assertFalse(panel._show())
        panel.instance = self.page
        panel.request = self.request
        self.assertFalse(panel._show())
        setattr(self.page, '__joyous_edit_request', self.request)
        self.assertTrue(panel._show())
        delattr(self.page, '__joyous_edit_request')

    def testSave(self):
        Form = get_form_for_model(CalendarPage, form_class=CalendarPageForm)
        setattr(self.page, '__joyous_edit_request', self.request)
        form = Form(instance=self.page, parent_page=self.home)
        handler = Mock()
        CalendarPageForm.registerImportHandler(handler)
        form.cleaned_data = {'utc2local': True, 'upload': "FILE"}
        form.save()
        handler.load.assert_called_with(self.page,
                                        self.request,
                                        "FILE",
                                        utc2local=True)