Пример #1
0
 def testGroupsAuth(self):
     GROUPS = PageViewRestriction.GROUPS
     presidium = Group.objects.create(name="Presidium")
     secretariat = Group.objects.create(name="Secretariat")
     assembly = Group.objects.create(name="Assembly")
     meeting = SimpleEventPage(owner=self.user,
                               slug="admin-cmte",
                               title="Administration Committee Meeting",
                               date=dt.date(2015, 6, 20),
                               time_from=dt.time(16, 30))
     self.calendar.add_child(instance=meeting)
     meeting.save_revision().publish()
     restriction = PageViewRestriction.objects.create(
         restriction_type=GROUPS, page=meeting)
     restriction.groups.set([presidium, secretariat])
     restriction.save()
     self.assertEqual(list(SimpleEventPage.events.all()),
                      [self.event, meeting])
     request = RequestFactory().get("/test")
     request.user = self.user
     request.session = {}
     self.assertEqual(list(SimpleEventPage.events.auth(request)),
                      [self.event])
     request.user = User.objects.create_superuser('joe', '*****@*****.**',
                                                  's3cr3t')
     self.assertEqual(list(SimpleEventPage.events.auth(request)),
                      [self.event, meeting])
     request.user = User.objects.create_user('jill', '*****@*****.**',
                                             's3cr3t')
     request.user.groups.set([secretariat, assembly])
     self.assertEqual(list(SimpleEventPage.events.auth(request)),
                      [self.event, meeting])
Пример #2
0
 def testDayWithEvents(self):
     calendar = getPage("/home/events/")
     event1 = SimpleEventPage(owner=self.user,
                              slug="memory",
                              title="We remember",
                              date=dt.date(2011, 6, 8),
                              time_from=dt.time(9, 30),
                              time_to=dt.time(10, 30))
     calendar.add_child(instance=event1)
     event1.save_revision().publish()
     event2 = SimpleEventPage(owner=self.user,
                              slug="action",
                              title="Make things better",
                              date=dt.date(2011, 6, 8),
                              time_from=dt.time(11, 30),
                              time_to=dt.time(16, 0))
     calendar.add_child(instance=event2)
     event2.save_revision().publish()
     response = self.client.get("/events/2011/6/8/")
     select = response.soup.select
     self.assertEqual(response.status_code, 200)
     self.assertEqual(len(select(".joy-cal-list")), 1)
     events = select(".joy-ev-item")
     self.assertEqual(len(events), 2)
     title = events[0].select("a.joy-title__link")[0]
     self.assertEqual(title.string.strip(), "We remember")
     self.assertEqual(title['href'], "/events/memory/")
Пример #3
0
 def setUp(self):
     GeneralCalendarPage.is_creatable = True
     self.user = User.objects.create_user('i', '*****@*****.**', 's3(r3t')
     self.request = RequestFactory().get("/test")
     self.request.user = self.user
     self.request.session = {}
     self.calendar = GeneralCalendarPage(owner=self.user,
                                         slug="calendar",
                                         title="My Calendar")
     home = getPage("/home/")
     home.add_child(instance=self.calendar)
     self.calendar.save_revision().publish()
     event = SimpleEventPage(owner=self.user,
                             slug="bbq",
                             title="BBQ",
                             uid="a94c3211-08e5-4e36-9448-86a869a47d89",
                             date=dt.date(2011, 8, 20),
                             time_from=dt.time(18, 30))
     self.calendar.add_child(instance=event)
     event.save_revision().publish()
     self.group = GroupPage(slug="initech", title="Initech Corporation")
     home.add_child(instance=self.group)
     self.group.save_revision().publish()
     event = SimpleEventPage(owner=self.user,
                             slug="planning-meeting",
                             title="Planning to Plan",
                             uid="a96484da-e350-45c7-af03-97ca2bb173d6",
                             date=dt.date(2011, 8, 20),
                             time_from=dt.time(8, 0))
     self.group.add_child(instance=event)
     event.save_revision().publish()
Пример #4
0
 def setUp(self):
     SpecificCalendarPage.is_creatable = True
     self.user = User.objects.create_user('i', '*****@*****.**', 's3(r3t')
     self.request = RequestFactory().get("/test")
     self.request.user = self.user
     self.request.session = {}
     self.calendar1 = SpecificCalendarPage(owner=self.user,
                                           slug="calendar1",
                                           title="Red Team Calendar")
     home = getPage("/home/")
     home.add_child(instance=self.calendar1)
     self.calendar1.save_revision().publish()
     event = SimpleEventPage(owner=self.user,
                             slug="football",
                             title="Football Game",
                             uid="570ed9c4-4503-4b45-b15e-c99faed9c531",
                             date=dt.date(2011, 6, 5),
                             time_from=dt.time(9, 30),
                             time_to=dt.time(11, 0))
     self.calendar1.add_child(instance=event)
     event.save_revision().publish()
     self.calendar2 = SpecificCalendarPage(owner=self.user,
                                           slug="calendar2",
                                           title="Green Team Calendar")
     home.add_child(instance=self.calendar2)
     self.calendar2.save_revision().publish()
     event = SimpleEventPage(owner=self.user,
                             slug="tree-planting",
                             title="Tree Planting",
                             uid="eb50e787-12bf-477b-8493-c4414ac001ca",
                             date=dt.date(2011, 6, 5),
                             time_from=dt.time(9, 30))
     self.calendar2.add_child(instance=event)
     event.save_revision().publish()
Пример #5
0
 def setUp(self):
     self.user = User.objects.create_user('i', '*****@*****.**', 's3(r3t')
     calendar = CalendarPage(owner  = self.user,
                             slug  = "events",
                             title = "Events")
     Page.objects.get(slug='home').add_child(instance=calendar)
     calendar.save_revision().publish()
     event = SimpleEventPage(owner = self.user,
                             slug  = "tree-planting",
                             title = "Tree Planting",
                             date      = dt.date(2011,6,5),
                             time_from = dt.time(9,30),
                             time_to   = dt.time(11,0))
     calendar.add_child(instance=event)
     event.save_revision().publish()
