Esempio n. 1
0
def drop_in_advisors_for_dept_code(dept_code):
    dept_code = dept_code.upper()
    advisor_assignments = DropInAdvisor.advisors_for_dept_code(dept_code)
    feeds = []
    for a in advisor_assignments:
        transformed_user = authorized_users_api_feed([a.authorized_user])[0]
        transformed_user['available'] = a.is_available
        feeds.append(transformed_user)
    return feeds
 def test_feature_flag(self, client, fake_auth, app):
     """Appointments feature is false."""
     dept_code = 'QCADV'
     advisor = DropInAdvisor.advisors_for_dept_code(dept_code)[0]
     fake_auth.login(
         AuthorizedUser.find_by_id(advisor.authorized_user_id).uid)
     appointment = AppointmentTestUtil.create_appointment(client, dept_code)
     with override_config(app, 'FEATURE_FLAG_ADVISOR_APPOINTMENTS', False):
         self._check_in(client, appointment['id'], expected_status_code=401)
Esempio n. 3
0
def _create_department_memberships():
    for dept_code, dept_membership in _university_depts.items():
        university_dept = UniversityDept.find_by_dept_code(dept_code)
        db.session.add(university_dept)
        for user in dept_membership['users']:
            authorized_user = AuthorizedUser.find_by_uid(user['uid'])
            UniversityDeptMember.create_or_update_membership(
                university_dept=university_dept,
                authorized_user=authorized_user,
                is_advisor=user['isAdvisor'],
                is_director=user['isDirector'],
                is_scheduler=user['isScheduler'],
                automate_membership=user['automate_membership'],
            )
            if user['isDropInAdvisor']:
                DropInAdvisor.create_or_update_status(
                    university_dept=university_dept,
                    authorized_user=authorized_user,
                    is_available=True,
                )
 def test_reserve_appointment(self, app, client, fake_auth):
     """Drop-in advisor can reserve an appointment."""
     dept_code = 'QCADV'
     advisor = DropInAdvisor.advisors_for_dept_code(dept_code)[0]
     user = AuthorizedUser.find_by_id(advisor.authorized_user_id)
     fake_auth.login(user.uid)
     waiting = AppointmentTestUtil.create_appointment(client, dept_code)
     appointment = self._reserve_appointment(client, waiting['id'])
     assert appointment['status'] == 'reserved'
     assert appointment['statusDate'] is not None
     assert appointment['statusBy']['id'] == user.id
     Appointment.delete(appointment['id'])
    def test_steal_appointment_reservation(self, app, client, fake_auth):
        """Reserve an appointment that another advisor has reserved."""
        dept_code = 'COENG'
        advisor_1 = DropInAdvisor.advisors_for_dept_code(dept_code)[0]
        user_1 = AuthorizedUser.find_by_id(advisor_1.authorized_user_id)
        fake_auth.login(user_1.uid)
        waiting = AppointmentTestUtil.create_appointment(client, dept_code)
        appointment = self._reserve_appointment(client, waiting['id'])
        assert appointment['status'] == 'reserved'
        assert appointment['statusDate'] is not None
        assert appointment['statusBy']['id'] == user_1.id
        client.get('/api/auth/logout')

        # Another advisor comes along...
        advisor_2 = DropInAdvisor.advisors_for_dept_code(dept_code)[1]
        user_2 = AuthorizedUser.find_by_id(advisor_2.authorized_user_id)
        fake_auth.login(user_2.uid)
        appointment = self._reserve_appointment(client, waiting['id'])
        assert appointment['status'] == 'reserved'
        assert appointment['statusDate'] is not None
        assert appointment['statusBy']['id'] == user_2.id
        # Clean up
        Appointment.delete(appointment['id'])
 def test_appointment_cancel(self, app, client, fake_auth):
     """Drop-in advisor can cancel appointment."""
     dept_code = 'QCADV'
     advisor = DropInAdvisor.advisors_for_dept_code(dept_code)[0]
     user = AuthorizedUser.find_by_id(advisor.authorized_user_id)
     fake_auth.login(user.uid)
     waiting = AppointmentTestUtil.create_appointment(client, dept_code)
     appointment = self._cancel_appointment(client, waiting['id'],
                                            'Canceled by wolves')
     appointment_id = appointment['id']
     assert appointment_id == waiting['id']
     assert appointment['status'] == 'canceled'
     assert appointment['statusBy']['id'] == user.id
     assert appointment['statusBy']['uid'] == user.uid
     assert appointment['statusDate'] is not None
     Appointment.delete(appointment_id)