Ejemplo n.º 1
0
 def set_staff_lead(self, staff_lead=None):
     staff_lead = staff_lead or ProfileFactory()
     ResourceAllocationFactory(event=self.sched_event,
                               resource=WorkerFactory(
                                 _item=staff_lead,
                                 role="Staff Lead"))
     return staff_lead
Ejemplo n.º 2
0
 def add_panelist(self, panelist=None):
     panelist = panelist or PersonaFactory()
     ResourceAllocationFactory(event=self.sched_event,
                               resource=WorkerFactory(
                                   _item=panelist.workeritem_ptr,
                                   role='Panelist'))
     return panelist
 def set_interest(self, interested_profile=None):
     interested_profile = interested_profile or ProfileFactory()
     ResourceAllocationFactory(event=self.sched_event,
                               resource=WorkerFactory(
                                   _item=interested_profile,
                                   role="Interested"))
     return interested_profile
Ejemplo n.º 4
0
 def schedule_instance(self, starttime=None, room=None, teacher=None):
     room = room or self.room
     teacher = teacher or self.teacher
     if starttime:
         sched_event = SchedEventFactory(eventitem=self.bid.eventitem_ptr,
                                         starttime=starttime)
     elif self.sched_event:
         one_day = timedelta(1)
         sched_event = SchedEventFactory(
             eventitem=self.bid.eventitem_ptr,
             starttime=self.sched_event.starttime + one_day)
     else:
         sched_event = SchedEventFactory(eventitem=self.bid.eventitem_ptr,
                                         starttime=noon(self.days[0]))
     ResourceAllocationFactory(
         event=sched_event,
         resource=LocationFactory(_item=room.locationitem_ptr))
     ResourceAllocationFactory(event=sched_event,
                               resource=WorkerFactory(
                                   _item=teacher.workeritem_ptr,
                                   role='Teacher'))
     EventLabelFactory(event=sched_event,
                       text=self.conference.conference_slug)
     EventLabelFactory(event=sched_event, text="Conference")
     return sched_event
Ejemplo n.º 5
0
def book_worker_item_for_role(workeritem, role, eventitem=None):
    worker = WorkerFactory.create(_item=workeritem, role=role)
    if eventitem:
        event = SchedEventFactory.create(eventitem=eventitem)
    else:
        event = SchedEventFactory.create()

    booking = ResourceAllocationFactory.create(event=event, resource=worker)
    return booking
Ejemplo n.º 6
0
 def test_show_interest_duplicate(self):
     ResourceAllocationFactory(event=self.context.sched_event,
                               resource=WorkerFactory(_item=self.profile,
                                                      role="Interested"))
     login_as(self.profile, self)
     response = self.client.get(self.url, follow=True)
     redirect_url = reverse('home', urlconf='gbe.urls')
     self.assertRedirects(response, redirect_url)
     self.assertContains(response, self.context.bid.e_title)
     self.assertNotContains(response, set_favorite_msg)
Ejemplo n.º 7
0
    def __init__(self,
                 performer=None,
                 act=None,
                 show=None,
                 sched_event=None,
                 conference=None,
                 room_name=None,
                 schedule_rehearsal=False,
                 act_role="Regular Act",
                 set_waitlist=False):
        if conference:
            self.show = show or ShowFactory(e_conference=conference)
        else:
            self.show = show or ShowFactory()
        self.conference = conference or self.show.e_conference
        self.performer = performer or PersonaFactory()
        self.act = act or ActFactory(performer=self.performer,
                                     b_conference=self.conference,
                                     accepted=3,
                                     submitted=True)
        role = "Performer"
        if set_waitlist:
            self.act.accepted = 2
            self.act.save()
            act_role = "Waitlisted"
            role = "Waitlisted"
        self.tech = self.act.tech

        # schedule the show
        if sched_event:
            self.sched_event = sched_event
        else:
            self.sched_event = SchedEventFactory(
                eventitem=self.show.eventitem_ptr)
            EventLabelFactory(event=self.sched_event,
                              text=self.conference.conference_slug)
        room_name = room_name or "Dining Room"
        self.room = RoomFactory(name=room_name)
        self.room.conferences.add(self.conference)
        if not sched_event:
            ResourceAllocationFactory(
                event=self.sched_event,
                resource=LocationFactory(_item=self.room.locationitem_ptr))
        # schedule the act into the show
        self.booking = ResourceAllocationFactory(event=self.sched_event,
                                                 resource=WorkerFactory(
                                                     _item=self.act.performer,
                                                     role=role))
        self.order = OrderingFactory(allocation=self.booking,
                                     class_id=self.act.pk,
                                     class_name="Act",
                                     role=act_role)
        if schedule_rehearsal:
            self.rehearsal = self._schedule_rehearsal(self.sched_event,
                                                      self.act)