Пример #6
0
 def setUp(self):
     self.home = Page.objects.get(slug='home')
     self.user = User.objects.create_user('i', '*****@*****.**', 's3cr3t')
     self.calendar = SpecificCalendarPage(owner=self.user,
                                          slug="events",
                                          title="Events")
     self.home.add_child(instance=self.calendar)
     self.calendar.save_revision().publish()
     self.event = SimpleEventPage(owner=self.user,
                                  slug="agfest",
                                  title="AgFest",
                                  date=dt.date(2015, 6, 5),
                                  time_from=dt.time(11),
                                  time_to=dt.time(17, 30))
     self.calendar.add_child(instance=self.event)
     self.event.save_revision().publish()
Пример #7
0
 def setUp(self):
     translation.activate('fr')
     self.user = User.objects.create_superuser('i', '*****@*****.**', 's3(r3t')
     calendar = CalendarPage(owner=self.user,
                             slug="calendrier",
                             title="Calendrier")
     Page.objects.get(slug='home').add_child(instance=calendar)
     calendar.save_revision().publish()
     event = SimpleEventPage(owner=self.user,
                             slug="plantation-d-arbres",
                             title="Plantation d'arbres",
                             date=dt.date(2011, 6, 5),
                             time_from=dt.time(9, 30),
                             time_to=dt.time(11, 0))
     calendar.add_child(instance=event)
     event.save_revision().publish()
Пример #8
0
 def setUp(self):
     self.home = Page.objects.get(slug='home')
     self.user = User.objects.create_user('i', '*****@*****.**', 's3cr3t')
     self.calendar = SpecificCalendarPage(owner=self.user,
                                          slug="events",
                                          title="Events")
     self.home.add_child(instance=self.calendar)
     self.calendar.save_revision().publish()
     self.event = 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=self.event)
     self.event.save_revision().publish()
Пример #9
0
 def testGroup(self):
     self.assertIsNone(self.event.group)
     group = GroupPage(slug="runners", title="Runners")
     self.home.add_child(instance=group)
     race = SimpleEventPage(owner=self.user,
                            slug="race",
                            title="Race",
                            date=dt.date(2008, 6, 3))
     group.add_child(instance=race)
     self.assertEqual(race.group, group)
Пример #10
0
    def setUp(self):
        self.home = Page.objects.get(slug='home')
        self.user = User.objects.create_user('i', '*****@*****.**', 's3cr3t')
        self.request = RequestFactory().get("/test")
        self.request.user = self.user
        self.request.session = {}
        self.calendar = GeneralCalendarPage(owner = self.user,
                                            slug  = "events",
                                            title = "Events")
        self.home.add_child(instance=self.calendar)
        self.group = GroupPage(slug = "initech", title = "Initech Corporation")
        self.home.add_child(instance=self.group)

        self.show = SimpleEventPage(owner = self.user,
                                    slug   = "pet-show",
                                    title  = "Pet Show",
                                    date      = dt.date(2013,1,5),
                                    time_from = dt.time(11),
                                    time_to   = dt.time(17,30))
        self.calendar.add_child(instance=self.show)

        self.party = 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.party)

        self.standup = RecurringEventPage(slug   = "test-meeting",
                                          title  = "Test Meeting",
                                          repeat = Recurrence(dtstart=dt.date(2013,1,1),
                                                              until=dt.date(2013,5,31),
                                                              freq=WEEKLY,
                                                              byweekday=[MO,WE,FR]),
                                          time_from = dt.time(13,30),
                                          time_to   = dt.time(16))
        self.group.add_child(instance=self.standup)

        self.postponement = PostponementPage(owner = self.user,
                                             slug  = "2013-01-09-postponement",
                                             title = "Postponement for Wednesday 16th of October",
                                             overrides = self.standup,
                                             except_date = dt.date(2013,1,16),
                                             cancellation_title   = "Meeting Postponed",
                                             cancellation_details =
                                                 "The meeting has been postponed until tomorrow",
                                             postponement_title   = "A Meeting",
                                             date      = dt.date(2013,1,17),
                                             time_from = dt.time(13),
                                             time_to   = dt.time(16,30),
                                             details   = "Yes a test meeting on a Thursday")
        self.standup.add_child(instance=self.postponement)
Пример #11
0
 def testLoginAuth(self):
     LOGIN = PageViewRestriction.LOGIN
     bee = SimpleEventPage(owner=self.user,
                           slug="bee",
                           title="Working Bee",
                           date=dt.date(2013, 3, 30),
                           time_from=dt.time(10))
     self.calendar.add_child(instance=bee)
     bee.save_revision().publish()
     PageViewRestriction.objects.create(restriction_type=LOGIN, page=bee)
     self.assertEqual(list(SimpleEventPage.events.all()), [self.event, bee])
     self.assertFalse(bee.isAuthorized(None))
     request = RequestFactory().get("/test")
     request.user = AnonymousUser()
     request.session = {}
     self.assertEqual(list(SimpleEventPage.events.auth(request)),
                      [self.event])
     request.user = self.user
     self.assertEqual(list(SimpleEventPage.events.auth(request)),
                      [self.event, bee])
Пример #12
0
 def testPastDt(self):
     self.assertEqual(self.event._past_datetime_from, datetimetz(1987,6,5,11,0))
     now = timezone.localtime()
     earlier = now - dt.timedelta(hours=1)
     if earlier.date() != now.date():
         earlier = datetimetz(now.date(), dt.time.min)
     nowEvent = SimpleEventPage(owner = self.user,
                                slug  = "now",
                                title = "Now Event",
                                date      = now.date(),
                                time_from = earlier.time(),
                                time_to   = dt.time.max)
     self.calendar.add_child(instance=nowEvent)
     self.assertEqual(nowEvent._past_datetime_from, earlier)
     tomorrow = timezone.localdate() + dt.timedelta(days=1)
     futureEvent = SimpleEventPage(owner = self.user,
                                   slug  = "tomorrow",
                                   title = "Tomorrow's Event",
                                   date  = tomorrow)
     self.calendar.add_child(instance=futureEvent)
     self.assertIsNone(futureEvent._past_datetime_from)
