コード例 #1
0
ファイル: term.py プロジェクト: fanglinfang/myuw
def get_current_quarter(request):
    """
    Return a restclients.models.sws.Term object
    for the current quarter.
    """
    timer = Timer()
    try:
        comparison_date = get_comparison_date(request)
        term = get_term_by_date(comparison_date)
        after = get_term_after(term)

        if comparison_date > term.grade_submission_deadline.date():
            return after

        return term
    except Exception as ex:
        print ex
        log_exception(logger,
                      'get_current_term',
                      traceback.format_exc())
    finally:
        log_resp_time(logger,
                      'get_current_term',
                      timer)
    return None
コード例 #2
0
ファイル: schedule.py プロジェクト: fanglinfang/myuw
def _get_schedule(regid, term):
    """
    @return a restclients.models.sws.ClassSchedule object
    Return the actively enrolled sections for the current user
    in the given term/quarter
    """
    if regid is None or term is None:
        return None
    logid = ('get_schedule_by_regid_and_term ' +
             str(regid) + ',' + str(term.year) + ',' + term.quarter)
    timer = Timer()
    try:
        schedule = get_schedule_by_regid_and_term(regid, term, False)

        # XXX - 2015 workaround for MUWM-3390.
        # We want something different for 2016 - MUWM-3391
        non_early_start_sections = []
        for section in schedule.sections:
            if EARLY_FALL_START != section.institute_name:
                non_early_start_sections.append(section)

        schedule.sections = non_early_start_sections
        return schedule
    except Exception as ex:
        log_exception(logger,
                      logid,
                      traceback.format_exc())
    finally:
        log_resp_time(logger,
                      logid,
                      timer)
    return None
コード例 #3
0
def get_current_quarter_course_campuses(request):
    """
    Returns a dictionary indicating the campuses that the student
    has enrolled in the current quarter.
    """
    try:
        current_quarter_sche = get_current_quarter_schedule(request)
    except Exception as ex:
        log_exception(logger, 'get_current_quarter_course_campuses',
                      traceback.format_exc())
        current_quarter_sche = None
    return _get_campuses_by_schedule(current_quarter_sche)
コード例 #4
0
ファイル: enrollment.py プロジェクト: fanglinfang/myuw
def get_current_quarter_enrollment(request):
    regid = get_regid_of_current_user()

    timer = Timer()
    id = "%s %s" % ("get enrollment by regid", regid)
    try:
        return get_enrollment_by_regid_and_term(regid, get_current_quarter(request))
    except Exception:
        log_exception(logger, id, traceback.format_exc())
    finally:
        log_resp_time(logger, id, timer)
    return None
コード例 #5
0
ファイル: affiliation.py プロジェクト: vegitron/myuw
def get_current_quarter_course_campuses(request):
    """
    Returns a dictionary indicating the campuses that the student
    has enrolled in the current quarter.
    """
    try:
        current_quarter_sche = get_current_quarter_schedule(request)
    except Exception as ex:
        log_exception(logger,
                      'get_current_quarter_course_campuses',
                      traceback.format_exc())
        current_quarter_sche = None
    return _get_campuses_by_schedule(current_quarter_sche)
コード例 #6
0
ファイル: pws.py プロジェクト: fanglinfang/myuw
def _get_person_of_current_user():
    """
    Retrieve the person data using the netid of the current user
    """
    timer = Timer()
    try:
        return PWS().get_person_by_netid(get_netid_of_current_user())
    except Exception as ex:
        log_exception(logger,
                      'pws.get_person_by_netid',
                      traceback.format_exc())
    finally:
        log_resp_time(logger,
                      'pws.get_person_by_netid',
                      timer)
    return None
コード例 #7
0
ファイル: hfs.py プロジェクト: fanglinfang/myuw
def get_account_balances_by_uwnetid(uwnetid):
    """
    returns restclients.models.hfs.HfsAccouts
    for the given uwnetid
    """
    if uwnetid is None:
        return None
    id = "%s %s" % ('get_hfs_accounts', uwnetid)

    try:
        return get_hfs_accounts(uwnetid)
    except Exception as ex:
        log_exception(logger,
                      id,
                      traceback.format_exc())
    return None
コード例 #8
0
ファイル: canvas.py プロジェクト: fanglinfang/myuw
def get_canvas_enrolled_courses():
    """
    Returns calendar information for the current term.
    """
    timer = Timer()
    try:
        regid = get_regid_of_current_user()
        return get_indexed_data_for_regid(regid)
    except AttributeError:
        # If course is not in canvas, skip
        pass
    except Exception as ex:
        log_exception(logger, "get_canvas_enrolled_courses", traceback.format_exc())
    finally:
        log_resp_time(logger, "get_canvas_enrolled_courses", timer)
    return []
コード例 #9
0
ファイル: uwemail.py プロジェクト: fanglinfang/myuw
def _get_email_forwarding_by_uwnetid(uwnetid):
    """
    returns restclients.models.uwnetid.UwEmailForwarding object
    for a given uwnetid
    """

    if uwnetid is None:
        return None

    id = "%s %s" % ('_get_email_forwarding_by_uwnetid', uwnetid)
    try:
        return get_email_forwarding(uwnetid)
    except Exception:
        log_exception(logger,
                      id,
                      traceback.format_exc())
    return None