def book_act_item_for_show(actitem, eventitem):
    booking = ResourceAllocationFactory.create(
        event=SchedEventFactory.create(eventitem=eventitem),
        resource=WorkerFactory.create(_item=actitem.performer,
                                      role="Performer"))
    order = OrderingFactory(allocation=booking,
                            class_id=actitem.pk,
                            class_name="Act")
    EventLabelFactory(event=booking.event,
                      text=eventitem.e_conference.conference_slug)
    EventLabelFactory(event=booking.event, text=eventitem.calendar_type)
    return booking
Ejemplo n.º 9
0
 def book_act(self, act=None, act_role='Regular Act'):
     act = act or ActFactory(
         b_conference=self.conference, accepted=3, submitted=True)
     role = "Performer"
     booking = ResourceAllocationFactory(
         event=self.sched_event,
         resource=WorkerFactory(_item=act.performer, role=role))
     order = OrderingFactory(allocation=booking,
                             class_id=act.pk,
                             class_name="Act",
                             role=act_role)
     return (act, booking)
def book_worker_item_for_role(workeritem, role, eventitem=None):
    worker = WorkerFactory.create(_item=workeritem, role=role)
    if eventitem:
        event = SchedEventFactory.create(eventitem=eventitem)
    else:
        event = SchedEventFactory.create()

    EventLabelFactory(event=event,
                      text=event.eventitem.e_conference.conference_slug)
    EventLabelFactory(event=event, text=event.eventitem.calendar_type)
    booking = ResourceAllocationFactory.create(event=event, resource=worker)
    return booking
Ejemplo n.º 11
0
 def book_volunteer(self,
                    volunteer_sched_event=None,
                    volunteer=None,
                    role="Volunteer"):
     if not volunteer_sched_event:
         volunteer_sched_event = self.add_volunteer_opp()
     if not volunteer:
         volunteer = ProfileFactory()
     booking = ResourceAllocationFactory(event=volunteer_sched_event,
                                         resource=WorkerFactory(
                                             _item=volunteer, role=role))
     return (volunteer, booking)
Ejemplo n.º 12
0
    def __init__(self,
                 profile=None,
                 bid=None,
                 event=None,
                 opportunity=None,
                 role=None):
        if not event:
            self.window = VolunteerWindowFactory()
            self.conference = self.window.day.conference
        else:
            self.conference = event.e_conference
            if not VolunteerWindow.objects.filter(
                    day__conference=self.conference).exists():
                self.window = VolunteerWindowFactory(
                    day__conference=self.conference)
            else:
                self.window = VolunteerWindow.objects.all().first()
        self.conf_day = self.window.day
        self.profile = profile or ProfileFactory()
        if not hasattr(self.profile, 'preferences'):
            ProfilePreferencesFactory(profile=self.profile)

        if bid is False:
            self.bid = None
        elif bid:
            self.bid = bid
            self.profile = self.bid.profile
        else:
            self.bid = VolunteerFactory(
                b_conference=self.conference,
                profile=self.profile)
        self.interest = VolunteerInterestFactory(
            volunteer=self.bid)
        self.event = event or ShowFactory(
            e_conference=self.conference)
        self.role = role or "Volunteer"
        self.room = RoomFactory()
        self.sched_event = SchedEventFactory(
            eventitem=self.event.eventitem_ptr,
            starttime=datetime.combine(self.window.day.day,
                                       self.window.start))
        ResourceAllocationFactory(
            event=self.sched_event,
            resource=LocationFactory(_item=self.room))
        EventLabelFactory(event=self.sched_event,
                          text="General")
        EventLabelFactory(event=self.sched_event,
                          text=self.conference.conference_slug)
        self.worker = WorkerFactory(_item=self.profile.workeritem,
                                    role=self.role)
        self.opportunity, self.opp_event = self.add_opportunity(opportunity)
        self.allocation = ResourceAllocationFactory(resource=self.worker,
                                                    event=self.opp_event)
