Exemplo n.º 1
0
    def test_get_year_1st_grader_fall(self):
        groups = [
            INFORMATICS_BACHELOR_STUDY_PROGRAMME,
            load_course(ITGK_ACTIVE)
        ]

        self.assertEqual(1, get_year(GROUP_IDENTIFIERS['BACHELOR'], groups))
Exemplo n.º 2
0
    def test_get_year_5th_grader_fall(self):
        groups = [
            INFORMATICS_MASTER_STUDY_PROGRAMME,
            load_course(PVS_ACTIVE, active=True),
        ]

        self.assertEqual(5, get_year(GROUP_IDENTIFIERS['MASTER'], groups))
Exemplo n.º 3
0
    def test_get_year_3rd_grader_fall(self):
        groups = [
            INFORMATICS_BACHELOR_STUDY_PROGRAMME,
            load_course(ITGK_EXPIRED, years_ago=2)
        ]

        self.assertEqual(3, get_year(GROUP_IDENTIFIERS['BACHELOR'], groups))
Exemplo n.º 4
0
    def test_find_study_5th_grader_pvs_fall(self):
        dumps_dir = os.path.join(DIR_NAME, 'data')
        fname = os.path.join(dumps_dir, '5th_grader_2018_pvs.json')
        with open(fname, 'r') as f:
            groups = json.load(f)

        field_of_study = get_field_of_study(groups)
        self.assertEqual(FIELD_OF_STUDY_CHOICES[2][0], field_of_study)

        self.assertEqual(5, get_year(GROUP_IDENTIFIERS['MASTER'], groups))
Exemplo n.º 5
0
    def test_find_study_3rd_grader(self):
        dumps_dir = os.path.join(DIR_NAME, 'data')
        fname = os.path.join(dumps_dir, '3rd_grader_2018.json')
        with open(fname, 'r') as f:
            groups = json.load(f)

        field_of_study = get_field_of_study(groups)
        self.assertEqual(FIELD_OF_STUDY_CHOICES[1][0], field_of_study)

        self.assertEqual(3, get_year(GROUP_IDENTIFIERS['BACHELOR'], groups))
Exemplo n.º 6
0
    def test_find_study_4th_grader_dbs_fall(self):
        dumps_dir = os.path.join(DIR_NAME, 'data')
        fname = os.path.join(dumps_dir, '4th_grader_2018_dbs.json')
        with open(fname, 'r') as f:
            groups = json.load(f)

        field_of_study = get_field_of_study(groups)
        self.assertEqual(FieldOfStudyType.DATABASE_AND_SEARCH, field_of_study)

        self.assertEqual(4, get_year(GROUP_IDENTIFIERS['MASTER'], groups))
Exemplo n.º 7
0
    def test_find_study_5th_grader_pvs_fall(self):
        dumps_dir = os.path.join(DIR_NAME, 'data')
        fname = os.path.join(dumps_dir, '5th_grader_2018_pvs.json')
        with open(fname, 'r') as f:
            groups = json.load(f)

        field_of_study = get_field_of_study(groups)
        self.assertEqual(FieldOfStudyType.SOFTWARE_ENGINEERING, field_of_study)

        self.assertEqual(5, get_year(GROUP_IDENTIFIERS['MASTER'], groups))
Exemplo n.º 8
0
    def test_find_study_2nd_grader_fall(self):
        dumps_dir = os.path.join(DIR_NAME, 'data')
        fname = os.path.join(dumps_dir, '2nd_grader_2018.json')
        with open(fname, 'r') as f:
            groups = json.load(f)

        field_of_study = get_field_of_study(groups)
        self.assertEqual(FieldOfStudyType.BACHELOR, field_of_study)

        self.assertEqual(2, get_year(GROUP_IDENTIFIERS['BACHELOR'], groups))
Exemplo n.º 9
0
    def test_find_study_3rd_grader_extended_fall(self):
        dumps_dir = os.path.join(DIR_NAME, "data")
        fname = os.path.join(dumps_dir, "3rd_grader_extended_1_year_2018.json")
        with open(fname, "r") as f:
            groups = json.load(f)

        field_of_study = get_field_of_study(groups)
        self.assertEqual(FieldOfStudyType.BACHELOR, field_of_study)

        self.assertEqual(3, get_year(GROUP_IDENTIFIERS["BACHELOR"], groups))