Пример #13
0
 def testPasswordAuth(self):
     PASSWORD = PageViewRestriction.PASSWORD
     KEY = PageViewRestriction.passed_view_restrictions_session_key
     meeting = SimpleEventPage(owner=self.user,
                               slug="club-meet",
                               title="Club Meeting",
                               date=dt.date(2009, 10, 21))
     self.calendar.add_child(instance=meeting)
     meeting.save_revision().publish()
     restriction = PageViewRestriction.objects.create(
         restriction_type=PASSWORD, password="******", page=meeting)
     self.assertEqual(list(SimpleEventPage.events.all()),
                      [self.event, meeting])
     request = RequestFactory().get("/test")
     request.user = self.user
     request.session = {}
     self.assertEqual(list(SimpleEventPage.events.auth(request)),
                      [self.event])
     request.session[KEY] = [restriction.id]
     self.assertEqual(list(SimpleEventPage.events.auth(request)),
                      [self.event, meeting])
Пример #14
0
 def testStatus(self):
     self.assertEqual(self.event.status, "finished")
     self.assertEqual(self.event.status_text, "This event has finished.")
     now = timezone.localtime()
     earlier = now - dt.timedelta(hours=1)
     if earlier.date() != now.date():
         earlier = datetimetz(now.date(), dt.time.min)
     nowEvent = SimpleEventPage(owner=self.user,
                                slug="now",
                                title="Now Event",
                                date=now.date(),
                                time_from=earlier.time(),
                                time_to=dt.time.max)
     self.assertEqual(nowEvent.status, "started")
     self.assertEqual(nowEvent.status_text, "This event has started.")
     tomorrow = timezone.localdate() + dt.timedelta(days=1)
     futureEvent = SimpleEventPage(owner=self.user,
                                   slug="tomorrow",
                                   title="Tomorrow's Event",
                                   date=tomorrow)
     self.calendar.add_child(instance=futureEvent)
     self.assertIsNone(futureEvent.status)
     self.assertEqual(futureEvent.status_text, "")
Пример #15
0
 def testGetEventsAcrossDateline(self):
     showDay = SimpleEventPage(owner=self.user,
                               slug="tamakautoga-village-show-day",
                               title="Tamakautoga Village Show Day",
                               date=dt.date(2016, 7, 30),
                               tz=pytz.timezone("Pacific/Niue"))
     self.calendar.add_child(instance=showDay)
     evods = SimpleEventPage.events.byDay(dt.date(2016, 7, 31),
                                          dt.date(2016, 7, 31))
     self.assertEqual(len(evods[0].days_events), 1)
     self.assertEqual(len(evods[0].continuing_events), 0)
     event = evods[0].days_events[0].page
     self.assertEqual(event.at, "")
     self.assertEqual(event.when, "Sunday 31st of July 2016")
Пример #16
0
class Test(TestCase):
    def setUp(self):
        self.home = Page.objects.get(slug='home')
        self.user = User.objects.create_user('i', '*****@*****.**', 's3cr3t')
        self.calendar = SpecificCalendarPage(owner=self.user,
                                             slug="events",
                                             title="Events")
        self.home.add_child(instance=self.calendar)
        self.calendar.save_revision().publish()
        self.event = 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))
        self.calendar.add_child(instance=self.event)
        self.event.save_revision().publish()

    def testGetEventsByDay(self):
        events = SimpleEventPage.events.byDay(dt.date(1987, 6, 1),
                                              dt.date(1987, 6, 30))
        self.assertEqual(len(events), 30)
        evod = events[4]
        self.assertEqual(evod.date, dt.date(1987, 6, 5))
        self.assertEqual(len(evod.all_events), 1)
        self.assertEqual(len(evod.days_events), 1)
        self.assertEqual(len(evod.continuing_events), 0)

    def testStatus(self):
        self.assertEqual(self.event.status, "finished")
        self.assertEqual(self.event.status_text, "This event has finished.")
        now = timezone.localtime()
        earlier = now - dt.timedelta(hours=1)
        if earlier.date() != now.date():
            earlier = datetimetz(now.date(), dt.time.min)
        nowEvent = SimpleEventPage(owner=self.user,
                                   slug="now",
                                   title="Now Event",
                                   date=now.date(),
                                   time_from=earlier.time(),
                                   time_to=dt.time.max)
        self.assertEqual(nowEvent.status, "started")
        self.assertEqual(nowEvent.status_text, "This event has started.")
        tomorrow = timezone.localdate() + dt.timedelta(days=1)
        futureEvent = SimpleEventPage(owner=self.user,
                                      slug="tomorrow",
                                      title="Tomorrow's Event",
                                      date=tomorrow)
        self.calendar.add_child(instance=futureEvent)
        self.assertIsNone(futureEvent.status)
        self.assertEqual(futureEvent.status_text, "")

    def testWhen(self):
        self.assertEqual(self.event.when,
                         "Friday 5th of June 1987 at 11am to 5:30pm")

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

    def testUpcomingDt(self):
        self.assertIsNone(self.event._upcoming_datetime_from)
        now = timezone.localtime()
        earlier = now - dt.timedelta(hours=1)
        if earlier.date() != now.date():
            earlier = datetimetz(now.date(), dt.time.min)
        nowEvent = SimpleEventPage(owner=self.user,
                                   slug="now",
                                   title="Now Event",
                                   date=now.date(),
                                   time_from=earlier.time(),
                                   time_to=dt.time.max)
        self.calendar.add_child(instance=nowEvent)
        self.assertIsNone(nowEvent._upcoming_datetime_from)
        tomorrow = timezone.localdate() + dt.timedelta(days=1)
        futureEvent = SimpleEventPage(owner=self.user,
                                      slug="tomorrow",
                                      title="Tomorrow's Event",
                                      date=tomorrow)
        self.calendar.add_child(instance=futureEvent)
        self.assertEqual(futureEvent._upcoming_datetime_from,
                         datetimetz(tomorrow, dt.time.max))

    def testPastDt(self):
        self.assertEqual(self.event._past_datetime_from,
                         datetimetz(1987, 6, 5, 11, 0))
        now = timezone.localtime()
        earlier = now - dt.timedelta(hours=1)
        if earlier.date() != now.date():
            earlier = datetimetz(now.date(), dt.time.min)
        nowEvent = SimpleEventPage(owner=self.user,
                                   slug="now",
                                   title="Now Event",
                                   date=now.date(),
                                   time_from=earlier.time(),
                                   time_to=dt.time.max)
        self.calendar.add_child(instance=nowEvent)
        self.assertEqual(nowEvent._past_datetime_from, earlier)
        tomorrow = timezone.localdate() + dt.timedelta(days=1)
        futureEvent = SimpleEventPage(owner=self.user,
                                      slug="tomorrow",
                                      title="Tomorrow's Event",
                                      date=tomorrow)
        self.calendar.add_child(instance=futureEvent)
        self.assertIsNone(futureEvent._past_datetime_from)

    def testGroup(self):
        self.assertIsNone(self.event.group)
        group = GroupPage(slug="runners", title="Runners")
        self.home.add_child(instance=group)
        race = SimpleEventPage(owner=self.user,
                               slug="race",
                               title="Race",
                               date=dt.date(2008, 6, 3))
        group.add_child(instance=race)
        self.assertEqual(race.group, group)
