Skip to content

Commit

Permalink
Merge pull request #1 from uw-it-aca/activity_log
Browse files Browse the repository at this point in the history
Activity log
  • Loading branch information
devights committed Dec 6, 2019
2 parents 1a7acd6 + 4c3ff6a commit 0d81940
Show file tree
Hide file tree
Showing 7 changed files with 199 additions and 3 deletions.
59 changes: 58 additions & 1 deletion uw_adsel/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
import logging
from restclients_core.exceptions import DataFailureException
from uw_adsel.dao import ADSEL_DAO
from uw_adsel.models import Major, Cohort, Quarter
from uw_adsel.models import Major, Cohort, Quarter, Activity, Application
import dateutil.parser
from datetime import datetime

Expand Down Expand Up @@ -49,6 +49,63 @@ def _quarters_from_json(self, response):
quarters.append(qtr)
return quarters

def get_applications_by_qtr_syskey(self, quarter_id, syskey):
url = "{}/applications/{}/{}".format(self.API, quarter_id, syskey)
response = self._get_resource(url)
application = self._get_applications_from_json(response)
return application

def _get_applications_from_json(self, response):
applications = []
for app in response:
application = Application()
application.adsel_id = app['admissionsSelectionId']
application.application_number = app['applicationNbr']
application.system_key = app['systemKey']
application.campus = app['campus']
application.quarter_id = app['academicQtrKeyId']
application.assigned_cohort = app['assignedCohort']
application.assigned_major = app['assignedMajor']
applications.append(application)
return applications

def get_activities(self, **kwargs):
url = "{}/activities".format(self.API)
response = self._get_resource(url)
activities = self._activities_from_json(response)
# TODO Confirm how pagination will work
if response['totalCount'] > 1:
activity_page = 2
while activity_page <= response['totalCount']:
page_activities = self.get_activities_by_page(
activity_page)
activities.extend(page_activities)
activity_page += 1
return activities

def get_activities_by_page(self, page, **kwargs):
url = "{}/activities?Page={}".format(self.API, page)
response = self._get_resource(url)
activities = self._activities_from_json(response)
return activities

def _activities_from_json(self, response):
activities = []
for activity in response['decisions']:
acty = Activity()
acty.assignment_date = \
dateutil.parser.parse(activity['assignmentMadeOn'])
acty.comment = activity['comment']
acty.user = activity['assignmentMadeBy']
acty.assignment_type = activity['assignmentType']
acty.cohort_number = activity['cohortNbr']
acty.major_abbr = activity['majorAbbr']
acty.major_program_code = activity['majorProgramCode']
acty.total_submitted = activity['totalSubmitted']
acty.total_assigned = activity['totalAssigned']
activities.append(acty)
return activities

def get_cohorts_by_qtr(self, quarter_id, **kwargs):
url = "{}/cohorts/{}".format(self.API, quarter_id)
response = self._get_resource(url)
Expand Down
22 changes: 22 additions & 0 deletions uw_adsel/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,3 +31,25 @@ class Quarter(models.Model):
appl_yr = models.CharField(max_length=4)
appl_qtr = models.CharField(max_length=1)
is_current = models.BooleanField()


class Activity(models.Model):
assignment_date = models.DateTimeField()
comment = models.TextField()
user = models.CharField(max_length=12)
assignment_type = models.TextField()
cohort_number = models.IntegerField()
major_abbr = models.CharField(max_length=32)
major_program_code = models.CharField(max_length=32)
total_submitted = models.IntegerField()
total_assigned = models.IntegerField()


