Skip to content

Commit

Permalink
Merge pull request #21 from uw-it-aca/develop
Browse files Browse the repository at this point in the history
Develop
  • Loading branch information
jlaney committed Apr 21, 2017
2 parents 8640c99 + 3d92f49 commit 605b9f9
Show file tree
Hide file tree
Showing 6 changed files with 1,394 additions and 5 deletions.
39 changes: 37 additions & 2 deletions uw_sws/enrollment.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,15 +4,17 @@
import logging
import re
from uw_pws import PWS
from uw_sws.models import (Term, StudentGrades, StudentCourseGrade, Enrollment,
Major, Minor, SectionReference,
from uw_sws.models import (StudentGrades, StudentCourseGrade, Enrollment,
Major, Minor, SectionReference, Term,
IndependentStartSectionReference)
from uw_sws import get_resource, parse_sws_date
from uw_sws.section import get_section_by_url
from uw_sws.term import get_term_by_year_and_quarter


logger = logging.getLogger(__name__)
enrollment_res_url_prefix = "/student/v5/enrollment"
enrollment_search_url_prefix = "/student/v5/enrollment.json?reg_id="


def get_grades_by_regid_and_term(regid, term):
Expand Down Expand Up @@ -46,6 +48,39 @@ def _json_to_grades(data, regid, term):
return grades


def enrollment_search_by_regid(regid,
verbose='true',
transcriptable_course='all',
changed_since_date=''):
"""
See SWS Enrollment search resource spec at:
https://wiki.cac.washington.edu/x/_qjeAw
:return: a dictionary of {Term: Enrollment}
"""
url = "%s%s&verbose=%s&transcriptable_course=%s&changed_since_date=%s" %\
(enrollment_search_url_prefix,
regid,
verbose,
transcriptable_course,
changed_since_date)
return _json_to_term_enrollment_dict(get_resource(url))


def _json_to_term_enrollment_dict(json_data):
term_enrollment_dict = {}
if "Enrollments" not in json_data:
return term_enrollment_dict
for term_enro in json_data["Enrollments"]:
if "Term" in term_enro and\
"Year" in term_enro["Term"] and\
"Quarter" in term_enro["Term"]:
term = Term(year=term_enro["Term"]["Year"],
quarter=term_enro["Term"]["Quarter"].lower())
enrollment = _json_to_enrollment(term_enro, term)
term_enrollment_dict[term] = enrollment
return term_enrollment_dict


def get_enrollment_by_regid_and_term(regid, term):
url = "%s/%s,%s,%s.json" % (enrollment_res_url_prefix,
term.year,
Expand Down
10 changes: 9 additions & 1 deletion uw_sws/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -230,7 +230,15 @@ class Term(models.Model):
registration_period3_end = models.DateTimeField(blank=True)

def __eq__(self, other):
return self.year == other.year and self.quarter == other.quarter
return (other is not None and
type(self) == type(other) and
self.__key() == other.__key())

def __hash__(self):
return hash(self.__key())

def __key(self):
return (str(self.year), self.quarter)

def is_grading_period_open(self):
if self.quarter == self.SUMMER:
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"Current":{
"Href":"\/student\/v5\/enrollment.json?reg_id=00000000000000000000000000000001&verbose=true&changed_since_date=&transcriptable_course=all",
"RegID":"00000000000000000000000000000001",
"Verbose":true},
"Enrollments":[],"Next":null,"PageSize":"10","PageStart":"1","Previous":null,"TotalCount":0
}
Loading

0 comments on commit 605b9f9

Please sign in to comment.