Ejemplo n.º 13
0
 def test_remove_interest(self):
     self.url = reverse(self.view_name,
                        args=[self.context.sched_event.pk, "off"],
                        urlconf="gbe.scheduling.urls")
     ResourceAllocationFactory(event=self.context.sched_event,
                               resource=WorkerFactory(_item=self.profile,
                                                      role="Interested"))
     login_as(self.profile, self)
     response = self.client.get(self.url, follow=True)
     redirect_url = reverse('home', urlconf='gbe.urls')
     self.assertRedirects(response, redirect_url)
     self.assertNotContains(response, self.context.bid.e_title)
     assert_alert_exists(response, 'success', 'Success', unset_favorite_msg)
Ejemplo n.º 14
0
 def test_act_changestate_book_act_with_conflict(self):
     grant_privilege(self.privileged_user, 'Act Reviewers')
     conflict = SchedEventFactory(
         starttime=self.context.sched_event.starttime)
     ResourceAllocationFactory(
         event=conflict,
         resource=WorkerFactory(
             _item=self.context.performer.performer_profile))
     url = reverse(self.view_name,
                   args=[self.context.act.pk],
                   urlconf='gbe.urls')
     login_as(self.privileged_user, self)
     response = self.client.post(url, data=self.data, follow=True)
     self.assertContains(response, "is booked for")
Ejemplo n.º 15
0
def book_worker_item_for_role(workeritem, role, eventitem=None):
        worker = WorkerFactory.create(
            _item=workeritem,
            role=role)
        if eventitem:
            event = SchedEventFactory.create(
                eventitem=eventitem)
        else:
            event = SchedEventFactory.create()

        booking = ResourceAllocationFactory.create(
            event=event,
            resource=worker
        )
        return booking
Ejemplo n.º 16
0
    def test_personal_schedule_interest_booking(self):
        '''a teacher booked into a class, with an active role condition
           should have a booking
        '''
        role_condition = RoleEligibilityConditionFactory()
        context = ClassContext()
        profile = ProfileFactory()
        booking = ResourceAllocationFactory(resource=WorkerFactory(
            _item=profile, role="Interested"),
                                            event=context.sched_event)

        login_as(self.priv_profile, self)
        response = self.client.get(
            self.url, data={"conf_slug": context.conference.conference_slug})
        self.assertContains(response, str(profile))
        self.assertContains(response, context.bid.e_title, 2)
        self.assertContains(response, "interested-sched")
Ejemplo n.º 17
0
 def test_repeated_lead_shows_once(self):
     show = ShowFactory()
     sched_events = [
         SchedEventFactory.create(eventitem=show.eventitem_ptr)
         for i in range(2)
     ]
     staff_lead = ProfileFactory()
     lead_worker = WorkerFactory(_item=staff_lead.workeritem_ptr,
                                 role="Staff Lead")
     for se in sched_events:
         ResourceAllocationFactory.create(event=se, resource=lead_worker)
     response = self.client.get(
         reverse(self.view_name,
                 urlconf="gbe.scheduling.urls",
                 args=[show.eventitem_id]))
     self.assertEqual(200, response.status_code)
     self.assertEqual(1, response.content.count(staff_lead.display_name))
