Skip to content

Commit

Permalink
Merge 09eb4c0 into 18fba43
Browse files Browse the repository at this point in the history
  • Loading branch information
mikeseibel committed Jun 12, 2017
2 parents 18fba43 + 09eb4c0 commit 9bc6b9f
Show file tree
Hide file tree
Showing 4 changed files with 855 additions and 21 deletions.
64 changes: 45 additions & 19 deletions uw_iasystem/evaluation.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,9 @@ def search_evaluations(campus, **kwargs):
course_number
section_id
student_id (student number)
instructor_id (employee identification number)
"""
url = url_with_query(IAS_PREFIX, kwargs)

data = get_resource_by_campus(url, campus)
evaluations = _json_to_evaluation(data)

Expand Down Expand Up @@ -52,20 +52,27 @@ def _json_to_evaluation(data):
type = _get_item_type(item_meta)
if type == "evaluation":
delivery_data = item.get('data')
if get_is_online(delivery_data):
evaluation = Evaluation()
evaluation.eval_status = \
get_value_by_name(delivery_data, 'status')
evaluation.eval_open_date = get_open_date(delivery_data)
evaluation.eval_close_date = get_close_date(delivery_data)
evaluation.eval_url = get_eval_url(item.get('links'))
section, instructors, completion =\
_get_child_items(_get_child_ids(item_meta),
collection_items)
evaluation.section_sln = get_section_sln(section)
evaluation.instructor_ids = instructors
evaluation.is_completed = get_is_complete(completion)
evaluations.append(evaluation)

evaluation = Evaluation()
evaluation.eval_status = \
get_value_by_name(delivery_data, 'status')
evaluation.eval_open_date = get_open_date(delivery_data)
evaluation.eval_close_date = get_close_date(delivery_data)
evaluation.report_available_date = get_report_available_date(
delivery_data)
evaluation.eval_url = get_eval_url(item.get('links'))
evaluation.report_url = get_report_url(item.get('links'))
section, instructors, completion =\
_get_child_items(_get_child_ids(item_meta),
collection_items)
evaluation.section_sln = get_section_sln(section)
evaluation.instructor_ids = instructors
evaluation.is_completed = get_is_complete(completion)
evaluation.response_rate = get_response_rate(delivery_data)
evaluation.delivery_method = get_value_by_name(
delivery_data, 'deliveryMethod')
evaluations.append(evaluation)

return evaluations


Expand Down Expand Up @@ -116,6 +123,12 @@ def get_eval_url(data):
return item.get('href')


def get_report_url(data):
for item in data:
if item.get('rel') == "report":
return item.get('href')


def get_value_by_name(list, name):
for item in list:
if item.get('name') == name:
Expand All @@ -138,14 +151,27 @@ def get_close_date(data):
return _datetime_from_string(open_date)


def get_report_available_date(data):
available_date = get_value_by_name(data, 'reportAvailableDate')
return _datetime_from_string(available_date)


def get_response_rate(data):
response_rate = get_value_by_name(data, 'responseRate')
return float(str(response_rate) if response_rate else '0')


def get_is_online(data):
if get_value_by_name(data, 'deliveryMethod') == "Online":
return True
return False


def _datetime_from_string(date_string):
date_format = "%Y-%m-%dT%H:%M:%S"
date_string = date_string.replace("Z", "")
date = datetime.strptime(date_string, date_format)
return pytz.utc.localize(date)
if date_string:
date_format = "%Y-%m-%dT%H:%M:%S"
date_string = date_string.replace("Z", "")
date = datetime.strptime(date_string, date_format)
return pytz.utc.localize(date)

return ""
34 changes: 32 additions & 2 deletions uw_iasystem/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,15 +8,45 @@ class Evaluation(models.Model):
is_completed = models.NullBooleanField()
eval_status = models.CharField(max_length=7)
eval_url = models.URLField()
report_url = models.URLField()
report_available_date = models.DateTimeField()
response_rate = models.FloatField()
delivery_method = models.CharField(max_length=32)

def __init__(self, *args, **kwargs):
super(Evaluation, self).__init__(*args, **kwargs)
self.instructor_ids = []

def __str__(self):
return "{%s: %d, %s: %s, %s: %s, %s: %s, %s: %s}" % (
return "{%s: %d, %s: %s, %s: %s, %s: %s, %s: %s, %s: %s, %s: %s, %s: %0.6f, %s: %s}" % (
"sln", self.section_sln,
"eval_open_date", self.eval_open_date,
"eval_close_date", self.eval_close_date,
"eval_url", self.eval_url,
"is_completed", self.is_completed)
"is_completed", self.is_completed,
"report_url", self.eval_url,
"report_available_date", self.report_available_date,
"response_rate", self.response_rate,
"delivery_method", self.delivery_method)

def is_online(self):
return (self.delivery_method == "Online")

def is_open(self):
return (self.eval_status != "Closed")

def json_data(self):
return {
"section_sln": self.section_sln,
"eval_open_date": str(self.eval_open_date),
"eval_close_date": str(self.eval_close_date),
"eval_status": self.eval_status,
"eval_url": self.eval_url,
"report_url": self.report_url,
"report_available_date": str(self.report_available_date),
"response_rate": self.response_rate,
"delivery_method": self.delivery_method,
"is_completed": self.is_completed,
"is_open": self.is_open(),
"is_online": self.is_online()
}
Loading

0 comments on commit 9bc6b9f

Please sign in to comment.