Esempio n. 1
0
    def test_distinct_sids(self, client, fake_auth):
        """Get distinct SIDs across cohorts and curated groups."""
        user_id = AuthorizedUser.get_id_per_uid(coe_advisor_uid)
        cohort_ids = []
        sids = set()
        for cohort in CohortFilter.get_cohorts(user_id):
            cohort_id = cohort['id']
            cohort_ids.append(cohort_id)
            sids.update(set(CohortFilter.get_sids(cohort_id)))

        assert len(sids) > 1
        curated_group = CuratedGroup.create(
            user_id, 'Like a lemon to a lime, a lime to a lemon')
        curated_group_ids = [curated_group.id]
        # We use SIDs from cohorts (above). Therefore, we expect no increase in 'batch_distinct_student_count'.
        for sid in sids:
            CuratedGroup.add_student(curated_group.id, sid)
        # A specific student (SID) that is in neither cohorts nor curated groups.
        some_other_sid = '5678901234'
        assert some_other_sid not in sids
        # Log in as authorized user
        fake_auth.login(coe_advisor_uid)
        data = self._api_distinct_sids(
            client,
            cohort_ids=cohort_ids,
            curated_group_ids=curated_group_ids,
            sids=[some_other_sid],
        )
        assert sids.union({some_other_sid}) == set(data['sids'])
Esempio n. 2
0
def _create_curated_groups():
    admin_user = AuthorizedUser.find_by_uid('2040')
    CuratedGroup.create(admin_user.id, 'My Students')

    asc_advisor = AuthorizedUser.find_by_uid('6446')
    CuratedGroup.create(asc_advisor.id, 'My Students')

    curated_group = CuratedGroup.create(asc_advisor.id, 'Four students')
    CuratedGroup.add_student(curated_group.id, '3456789012')
    CuratedGroup.add_student(curated_group.id, '5678901234')
    CuratedGroup.add_student(curated_group.id, '11667051')
    CuratedGroup.add_student(curated_group.id, '7890123456')

    coe_advisor = AuthorizedUser.find_by_uid('1133399')
    curated_group = CuratedGroup.create(coe_advisor.id, 'I have one student')
    CuratedGroup.add_student(curated_group.id, '7890123456')

    ce3_advisor = AuthorizedUser.find_by_uid('2525')
    curated_group = CuratedGroup.create(
        domain='admitted_students',
        name="My 'admitted_students' group",
        owner_id=ce3_advisor.id,
    )
    CuratedGroup.add_student(curated_group.id, '7890123456')
    std_commit(allow_test_environment=True)
Esempio n. 3
0
def create_curated_group():
    params = request.get_json()
    name = params.get('name', None)
    if not name:
        raise BadRequestError('Curated group creation requires \'name\'')
    curated_group = CuratedGroup.create(current_user.get_id(), name)
    # Optionally, add students
    if 'sids' in params:
        sids = [sid for sid in set(params.get('sids')) if sid.isdigit()]
        CuratedGroup.add_students(curated_group_id=curated_group.id, sids=sids)
    return tolerant_jsonify(curated_group.to_api_json())
def create_curated_group():
    params = request.get_json()
    domain = get_param(params, 'domain', 'default')
    if is_unauthorized_domain(domain):
        raise ForbiddenRequestError(
            f'You are unauthorized to use the \'{domain}\' domain')
    name = params.get('name', None)
    if not name:
        raise BadRequestError('Curated group creation requires \'name\'')
    curated_group = CuratedGroup.create(domain=domain,
                                        name=name,
                                        owner_id=current_user.get_id())
    # Optionally, add students
    if 'sids' in params:
        sids = [sid for sid in set(params.get('sids')) if sid.isdigit()]
        CuratedGroup.add_students(curated_group_id=curated_group.id, sids=sids)
    return tolerant_jsonify(curated_group.to_api_json(include_students=True))
Esempio n. 5
0
    def test_update_curated_group_lists(self, app):
        from boac.api.cache_utils import update_curated_group_lists
        curated_group = CuratedGroup.create(
            owner_id=AuthorizedUser.find_by_uid('6446').id,
            name='This group has one student not in Data Loch',
        )
        original_sids = ['3456789012', '5678901234', '7890123456']
        for sid in original_sids:
            CuratedGroup.add_student(curated_group.id, sid)
        sid_not_in_data_loch = '19040616'
        CuratedGroup.add_student(curated_group.id, sid_not_in_data_loch)
        std_commit(allow_test_environment=True)

        revised_sids = CuratedGroupStudent.get_sids(curated_group.id)
        assert sid_not_in_data_loch in revised_sids
        update_curated_group_lists()
        std_commit(allow_test_environment=True)

        final_sids = CuratedGroupStudent.get_sids(curated_group.id)
        assert sid_not_in_data_loch not in final_sids
        assert set(final_sids) == set(original_sids)