コード例 #10
0
ファイル: library.py プロジェクト: fanglinfang/myuw
def _get_account_by_uwnetid(uwnetid):
    """
    returns restclients.models.library.MyLibAccount object
    for a given uwnetid
    """

    if uwnetid is None:
        return None

    id = "%s %s" % ('_get_account_by_uwnetid', uwnetid)
    try:
        return get_account(uwnetid)
    except Exception:
        log_exception(logger,
                      id,
                      traceback.format_exc())
    return None
コード例 #11
0
ファイル: term.py プロジェクト: fanglinfang/myuw
def get_next_quarter(request):
    """
    Returna restclients.models.sws.Term object
    for the next quarter.
    """
    timer = Timer()
    try:
        current = get_current_quarter(request)
        return get_term_after(current)
    except Exception as ex:
        log_exception(logger,
                      'get_next_term',
                      traceback.format_exc())
    finally:
        log_resp_time(logger,
                      'get_next_term',
                      timer)
    return None
コード例 #12
0
ファイル: gws.py プロジェクト: fanglinfang/myuw
def _is_member(groupid):
    """
    Return True if the current user netid is
    an effective member of the given group
    """
    timer = Timer()
    try:
        return GWS().is_effective_member(groupid,
                                         get_netid_of_current_user())
    except Exception as ex:
        log_exception(logger,
                      'gws.is_effective_member of ' + groupid,
                      traceback.format_exc())
    finally:
        log_resp_time(logger,
                      'gws.is_effective_member of ' + groupid,
                      timer)
    return None
コード例 #13
0
ファイル: term.py プロジェクト: fanglinfang/myuw
def _get_term_by_year_and_quarter(year, quarter):
    """
    Returns Term object by the given year and quarter.
    If year and quarter are None, return the current term
    """
    logid = ('get_term_by_year_and_quarter ' +
             str(year) + "," + quarter)
    timer = Timer()
    try:
        return sws_term.get_term_by_year_and_quarter(year, quarter)
    except Exception as ex:
        log_exception(logger,
                      logid,
                      traceback.format_exc())
    finally:
        log_resp_time(logger,
                      logid,
                      timer)
    return None
コード例 #14
0
ファイル: student_profile.py プロジェクト: fanglinfang/myuw
def get_profile_of_current_user():
    """
    Return restclients.models.sws.SwsPerson object
    """
    regid = get_regid_of_current_user()

    timer = Timer()
    id = "%s %s" % ('get sws.person by regid', regid)
    try:
        return get_person_by_regid(regid)
    except Exception:
        log_exception(logger,
                      id,
                      traceback.format_exc())
    finally:
        log_resp_time(logger,
                      id,
                      timer)
    return None
コード例 #15
0
ファイル: library.py プロジェクト: fanglinfang/myuw
def get_subject_guide_by_section(section):
    """
    returns a url string
    """
    id = "%s %s %s %s %s" % ('get_subject_guide',
                             section.curriculum_abbr,
                             section.sln,
                             section.term.quarter,
                             section.term.year)
    try:
        return get_subject_guide(section.curriculum_abbr,
                                 section.sln,
                                 section.term.quarter,
                                 section.term.year)
    except Exception:
        log_exception(logger,
                      id,
                      traceback.format_exc())
    return None
コード例 #16
0
ファイル: finance.py プロジェクト: fanglinfang/myuw
def _get_account_balances_by_regid(user_regid):
    """
    returns restclients.models.sws.Finance object for a given regid
    """

    if user_regid is None:
        return None

    timer = Timer()
    id = "%s %s" % ('_get_account_balances_by_regid', user_regid)
    try:
        return get_account_balances_by_regid(user_regid)
    except Exception:
        log_exception(logger,
                      id,
                      traceback.format_exc())
    finally:
        log_resp_time(logger,
                      id,
                      timer)
    return None
コード例 #17
0
ファイル: course_color.py プロジェクト: fanglinfang/myuw
def get_colors_by_regid_and_schedule(regid, schedule):
    if schedule is None or len(schedule.sections) == 0:
        return None
    timer = Timer()
    try:
        return _indexed_colors_by_section_label(
            CourseColor.objects.filter(
                regid=regid,
                year=schedule.term.year,
                quarter=schedule.term.quarter),
            regid,
            schedule)
    except Exception as ex:
        log_exception(logger,
                      'query CourseColor',
                      traceback.format_exc())
    finally:
        log_resp_time(logger,
                      'query CourseColor',
                      timer)
    return None
コード例 #18
0
ファイル: notice.py プロジェクト: fanglinfang/myuw
def _get_notices_by_regid(user_regid):
    """
    returns SWS notices for a given regid with
    myuw specific categories
    """

    if user_regid is None:
        return None

    timer = Timer()

    try:
        notices = get_notices_by_regid(user_regid)
        if notices is not None:
            return categorize_notices(notices)
    except Exception:
        log_exception(logger,
                      'Notice.get_notices',
                      traceback.format_exc())
    finally:
        log_resp_time(logger,
                      'Notice.get_notices',
                      timer)
    return None