Ejemplo n.º 18
0
    def __init__(self,
                 profile=None,
                 event=None,
                 sched_event=None,
                 opportunity=None,
                 role=None,
                 conference=None):
        if not event:
            self.conference = conference or ConferenceFactory()
        else:
            self.conference = event.e_conference

        if ConferenceDay.objects.filter(conference=self.conference).exists():
            self.conf_day = ConferenceDay.objects.filter(
                conference=self.conference).first()
        else:
            self.conf_day = ConferenceDayFactory(conference=self.conference)
        self.profile = profile or ProfileFactory()
        if not hasattr(self.profile, 'preferences'):
            ProfilePreferencesFactory(profile=self.profile)

        self.role = role or "Volunteer"
        self.room = RoomFactory()
        self.room.conferences.add(self.conference)
        self.event = event or ShowFactory(e_conference=self.conference)

        if not sched_event:
            self.sched_event = SchedEventFactory(
                eventitem=self.event.eventitem_ptr,
                starttime=datetime.combine(self.conf_day.day, time(12, 0, 0)))
            ResourceAllocationFactory(
                event=self.sched_event,
                resource=LocationFactory(_item=self.room))
            EventLabelFactory(event=self.sched_event, text="General")
            EventLabelFactory(event=self.sched_event,
                              text=self.conference.conference_slug)
        else:
            self.sched_event = sched_event
        self.worker = WorkerFactory(_item=self.profile.workeritem,
                                    role=self.role)
        self.opportunity, self.opp_event = self.add_opportunity(opportunity)
        self.allocation = ResourceAllocationFactory(resource=self.worker,
                                                    event=self.opp_event)
 def test_act_changestate_book_act_with_conflict(self):
     # accepted -> waitlist (#2, see above)
     # change show, change role
     EmailTemplateSenderFactory(from_email="*****@*****.**",
                                template__name='act wait list',
                                template__subject="test template")
     grant_privilege(self.privileged_user, 'Act Reviewers')
     conflict = SchedEventFactory(
         starttime=self.context.sched_event.starttime)
     EventLabelFactory(event=conflict,
                       text=self.context.conference.conference_slug)
     ResourceAllocationFactory(
         event=conflict,
         resource=WorkerFactory(
             _item=self.context.performer.performer_profile))
     login_as(self.privileged_user, self)
     response = self.client.post(self.url, data=self.data, follow=True)
     self.assertContains(response,
                         "Conflicting booking: %s" % str(conflict))
     assert_email_template_used("test template", "*****@*****.**")
Ejemplo n.º 20
0
 def schedule_instance(self, starttime=None, room=None, moderator=None):
     room = room or self.room
     moderator = moderator or self.moderator
     if starttime:
         sched_event = SchedEventFactory(eventitem=self.bid.eventitem_ptr,
                                         starttime=starttime)
     elif self.sched_event:
         one_day = timedelta(1)
         sched_event = SchedEventFactory(
             eventitem=self.bid.eventitem_ptr,
             starttime=self.sched_event.starttime + one_day)
     else:
         sched_event = SchedEventFactory(eventitem=self.bid.eventitem_ptr)
     ResourceAllocationFactory(
         event=sched_event,
         resource=LocationFactory(_item=room.locationitem_ptr))
     ResourceAllocationFactory(event=sched_event,
                               resource=WorkerFactory(
                                   _item=moderator.workeritem_ptr,
                                   role='Moderator'))
     return sched_event
Ejemplo n.º 21
0
    def _schedule_rehearsal(self, s_event, act=None):
        rehearsal = GenericEventFactory(type="Rehearsal Slot",
                                        e_conference=self.conference)
        rehearsal_event = SchedEventFactory(
            eventitem=rehearsal.eventitem_ptr,
            max_commitments=10,
            starttime=self.sched_event.starttime)
        event_container = EventContainerFactory(child_event=rehearsal_event,
                                                parent_event=s_event)
        EventLabelFactory(event=rehearsal_event,
                          text=self.conference.conference_slug)
        if act:
            booking = ResourceAllocationFactory(event=rehearsal_event,
                                                resource=WorkerFactory(
                                                    _item=act.performer,
                                                    role="Performer"))
            OrderingFactory(allocation=booking,
                            class_id=act.pk,
                            class_name="Act")

        return rehearsal_event
Ejemplo n.º 22
0
def book_worker_item_for_role(workeritem, role, eventitem=None):
    worker = WorkerFactory.create(
        _item=workeritem,
        role=role)
    if eventitem:
        event = SchedEventFactory.create(
            eventitem=eventitem)
    else:
        event = SchedEventFactory.create()

    EventLabelFactory(
        event=event,
        text=event.eventitem.e_conference.conference_slug
    )
    EventLabelFactory(
        event=event,
        text=event.eventitem.calendar_type
    )
    booking = ResourceAllocationFactory.create(
        event=event,
        resource=worker
    )
    return booking
Ejemplo n.º 23
0
 def post_conflict(self, staff=True):
     context = VolunteerContext()
     change_window = context.add_window()
     if staff:
         worker = WorkerFactory(
             _item=context.profile,
             role='Staff Lead'
         )
         ResourceAllocationFactory(
             event=context.sched_event,
             resource=worker)
     context.bid.available_windows.add(context.window)
     form = self.get_form(context)
     form['available_windows'] = [change_window.pk]
     url = reverse('volunteer_edit',
                   urlconf='gbe.urls',
                   args=[context.bid.pk])
     login_as(context.profile, self)
     response = self.client.post(
         url,
         form,
         follow=True)
     return response, context