Пример #17
0
    def setUp(self):
        self.home = Page.objects.get(slug='home')
        self.user = User.objects.create_user('i', '*****@*****.**', 's3cr3t')
        self.request = RequestFactory().get("/test")
        self.request.user = self.user
        self.request.session = {}
        self.calendar = GeneralCalendarPage(owner=self.user,
                                            slug="events",
                                            title="Events")
        self.home.add_child(instance=self.calendar)
        self.group = GroupPage(slug="initech", title="Initech Corporation")
        self.home.add_child(instance=self.group)

        self.show = SimpleEventPage(owner=self.user,
                                    slug="pet-show",
                                    title="Pet Show",
                                    date=dt.date(2013, 1, 5),
                                    time_from=dt.time(11),
                                    time_to=dt.time(17, 30),
                                    uid="29daefed-fed1-4e47-9408-43ec9b06a06d")
        self.calendar.add_child(instance=self.show)

        GROUPS = PageViewRestriction.GROUPS
        self.friends = Group.objects.create(name="Friends")
        self.rendezvous = SimpleEventPage(
            owner=self.user,
            slug="rendezvous",
            title="Private Rendezvous",
            date=dt.date(2013, 1, 10),
            uid="80af64e7-84e6-40d9-8b4f-7edf92aab9f7")
        self.calendar.add_child(instance=self.rendezvous)
        self.rendezvous.save_revision().publish()
        restriction = PageViewRestriction.objects.create(
            restriction_type=GROUPS, page=self.rendezvous)
        restriction.groups.set([self.friends])
        restriction.save()

        self.party = 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),
                                       uid="initiative+technology")
        self.calendar.add_child(instance=self.party)

        self.standup = RecurringEventPage(slug="test-meeting",
                                          title="Test Meeting",
                                          repeat=Recurrence(
                                              dtstart=dt.date(2013, 1, 1),
                                              until=dt.date(2013, 5, 31),
                                              freq=WEEKLY,
                                              byweekday=[MO, WE, FR]),
                                          time_from=dt.time(13, 30),
                                          time_to=dt.time(16),
                                          uid="initiative+technology")
        self.group.add_child(instance=self.standup)

        self.postponement = PostponementPage(
            owner=self.user,
            slug="2013-01-09-postponement",
            title="Postponement for Wednesday 16th of October",
            overrides=self.standup,
            except_date=dt.date(2013, 1, 16),
            cancellation_title="Meeting Postponed",
            cancellation_details=
            "The meeting has been postponed until tomorrow",
            postponement_title="A Meeting",
            date=dt.date(2013, 1, 17),
            time_from=dt.time(13),
            time_to=dt.time(16, 30),
            details="Yes a test meeting on a Thursday")
        self.standup.add_child(instance=self.postponement)

        cancelTuesday = CancellationPage(
            owner=self.user,
            slug="2013-01-01-cancellation",
            title="CancellationPage for Tuesday 1st of January",
            overrides=self.standup,
            except_date=dt.date(2013, 1, 1),
            cancellation_title="Meeting Cancelled")
        self.standup.add_child(instance=cancelTuesday)