コード例 #19
0
ファイル: page.py プロジェクト: mattventura/myuw
def index(request,
          year=None,
          quarter=None,
          summer_term=None):

    netid = UserService().get_user()
    if not netid:
        log_invalid_netid_response(logger, timer)
        return invalid_session()

    if _is_mobile(request):
        # On mobile devices, all students get the current myuw.  Non-students
        # are sent to the legacy site.
        try:
            if not is_student():
                logger.info("%s not a student, redirect to legacy!" % netid)
                return redirect_to_legacy_site()
        except Exception as ex:
            log_exception(logger,
                          '%s is_student' % netid,
                          traceback.format_exc())
            logger.info("%s, redirected to legacy!" % netid)
            return redirect_to_legacy_site()

    else:
        # On the desktop, we're migrating users over.  There are 2 classes of
        # users - mandatory and opt-in switchers.  The mandatory users, who
        # are users who haven't been at the UW long enough to be accustomed to
        # the existing myuw.
        # The other class of users can opt to use the legacy myuw instead.
        # Check to see if they have a set preference, and if not, keep them on
        # the new version
        if not is_mandatory_switch_user():
            if is_optin_switch_user():
                if has_legacy_preference():
                    return redirect_to_legacy_site()
            else:
                return redirect_to_legacy_site()

    timer = Timer()
    context = {
        "year": year,
        "quarter": quarter,
        "summer_term": summer_term,
        "home_url": "/",
        "err": None,
        "user": {
            "netid": None,
            "affiliations": get_all_affiliations(request)
        },
        "card_display_dates": get_card_visibilty_date_values(request),
    }

    context["user"]["session_key"] = request.session.session_key
    log_session(netid, request.session.session_key, request)
    try:
        my_uwemail_forwarding = get_email_forwarding_for_current_user()
        if my_uwemail_forwarding.is_active():
            c_user = context["user"]
            c_user["email_is_uwgmail"] = my_uwemail_forwarding.is_uwgmail()
            c_user["email_is_uwlive"] = my_uwemail_forwarding.is_uwlive()
    except Exception:
        log_exception(logger,
                      'get_email_forwarding_for_current_user',
                      traceback.format_exc())
        pass

    context["user"]["netid"] = netid
    if year is None or quarter is None:
        cur_term = get_current_quarter(request)
        if cur_term is None:
            context["err"] = "No current quarter data!"
        else:
            context["year"] = cur_term.year
            context["quarter"] = cur_term.quarter
    else:
        pass
    log_success_response_with_affiliation(logger, timer, request)
    return render_to_response("index.html",
                              context,
                              context_instance=RequestContext(request))
コード例 #20
0
ファイル: page.py プロジェクト: vegitron/myuw
def index(request,
          year=None,
          quarter=None,
          summer_term=None):

    timer = Timer()
    netid = UserService().get_user()
    if not netid:
        log_invalid_netid_response(logger, timer)
        return invalid_session()

    if _is_mobile(request):
        # On mobile devices, all students get the current myuw.  Non-students
        # are sent to the legacy site.
        try:
            if not is_student():
                logger.info("%s not a student, redirect to legacy!" % netid)
                return redirect_to_legacy_site()
        except Exception:
            log_exception(logger,
                          '%s is_student' % netid,
                          traceback.format_exc())
            logger.info("%s, redirected to legacy!" % netid)
            return redirect_to_legacy_site()

    else:
        if is_oldmyuw_user():
            return redirect_to_legacy_site()

    context = {
        "year": year,
        "quarter": quarter,
        "summer_term": summer_term,
        "home_url": "/",
        "err": None,
        "user": {
            "netid": None,
            "affiliations": get_all_affiliations(request)
        },
        "card_display_dates": get_card_visibilty_date_values(request),
    }

    context["user"]["session_key"] = request.session.session_key
    log_session(netid, request.session.session_key, request)
    try:
        my_uwemail_forwarding = get_email_forwarding_for_current_user()
        if my_uwemail_forwarding.is_active():
            c_user = context["user"]
            c_user["email_is_uwgmail"] = my_uwemail_forwarding.is_uwgmail()
            c_user["email_is_uwlive"] = my_uwemail_forwarding.is_uwlive()
    except Exception:
        log_exception(logger,
                      'get_email_forwarding_for_current_user',
                      traceback.format_exc())
        pass

    context["user"]["netid"] = netid
    if year is None or quarter is None:
        cur_term = get_current_quarter(request)
        if cur_term is None:
            context["err"] = "No current quarter data!"
        else:
            context["year"] = cur_term.year
            context["quarter"] = cur_term.quarter
    else:
        pass
    log_success_response_with_affiliation(logger, timer, request)
    return render_to_response("index.html",
                              context,
                              context_instance=RequestContext(request))