Ejemplo n.º 24
0
    def setUp(self):
        self.client = Client()
        # Conference Setup
        self.factory = RequestFactory()
        self.current_conf = ConferenceFactory(accepting_bids=True,
                                              status='upcoming')
        self.previous_conf = ConferenceFactory(accepting_bids=False,
                                               status='completed')

        # User/Human setup
        self.profile = ProfileFactory()
        self.performer = PersonaFactory(performer_profile=self.profile,
                                        contact=self.profile)
        # Bid types previous and current
        self.current_act = ActFactory(performer=self.performer,
                                      submitted=True,
                                      b_conference=self.current_conf)
        self.previous_act = ActFactory(performer=self.performer,
                                       submitted=True,
                                       b_conference=self.previous_conf)
        self.current_class = ClassFactory(teacher=self.performer,
                                          submitted=True,
                                          accepted=3,
                                          b_conference=self.current_conf,
                                          e_conference=self.current_conf)
        self.previous_class = ClassFactory(teacher=self.performer,
                                           submitted=True,
                                           accepted=3,
                                           b_conference=self.previous_conf,
                                           e_conference=self.previous_conf)

        self.current_vendor = VendorFactory(profile=self.profile,
                                            submitted=True,
                                            b_conference=self.current_conf)
        self.previous_vendor = VendorFactory(profile=self.profile,
                                             submitted=True,
                                             b_conference=self.previous_conf)

        self.current_costume = CostumeFactory(profile=self.profile,
                                              submitted=True,
                                              b_conference=self.current_conf)
        self.previous_costume = CostumeFactory(profile=self.profile,
                                               submitted=True,
                                               b_conference=self.previous_conf)
        self.current_volunteer = VolunteerFactory(
            profile=self.profile,
            submitted=True,
            b_conference=self.current_conf)
        self.previous_volunteer = VolunteerFactory(
            profile=self.profile,
            submitted=True,
            b_conference=self.previous_conf)

        # Event assignments, previous and current
        current_opportunity = GenericEventFactory(
            e_conference=self.current_conf, type='Volunteer')
        previous_opportunity = GenericEventFactory(
            e_conference=self.previous_conf)

        self.current_sched = SchedEventFactory(eventitem=current_opportunity,
                                               starttime=datetime(
                                                   2016, 2, 5, 12, 30, 0, 0,
                                                   pytz.utc),
                                               max_volunteer=10)
        self.previous_sched = SchedEventFactory(eventitem=previous_opportunity,
                                                starttime=datetime(
                                                    2015, 2, 25, 12, 30, 0, 0,
                                                    pytz.utc),
                                                max_volunteer=10)

        self.current_class_sched = SchedEventFactory(
            eventitem=self.current_class,
            starttime=datetime(2016, 2, 5, 2, 30, 0, 0, pytz.utc),
            max_volunteer=10)
        self.previous_class_sched = SchedEventFactory(
            eventitem=self.previous_class,
            starttime=datetime(2015, 2, 25, 2, 30, 0, 0, pytz.utc),
            max_volunteer=10)

        worker = WorkerFactory(_item=self.profile, role='Volunteer')
        for schedule_item in [self.current_sched, self.previous_sched]:
            volunteer_assignment = ResourceAllocationFactory(
                event=schedule_item, resource=worker)
            LabelFactory(text="label %d" % volunteer_assignment.pk,
                         allocation=volunteer_assignment)

        persona_worker = WorkerFactory(_item=self.performer, role='Teacher')
        for schedule_item in [
                self.current_class_sched, self.previous_class_sched
        ]:
            volunteer_assignment = ResourceAllocationFactory(
                event=schedule_item, resource=worker)
Ejemplo n.º 25
0
 def make_priv_role(self, role="Stage Manager"):
     profile = ProfileFactory()
     ResourceAllocationFactory(event=self.sched_event,
                               resource=WorkerFactory(role=role,
                                                      _item=profile))
     return profile
Ejemplo n.º 26
0
 def set_producer(self, producer=None):
     producer = producer or ProfileFactory()
     ResourceAllocationFactory(event=self.sched_event,
                               resource=WorkerFactory(_item=producer,
                                                      role="Producer"))
     return producer