Пример #18
0
class Test(TestCase):
    def setUp(self):
        self.home = Page.objects.get(slug='home')
        self.user = User.objects.create_user('i', '*****@*****.**', 's3cr3t')
        self.request = RequestFactory().get("/test")
        self.request.user = self.user
        self.request.session = {}
        self.calendar = GeneralCalendarPage(owner=self.user,
                                            slug="events",
                                            title="Events")
        self.home.add_child(instance=self.calendar)
        self.group = GroupPage(slug="initech", title="Initech Corporation")
        self.home.add_child(instance=self.group)

        self.show = SimpleEventPage(owner=self.user,
                                    slug="pet-show",
                                    title="Pet Show",
                                    date=dt.date(2013, 1, 5),
                                    time_from=dt.time(11),
                                    time_to=dt.time(17, 30),
                                    uid="29daefed-fed1-4e47-9408-43ec9b06a06d")
        self.calendar.add_child(instance=self.show)

        GROUPS = PageViewRestriction.GROUPS
        self.friends = Group.objects.create(name="Friends")
        self.rendezvous = SimpleEventPage(
            owner=self.user,
            slug="rendezvous",
            title="Private Rendezvous",
            date=dt.date(2013, 1, 10),
            uid="80af64e7-84e6-40d9-8b4f-7edf92aab9f7")
        self.calendar.add_child(instance=self.rendezvous)
        self.rendezvous.save_revision().publish()
        restriction = PageViewRestriction.objects.create(
            restriction_type=GROUPS, page=self.rendezvous)
        restriction.groups.set([self.friends])
        restriction.save()

        self.party = 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),
                                       uid="initiative+technology")
        self.calendar.add_child(instance=self.party)

        self.standup = RecurringEventPage(slug="test-meeting",
                                          title="Test Meeting",
                                          repeat=Recurrence(
                                              dtstart=dt.date(2013, 1, 1),
                                              until=dt.date(2013, 5, 31),
                                              freq=WEEKLY,
                                              byweekday=[MO, WE, FR]),
                                          time_from=dt.time(13, 30),
                                          time_to=dt.time(16),
                                          uid="initiative+technology")
        self.group.add_child(instance=self.standup)

        self.postponement = PostponementPage(
            owner=self.user,
            slug="2013-01-09-postponement",
            title="Postponement for Wednesday 16th of October",
            overrides=self.standup,
            except_date=dt.date(2013, 1, 16),
            cancellation_title="Meeting Postponed",
            cancellation_details=
            "The meeting has been postponed until tomorrow",
            postponement_title="A Meeting",
            date=dt.date(2013, 1, 17),
            time_from=dt.time(13),
            time_to=dt.time(16, 30),
            details="Yes a test meeting on a Thursday")
        self.standup.add_child(instance=self.postponement)

        cancelTuesday = CancellationPage(
            owner=self.user,
            slug="2013-01-01-cancellation",
            title="CancellationPage for Tuesday 1st of January",
            overrides=self.standup,
            except_date=dt.date(2013, 1, 1),
            cancellation_title="Meeting Cancelled")
        self.standup.add_child(instance=cancelTuesday)

    def testGetAllEventsByDay(self):
        events = getAllEventsByDay(self.request, dt.date(2013, 1, 1),
                                   dt.date(2013, 1, 31))
        self.assertEqual(len(events), 31)
        evod1 = events[0]
        self.assertEqual(evod1.date, dt.date(2013, 1, 1))
        self.assertEqual(len(evod1.all_events), 1)
        self.assertEqual(len(evod1.days_events), 0)
        self.assertEqual(len(evod1.continuing_events), 1)
        evod10 = events[9]
        self.assertEqual(evod10.date, dt.date(2013, 1, 10))
        self.assertEqual(len(evod10.all_events), 0)

    def testAuthGetAllEventsByDay(self):
        self.request.user.groups.set([self.friends])
        events = getAllEventsByDay(self.request, dt.date(2013, 1, 1),
                                   dt.date(2013, 1, 31))
        self.assertEqual(len(events), 31)
        evod10 = events[9]
        self.assertEqual(evod10.date, dt.date(2013, 1, 10))
        self.assertEqual(len(evod10.all_events), 1)
        self.assertEqual(len(evod10.days_events), 1)
        event = evod10.days_events[0]
        self.assertEqual(event.title, "Private Rendezvous")

    def testGetAllEventsByWeek(self):
        weeks = getAllEventsByWeek(self.request, 2013, 1)
        self.assertEqual(len(weeks), 5)
        self.assertIsNone(weeks[0][0])
        self.assertIsNone(weeks[0][1])
        self.assertIsNone(weeks[4][5])
        self.assertIsNone(weeks[4][6])
        evod = weeks[2][4]
        self.assertEqual(evod.date, dt.date(2013, 1, 17))
        self.assertEqual(len(evod.days_events), 1)
        self.assertEqual(len(evod.continuing_events), 0)

    def testGetAllUpcomingEvents(self):
        today = timezone.localdate()
        futureEvent = MultidayEventPage(owner=self.user,
                                        slug="tomorrow",
                                        title="Tomorrow's Event",
                                        date_from=today + dt.timedelta(days=1),
                                        date_to=today + dt.timedelta(days=3),
                                        time_from=dt.time(17),
                                        time_to=dt.time(10, 30))
        self.calendar.add_child(instance=futureEvent)
        events = getAllUpcomingEvents(self.request, home=self.home)
        self.assertEqual(len(events), 1)
        title, event, url = events[0]
        self.assertEqual(title, "Tomorrow's Event")
        self.assertEqual(event.slug, "tomorrow")
        events0 = getAllUpcomingEvents(self.request)
        self.assertEqual(len(events0), 1)

    @override_settings(JOYOUS_UPCOMING_INCLUDES_STARTED=True)
    def testGetAllCurrentEvents(self):
        today = timezone.localdate()
        futureEvent = MultidayEventPage(owner=self.user,
                                        slug="yesterday",
                                        title="Yesterday's Event",
                                        date_from=today - dt.timedelta(days=1),
                                        date_to=today + dt.timedelta(days=3),
                                        time_from=dt.time(17),
                                        time_to=dt.time(10, 30))
        self.calendar.add_child(instance=futureEvent)
        events = getAllUpcomingEvents(self.request, home=self.home)
        self.assertEqual(len(events), 1)
        title, event, url = events[0]
        self.assertEqual(title, "Yesterday's Event")
        self.assertEqual(event.slug, "yesterday")
        events0 = getAllUpcomingEvents(self.request)
        self.assertEqual(len(events0), 1)

    def testGetAllPastEvents(self):
        events = getAllPastEvents(self.request)
        self.assertEqual(len(events), 5)
        self.assertEqual(events[0].title, "Test Meeting")
        self.assertEqual(events[1].title, "A Meeting")
        self.assertEqual(events[2].title, "Meeting Postponed")
        self.assertEqual(events[3].title, "Pet Show")
        self.assertEqual(events[4].title, "All Night")

    def testGetGroupUpcomingEvents(self):
        meeting = RecurringEventPage(owner=self.user,
                                     slug="plan-plan",
                                     title="Planning to Plan",
                                     repeat=Recurrence(dtstart=dt.date(
                                         2018, 5, 1),
                                                       freq=WEEKLY,
                                                       byweekday=[TU]),
                                     time_from=dt.time(18, 30),
                                     time_to=dt.time(20),
                                     group_page=self.group)
        self.calendar.add_child(instance=meeting)
        memo = ExtraInfoPage(owner=self.user,
                             slug="plan-plan-extra-info",
                             title="Extra Information Planning to Plan",
                             overrides=meeting,
                             except_date=meeting.next_date,
                             extra_title="Gap Analysis",
                             extra_information="Analyse your gaps")
        meeting.add_child(instance=memo)
        events = getGroupUpcomingEvents(self.request, self.group)
        self.assertEqual(len(events), 2)
        self.assertEqual(events[0].title, "Gap Analysis")
        self.assertEqual(events[1].title, "Planning to Plan")

    def testGetGroupUpcomingEventsDupGroup(self):
        meeting = RecurringEventPage(owner=self.user,
                                     slug="plan-plan",
                                     title="Planning to Plan",
                                     repeat=Recurrence(dtstart=dt.date(
                                         2018, 5, 2),
                                                       freq=WEEKLY,
                                                       byweekday=[WE]),
                                     time_from=dt.time(18, 30),
                                     time_to=dt.time(20),
                                     group_page=self.group)
        self.group.add_child(instance=meeting)
        events = getGroupUpcomingEvents(self.request, self.group)
        self.assertEqual(len(events), 1)
        self.assertEqual(events[0].title, "Planning to Plan")
        self.assertEqual(events[0].page.group, self.group)

    def testGetGroupUpcomingEvents2Groups(self):
        rival = GroupPage(slug="initrode", title="Initrode Corporation")
        self.home.add_child(instance=rival)
        meeting = RecurringEventPage(owner=self.user,
                                     slug="plan-plan",
                                     title="Planning to Plan",
                                     repeat=Recurrence(dtstart=dt.date(
                                         2018, 5, 2),
                                                       freq=WEEKLY,
                                                       byweekday=[WE]),
                                     time_from=dt.time(18, 30),
                                     time_to=dt.time(20),
                                     group_page=rival)
        self.group.add_child(instance=meeting)
        events = getGroupUpcomingEvents(self.request, rival)
        self.assertEqual(len(events), 1)
        self.assertEqual(events[0].title, "Planning to Plan")
        # being a child of self.group trumps having group_page set
        self.assertEqual(events[0].page.group, self.group)
        events = getGroupUpcomingEvents(self.request, self.group)
        self.assertEqual(len(events), 1)
        self.assertEqual(events[0].title, "Planning to Plan")
        self.assertEqual(events[0].page.group, self.group)

    def testGetEventFromUid(self):
        event = getEventFromUid(self.request,
                                "29daefed-fed1-4e47-9408-43ec9b06a06d")
        self.assertEqual(event.title, "Pet Show")

    def testMultiGetEventFromUid(self):
        with self.assertRaises(MultipleObjectsReturned):
            getEventFromUid(self.request, "initiative+technology")

    def testMissingGetEventFromUid(self):
        with self.assertRaises(ObjectDoesNotExist):
            getEventFromUid(self.request,
                            "d12971fb-e694-4a04-aba2-fb1a4a7166b9")

    def testAuthGetEventFromUid(self):
        with self.assertRaises(PermissionDenied):
            event = getEventFromUid(self.request,
                                    "80af64e7-84e6-40d9-8b4f-7edf92aab9f7")
        self.request.user.groups.set([self.friends])
        event = getEventFromUid(self.request,
                                "80af64e7-84e6-40d9-8b4f-7edf92aab9f7")
        self.assertIsNotNone(event.title)
        self.assertEqual(event.title, "Private Rendezvous")