Exemplo n.º 10
0
    def test_find_study_4th_grader_dbs_2019(self):
        dumps_dir = os.path.join(DIR_NAME, "data")
        fname = os.path.join(dumps_dir, "4th_grader_2019_dbs.json")
        with open(fname, "r") as f:
            groups = json.load(f)

        field_of_study = get_field_of_study(groups)
        self.assertEqual(FieldOfStudyType.DATABASE_AND_SEARCH, field_of_study)

        self.assertEqual(4, get_year(GROUP_IDENTIFIERS["MASTER"], groups))
Exemplo n.º 11
0
    def test_find_study_5th_grader_ki_fall(self):
        dumps_dir = os.path.join(DIR_NAME, 'data')
        fname = os.path.join(dumps_dir, '5th_grader_2018_ki.json')
        with open(fname, 'r') as f:
            groups = json.load(f)

        field_of_study = get_field_of_study(groups)
        self.assertEqual(FieldOfStudyType.ARTIFICIAL_INTELLIGENCE,
                         field_of_study)

        self.assertEqual(5, get_year(GROUP_IDENTIFIERS['MASTER'], groups))
Exemplo n.º 12
0
 def test_get_year_not_informatics(self):
     self.assertEqual(0, get_year('DEFINITELY_NOT_INFORMATICS', []))
Exemplo n.º 13
0
    def test_get_year_4th_grader_fall(self):
        groups = [
            INFORMATICS_MASTER_STUDY_PROGRAMME,
        ]

        self.assertEqual(4, get_year(GROUP_IDENTIFIERS['MASTER'], groups))
Exemplo n.º 14
0
def find_user_study_and_update(user, groups):
    study_group = get_study(groups)
    study_id = get_group_id(study_group)
    study_year = get_year(study_id, groups)
    study_name = study_group.get("displayName")
    field_of_study = get_field_of_study(groups)

    # Remove the years from bachelor if the user is a master student.
    if study_year >= 4:
        start_date_for_study = study_year - 3
    else:
        start_date_for_study = study_year

    # Approvals are usually set from July 1st, so we do that here too.
    started_date = datetime(timezone.now().year - start_date_for_study + 1, 7, 1)

    logger.debug(
        "Found {} to be studying {} on year {}".format(user, study_id, study_year)
    )

    if study_name:
        application = MembershipApproval.objects.create(
            applicant=user,
            approver=user,
            processed=True,
            processed_date=timezone.now(),
            approved=True,
            message="Automatisk godkjent gjennom integrasjon mot Dataporten.",
            field_of_study=field_of_study,
            new_expiry_date=get_expiry_date(
                started_date.year, get_length_of_field_of_study(field_of_study)
            ),
            started_date=started_date,
        )

        if application.is_fos_application():
            user.field_of_study = application.field_of_study
            user.started_date = application.started_date
            user.save()

        if application.is_membership_application():
            membership = Membership.objects.filter(username=user.ntnu_username)
            if membership.count() == 1:
                membership = membership[0]
                if not membership.description:
                    membership.description = ""
                membership.description += """
                -------------------
                Updated by dataporten app.

                Automatically approved on %s.

                Old notes:
                %s
                """ % (
                    str(timezone.now().date()),
                    membership.note,
                )
                membership.note = (
                    user.get_field_of_study_display() + " " + str(user.started_date)
                )

            else:
                membership = Membership()
                membership.username = user.ntnu_username
                membership.registered = timezone.now().date()
                membership.description = """Added by dataporten app.

                Automatically approved on %s.""" % (
                    str(timezone.now().date())
                )
                membership.note = (
                    user.get_field_of_study_display() + " " + str(user.started_date)
                )

            membership.expiration_date = application.new_expiry_date
            logger.debug("ntnu username: ")
            logger.debug(user.ntnu_username)
            membership.save()

        return True, study_name, study_year