Exemple #1
0
def get_person(emplid, commit=True, force=False, grad_data=False):
    """
    Get/update personal info for this emplid and return (updated & saved) Person object.
    """
    global imported_people
    # use imported_people as a cache
    if emplid in imported_people:
        return imported_people[emplid]

    # either get old or create new Person object
    p_old = Person.objects.filter(emplid=emplid)
    if len(p_old) > 1:
        # should be dead code, since emplid is a unique key in the DB
        raise KeyError("Already duplicate people: %r" % (p_old))
    elif len(p_old) == 1:
        p = p_old[0]
    else:
        p = Person(emplid=emplid)
    imported_people[emplid] = p

    if 'lastimport' in p.config:
        import_age = time.time() - p.config['lastimport']
    else:
        import_age = IMPORT_THRESHOLD * 2

    # active students with no userid: pay more attention to try to get their userid for login/email.
    if p.userid is None and import_age > NO_USERID_IMPORT_THRESHOLD:
        new_p = import_person(p, commit=commit, grad_data=grad_data)
        if new_p:
            return new_p
        elif p_old:
            return p

    # only import if data is older than IMPORT_THRESHOLD (unless forced)
    # Randomly occasionally import anyway, so new students don't stay bunched-up.
    elif not force and import_age < IMPORT_THRESHOLD and random.random(
    ) < 0.99:
        return p

    # actually import their data
    else:
        new_p = import_person(p, commit=commit, grad_data=grad_data)
        if new_p:
            return new_p
        elif p_old:
            return p
Exemple #2
0
def get_person(emplid, commit=True, force=False, grad_data=False):
    """
    Get/update personal info for this emplid and return (updated & saved) Person object.
    """
    global imported_people
    # use imported_people as a cache
    if emplid in imported_people:
        return imported_people[emplid]

    # either get old or create new Person object
    p_old = Person.objects.filter(emplid=emplid)
    if len(p_old)>1:
        # should be dead code, since emplid is a unique key in the DB
        raise KeyError("Already duplicate people: %r" % (p_old))
    elif len(p_old)==1:
        p = p_old[0]
    else:
        p = Person(emplid=emplid)
    imported_people[emplid] = p

    if 'lastimport' in p.config:
        import_age = time.time() - p.config['lastimport']
    else:
        import_age = IMPORT_THRESHOLD * 2

    # active students with no userid: pay more attention to try to get their userid for login/email.
    if p.userid is None and import_age > NO_USERID_IMPORT_THRESHOLD:
        new_p = import_person(p, commit=commit, grad_data=grad_data)
        if new_p:
            return new_p
        elif p_old:
            return p

    # only import if data is older than IMPORT_THRESHOLD (unless forced)
    # Randomly occasionally import anyway, so new students don't stay bunched-up.
    elif not force and import_age < IMPORT_THRESHOLD and random.random() < 0.99:
        return p

    # actually import their data
    else:
        new_p = import_person(p, commit=commit, grad_data=grad_data)
        if new_p:
            return new_p
        elif p_old:
            return p