Пример #19
0
class Test(TestCase):
    def setUp(self):
        self.home = Page.objects.get(slug='home')
        self.user = User.objects.create_user('i', '*****@*****.**', 's3cr3t')
        self.calendar = SpecificCalendarPage(owner=self.user,
                                             slug="events",
                                             title="Events")
        self.home.add_child(instance=self.calendar)
        self.calendar.save_revision().publish()
        self.event = 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))
        self.calendar.add_child(instance=self.event)
        self.event.save_revision().publish()

    def testGetEventsByDay(self):
        events = SimpleEventPage.events.byDay(dt.date(1987, 6, 1),
                                              dt.date(1987, 6, 30))
        self.assertEqual(len(events), 30)
        evod = events[4]
        self.assertEqual(evod.date, dt.date(1987, 6, 5))
        self.assertEqual(len(evod.all_events), 1)
        self.assertEqual(len(evod.days_events), 1)
        self.assertEqual(len(evod.continuing_events), 0)

    def testStatus(self):
        self.assertEqual(self.event.status, "finished")
        self.assertEqual(self.event.status_text, "This event has finished.")
        now = timezone.localtime()
        earlier = now - dt.timedelta(hours=1)
        if earlier.date() != now.date():
            earlier = datetimetz(now.date(), dt.time.min)
        nowEvent = SimpleEventPage(owner=self.user,
                                   slug="now",
                                   title="Now Event",
                                   date=now.date(),
                                   time_from=earlier.time(),
                                   time_to=dt.time.max)
        self.assertEqual(nowEvent.status, "started")
        self.assertEqual(nowEvent.status_text, "This event has started.")
        tomorrow = timezone.localdate() + dt.timedelta(days=1)
        futureEvent = SimpleEventPage(owner=self.user,
                                      slug="tomorrow",
                                      title="Tomorrow's Event",
                                      date=tomorrow)
        self.calendar.add_child(instance=futureEvent)
        self.assertIsNone(futureEvent.status)
        self.assertEqual(futureEvent.status_text, "")

    def testWhen(self):
        self.assertEqual(self.event.when,
                         "Friday 5th of June 1987 at 11am to 5:30pm")

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

    def testUpcomingDt(self):
        self.assertIsNone(self.event._upcoming_datetime_from)
        now = timezone.localtime()
        earlier = now - dt.timedelta(hours=1)
        if earlier.date() != now.date():
            earlier = datetimetz(now.date(), dt.time.min)
        nowEvent = SimpleEventPage(owner=self.user,
                                   slug="now",
                                   title="Now Event",
                                   date=now.date(),
                                   time_from=earlier.time(),
                                   time_to=dt.time.max)
        self.calendar.add_child(instance=nowEvent)
        self.assertIsNone(nowEvent._upcoming_datetime_from)
        tomorrow = timezone.localdate() + dt.timedelta(days=1)
        futureEvent = SimpleEventPage(owner=self.user,
                                      slug="tomorrow",
                                      title="Tomorrow's Event",
                                      date=tomorrow)
        self.calendar.add_child(instance=futureEvent)
        self.assertEqual(futureEvent._upcoming_datetime_from,
                         datetimetz(tomorrow, dt.time.max))

    def testPastDt(self):
        self.assertEqual(self.event._past_datetime_from,
                         datetimetz(1987, 6, 5, 11, 0))
        now = timezone.localtime()
        earlier = now - dt.timedelta(hours=1)
        if earlier.date() != now.date():
            earlier = datetimetz(now.date(), dt.time.min)
        nowEvent = SimpleEventPage(owner=self.user,
                                   slug="now",
                                   title="Now Event",
                                   date=now.date(),
                                   time_from=earlier.time(),
                                   time_to=dt.time.max)
        self.calendar.add_child(instance=nowEvent)
        self.assertEqual(nowEvent._past_datetime_from, earlier)
        tomorrow = timezone.localdate() + dt.timedelta(days=1)
        futureEvent = SimpleEventPage(owner=self.user,
                                      slug="tomorrow",
                                      title="Tomorrow's Event",
                                      date=tomorrow)
        self.calendar.add_child(instance=futureEvent)
        self.assertIsNone(futureEvent._past_datetime_from)

    def testGroup(self):
        self.assertIsNone(self.event.group)
        group = GroupPage(slug="runners", title="Runners")
        self.home.add_child(instance=group)
        race = SimpleEventPage(owner=self.user,
                               slug="race",
                               title="Race",
                               date=dt.date(2008, 6, 3))
        group.add_child(instance=race)
        self.assertEqual(race.group, group)

    @override_settings(
        JOYOUS_THEME_CSS="/static/joyous/joyous_stellar_theme.html")
    def testIncludeThemeCss(self):
        response = self.client.get("/events/pet-show/")
        self.assertEqual(response.status_code, 200)
        soup = response.soup
        links = soup.head('link')
        self.assertEqual(len(links), 2)
        link = links[1]
        self.assertEqual(link['href'],
                         "/static/joyous/joyous_stellar_theme.html")
        self.assertEqual(link['type'], "text/css")
        self.assertEqual(link['rel'], ["stylesheet"])