class Application(models.Model):
adsel_id = models.IntegerField()
application_number = models.IntegerField()
system_key = models.IntegerField()
campus = models.IntegerField()
quarter_id = models.IntegerField()
assigned_cohort = models.IntegerField()
assigned_major = models.CharField(max_length=32)
51 changes: 51 additions & 0 deletions uw_adsel/resources/adsel/file/api/v1/activities
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
{
"decisions": [
{
"assignmentMadeOn": "2019-12-04T23:44:49.494Z",
"comment": "Making some assignments",
"assignmentMadeBy": "javerage",
"assignmentType": "Type 1",
"cohortNbr": 42,
"majorAbbr": "",
"majorProgramCode": "",
"totalSubmitted": 20,
"totalAssigned": 19
},
{
"assignmentMadeOn": "2019-12-04T19:44:49.494Z",
"comment": "More assignment work",
"assignmentMadeBy": "javerage",
"assignmentType": "Type 3",
"cohortNbr": 13,
"majorAbbr": "",
"majorProgramCode": "",
"totalSubmitted": 35,
"totalAssigned": 35
},
{
"assignmentMadeOn": "2019-12-09T21:44:49.494Z",
"comment": "Setting up a major",
"assignmentMadeBy": "jinter",
"assignmentType": "Type 2",
"cohortNbr": 0,
"majorAbbr": "CSE",
"majorProgramCode": "CSE",
"totalSubmitted": 2,
"totalAssigned": 2
},
{
"assignmentMadeOn": "2019-02-24T03:44:49.494Z",
"comment": "Making some assignments",
"assignmentMadeBy": "billtac",
"assignmentType": "who knows",
"cohortNbr": 0,
"majorAbbr": "CHEM",
"majorProgramCode": "CHEM",
"totalSubmitted": 20044,
"totalAssigned": 1547
}
],
"nextPage": "2",
"previousPage": "1",
"totalCount": 2
}
18 changes: 18 additions & 0 deletions uw_adsel/resources/adsel/file/api/v1/activities?Page=2
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
{
"decisions": [
{
"assignmentMadeOn": "2019-11-14T13:44:49.494Z",
"comment": "reworking this cohort",
"assignmentMadeBy": "javerage",
"assignmentType": "Type 1",
"cohortNbr": 42,
"majorAbbr": "",
"majorProgramCode": "",
"totalSubmitted": 81,
"totalAssigned": 59
}
],
"nextPage": "2",
"previousPage": "2",
"totalCount": 2
}
38 changes: 38 additions & 0 deletions uw_adsel/resources/adsel/file/api/v1/applications/0/123
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
[
{
"admissionsSelectionId": 1,
"applicationNbr": 1,
"systemKey": 456340,
"campus": 0,
"academicQtrKeyId": 0,
"assignedCohort": 0,
"assignedMajor": "string"
},
{
"admissionsSelectionId": 34,
"applicationNbr": 2,
"systemKey": 456340,
"campus": 0,
"academicQtrKeyId": 0,
"assignedCohort": 0,
"assignedMajor": "string"
},
{
"admissionsSelectionId": 453,
"applicationNbr": 3,
"systemKey": 456340,
"campus": 1,
"academicQtrKeyId": 0,
"assignedCohort": 0,
"assignedMajor": "string"
},
{
"admissionsSelectionId": 345,
"applicationNbr": 4,
"systemKey": 456340,
"campus": 1,
"academicQtrKeyId": 0,
"assignedCohort": 0,
"assignedMajor": "string"
}
]
12 changes: 11 additions & 1 deletion uw_adsel/tests/test_adsel.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
from unittest import TestCase, mock
from restclients_core.exceptions import DataFailureException
from uw_adsel.utilities import fdao_zoom_override
from uw_adsel.utilities import fdao_adsel_override
from uw_adsel import AdSel
from datetime import datetime

Expand Down Expand Up @@ -46,3 +46,13 @@ def test_get_cohorts(self):
def test_get_now(self, mock_obj):
self.assertEqual(self.adsel.get_now(),
datetime(2019, 11, 12, 0, 10, 21))

def test_get_activities(self):
activities = self.adsel.get_activities()
self.assertEqual(len(activities), 5)
self.assertEqual(activities[0].user, "javerage")

def test_get_application(self):
applications = self.adsel.get_applications_by_qtr_syskey(0, 123)
self.assertEqual(len(applications), 4)
self.assertEqual(applications[0].adsel_id, 1)
2 changes: 1 addition & 1 deletion uw_adsel/utilities.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
from commonconf import override_settings


fdao_zoom_override = override_settings(RESTCLIENTS_ZOOM_DAO_CLASS='Mock')
fdao_adsel_override = override_settings(RESTCLIENTS_ADSEL_DAO_CLASS='Mock')

0 comments on commit 0d81940

Please sign in to comment.