Пример #20
0
class TestTZ(TestCase):
    def setUp(self):
        self.home = Page.objects.get(slug='home')
        self.user = User.objects.create_user('i', '*****@*****.**', 's3cr3t')
        self.calendar = SpecificCalendarPage(owner=self.user,
                                             slug="events",
                                             title="Events")
        self.home.add_child(instance=self.calendar)
        self.calendar.save_revision().publish()
        self.event = 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=self.event)
        self.event.save_revision().publish()

    @timezone.override("America/Los_Angeles")
    def testGetEventsByLocalDay(self):
        evods = SimpleEventPage.events.byDay(dt.date(1987, 6, 1),
                                             dt.date(1987, 6, 30))
        self.assertEqual(len(evods), 30)
        evod1 = evods[3]
        self.assertEqual(evod1.date, dt.date(1987, 6, 4))
        self.assertEqual(len(evod1.days_events), 1)
        self.assertEqual(len(evod1.continuing_events), 0)
        evod2 = evods[4]
        self.assertEqual(evod2.date, dt.date(1987, 6, 5))
        self.assertEqual(len(evod2.days_events), 0)
        self.assertEqual(len(evod2.continuing_events), 1)
        self.assertEqual(evod1.all_events[0], evod2.all_events[0])
        self.assertIs(evod1.all_events[0].page, evod2.all_events[0].page)

    @timezone.override("America/Los_Angeles")
    def testLocalWhen(self):
        self.assertEqual(
            self.event.when,
            "Thursday 4th of June 1987 at 6pm to Friday 5th of June 1987 at 12:30am"
        )

    @timezone.override("America/Los_Angeles")
    def testLocalAt(self):
        self.assertEqual(self.event.at, "6pm")

    @timezone.override("America/Los_Angeles")
    def testUpcomingLocalDt(self):
        self.assertIsNone(self.event._upcoming_datetime_from)

    @timezone.override("America/Los_Angeles")
    def testPastLocalDt(self):
        when = self.event._past_datetime_from
        self.assertEqual(when.tzinfo.zone, "America/Los_Angeles")
        self.assertEqual(when.time(), dt.time(18))
        self.assertEqual(when.date(), dt.date(1987, 6, 4))

    @timezone.override("Pacific/Tongatapu")
    def testGetEventsAcrossDateline(self):
        showDay = SimpleEventPage(owner=self.user,
                                  slug="tamakautoga-village-show-day",
                                  title="Tamakautoga Village Show Day",
                                  date=dt.date(2016, 7, 30),
                                  tz=pytz.timezone("Pacific/Niue"))
        self.calendar.add_child(instance=showDay)
        evods = SimpleEventPage.events.byDay(dt.date(2016, 7, 31),
                                             dt.date(2016, 7, 31))
        self.assertEqual(len(evods[0].days_events), 1)
        self.assertEqual(len(evods[0].continuing_events), 0)
        event = evods[0].days_events[0].page
        self.assertEqual(event.at, "")
        self.assertEqual(event.when, "Sunday 31st of July 2016")
Пример #21
0
class TestQuerySet(TestCase):
    def setUp(self):
        self.home = Page.objects.get(slug='home')
        self.user = User.objects.create_user('i', '*****@*****.**', 's3cr3t')
        self.calendar = SpecificCalendarPage(owner=self.user,
                                             slug="events",
                                             title="Events")
        self.home.add_child(instance=self.calendar)
        self.calendar.save_revision().publish()
        self.event = SimpleEventPage(owner=self.user,
                                     slug="agfest",
                                     title="AgFest",
                                     date=dt.date(2015, 6, 5),
                                     time_from=dt.time(11),
                                     time_to=dt.time(17, 30))
        self.calendar.add_child(instance=self.event)
        self.event.save_revision().publish()

    @freeze_time("2017-05-31")
    def testPast(self):
        self.assertEqual(list(SimpleEventPage.events.past()), [self.event])
        self.assertEqual(SimpleEventPage.events.past().count(), 1)
        self.assertEqual(SimpleEventPage.events.upcoming().count(), 0)

    @freeze_time("2012-03-04")
    def testUpcoming(self):
        self.assertEqual(list(SimpleEventPage.events.upcoming()), [self.event])
        self.assertEqual(SimpleEventPage.events.past().count(), 0)
        self.assertEqual(SimpleEventPage.events.upcoming().count(), 1)

    def testThis(self):
        events = list(SimpleEventPage.events.this())
        self.assertEqual(len(events), 1)
        this = events[0]
        self.assertTrue(isinstance(this, ThisEvent))
        self.assertEqual(this.title, "AgFest")
        self.assertEqual(this.page, self.event)

    def testByDay(self):
        evods = SimpleEventPage.events.byDay(dt.date(2015, 6, 5),
                                             dt.date(2015, 6, 5))
        self.assertEqual(len(evods), 1)
        evod = evods[0]
        self.assertTrue(isinstance(evod, EventsOnDay))
        self.assertEqual(evod.date, dt.date(2015, 6, 5))
        self.assertEqual(len(evod.days_events), 1)
        self.assertEqual(len(evod.continuing_events), 0)
        self.assertEqual(evod.days_events[0].title, "AgFest")
        self.assertEqual(evod.days_events[0].page, self.event)

    def testPasswordAuth(self):
        PASSWORD = PageViewRestriction.PASSWORD
        KEY = PageViewRestriction.passed_view_restrictions_session_key
        meeting = SimpleEventPage(owner=self.user,
                                  slug="club-meet",
                                  title="Club Meeting",
                                  date=dt.date(2009, 10, 21))
        self.calendar.add_child(instance=meeting)
        meeting.save_revision().publish()
        restriction = PageViewRestriction.objects.create(
            restriction_type=PASSWORD, password="******", page=meeting)
        self.assertEqual(list(SimpleEventPage.events.all()),
                         [self.event, meeting])
        request = RequestFactory().get("/test")
        request.user = self.user
        request.session = {}
        self.assertEqual(list(SimpleEventPage.events.auth(request)),
                         [self.event])
        request.session[KEY] = [restriction.id]
        self.assertEqual(list(SimpleEventPage.events.auth(request)),
                         [self.event, meeting])

    def testLoginAuth(self):
        LOGIN = PageViewRestriction.LOGIN
        bee = SimpleEventPage(owner=self.user,
                              slug="bee",
                              title="Working Bee",
                              date=dt.date(2013, 3, 30),
                              time_from=dt.time(10))
        self.calendar.add_child(instance=bee)
        bee.save_revision().publish()
        PageViewRestriction.objects.create(restriction_type=LOGIN, page=bee)
        self.assertEqual(list(SimpleEventPage.events.all()), [self.event, bee])
        self.assertFalse(bee.isAuthorized(None))
        request = RequestFactory().get("/test")
        request.user = AnonymousUser()
        request.session = {}
        self.assertEqual(list(SimpleEventPage.events.auth(request)),
                         [self.event])
        request.user = self.user
        self.assertEqual(list(SimpleEventPage.events.auth(request)),
                         [self.event, bee])

    def testGroupsAuth(self):
        GROUPS = PageViewRestriction.GROUPS
        presidium = Group.objects.create(name="Presidium")
        secretariat = Group.objects.create(name="Secretariat")
        assembly = Group.objects.create(name="Assembly")
        meeting = SimpleEventPage(owner=self.user,
                                  slug="admin-cmte",
                                  title="Administration Committee Meeting",
                                  date=dt.date(2015, 6, 20),
                                  time_from=dt.time(16, 30))
        self.calendar.add_child(instance=meeting)
        meeting.save_revision().publish()
        restriction = PageViewRestriction.objects.create(
            restriction_type=GROUPS, page=meeting)
        restriction.groups.set([presidium, secretariat])
        restriction.save()
        self.assertEqual(list(SimpleEventPage.events.all()),
                         [self.event, meeting])
        request = RequestFactory().get("/test")
        request.user = self.user
        request.session = {}
        self.assertEqual(list(SimpleEventPage.events.auth(request)),
                         [self.event])
        request.user = User.objects.create_superuser('joe', '*****@*****.**',
                                                     's3cr3t')
        self.assertEqual(list(SimpleEventPage.events.auth(request)),
                         [self.event, meeting])
        request.user = User.objects.create_user('jill', '*****@*****.**',
                                                's3cr3t')
        request.user.groups.set([secretariat, assembly])
        self.assertEqual(list(SimpleEventPage.events.auth(request)),
                         [self.event, meeting])