Skip to content

Commit

Permalink
Fix search (#16)
Browse files Browse the repository at this point in the history
Add budget code. Fix search.
  • Loading branch information
fanglinfang committed Dec 21, 2022
1 parent 7c831d6 commit 54c9155
Show file tree
Hide file tree
Showing 6 changed files with 389 additions and 330 deletions.
57 changes: 20 additions & 37 deletions uw_hrp/models.py
Original file line number Diff line number Diff line change
@@ -1,17 +1,11 @@
# Copyright 2022 UW-IT, University of Washington
# SPDX-License-Identifier: Apache-2.0

from datetime import datetime, timezone
from dateutil.parser import parse
import json
from restclients_core import models


def get_now():
# return time-zone-aware datetime
return datetime.now(timezone.utc)


def date_to_str(d_obj):
if d_obj is not None:
return str(d_obj)
Expand Down Expand Up @@ -110,59 +104,39 @@ def __str__(self):
return json.dumps(self.to_json())


class SupervisoryOrganization(models.Model):
budget_code = models.CharField(max_length=16, default="")
org_code = models.CharField(max_length=16, default="")
org_name = models.CharField(max_length=128, default="")

def to_json(self):
return {
'budget_code': self.budget_code,
'org_code': self.org_code,
'org_name': self.org_name
}

def __init__(self, *args, **kwargs):
data = kwargs.get("data")
if data is None:
return super(SupervisoryOrganization, self).__init__(*args,
**kwargs)
self.org_code, self.org_name = get_org_code_name(data.get("Name"))

def __str__(self):
return json.dumps(self.to_json())


class EmploymentDetails(models.Model):
budget_code = models.CharField(max_length=16, default="")
start_date = models.DateTimeField(null=True, default=None)
end_date = models.DateTimeField(null=True, default=None)
job_class = models.CharField(max_length=128, null=True, default=None)
job_title = models.CharField(max_length=128, null=True, default=None)
is_primary = models.BooleanField(default=False)
location = models.CharField(max_length=96, null=True, default=None)
org_code = models.CharField(max_length=16, default="")
org_name = models.CharField(max_length=128, default="")
org_unit_code = models.CharField(max_length=10, default="")
pos_type = models.CharField(max_length=64, null=True, default=None)
supervisor_eid = models.CharField(max_length=16,
null=True, default=None)

def to_json(self):
data = {
'budget_code': self.budget_code,
'end_date': date_to_str(self.end_date),
'is_primary': self.is_primary,
'job_title': self.title,
'job_class': self.job_class,
'location': self.location,
'org_code': self.org_code,
'org_name': self.org_name,
'org_unit_code': self.org_unit_code,
'pos_type': self.pos_type,
'start_date': date_to_str(self.start_date),
'supervisor_eid': self.supervisor_eid,
'job_profile': None,
'supervisory_org': None
}
if self.job_profile is not None:
data['job_profile'] = self.job_profile.to_json()
if self.supervisory_org is not None:
data['supervisory_org'] = self.supervisory_org.to_json()
return data

def __str__(self):
Expand Down Expand Up @@ -191,14 +165,26 @@ def __init__(self, *args, **kwargs):
if id_data.get("Type") == "Employee_ID":
self.supervisor_eid = id_data.get("Value")

if (data.get("OrganizationDetails") is not None and
len(data["OrganizationDetails"])):
for org_det in data["OrganizationDetails"]:
if (org_det.get("Organization") and
org_det["Organization"].get("Name") and
org_det.get("Type") and
org_det["Type"].get("Name") == "Cost Center"):
self.budget_code = org_det["Organization"]["Name"]

if data.get("PositionWorkerType") is not None:
self.pos_type = data["PositionWorkerType"].get("Name")

self.is_primary = data.get("PrimaryPosition")
self.end_date = parse_date(data.get("PositionVacateDate"))
self.start_date = parse_date(data.get("StartDate"))
self.supervisory_org = SupervisoryOrganization(
data=data.get("SupervisoryOrganization"))

if (data.get("SupervisoryOrganization") and
data["SupervisoryOrganization"].get("Name")):
self.org_code, self.org_name = get_org_code_name(
data["SupervisoryOrganization"]["Name"])


class WorkerDetails(models.Model):
Expand Down Expand Up @@ -303,9 +289,6 @@ def __init__(self, *args, **kwargs):
self.student_id = id.get("Value")

for wk_detail in data.get("WorkerDetails"):
if wk_detail.get("ActiveAppointment") is False:
continue

worker_obj = WorkerDetails(data=wk_detail)
if (worker_obj and worker_obj.employee_status and
worker_obj.employee_status.is_active):
Expand Down
3 changes: 2 additions & 1 deletion uw_hrp/person.py
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,8 @@ def person_search(**kwargs):
if "Persons" in data:
for person_record in data.get("Persons"):
persons.append(Person(data=person_record))
if "Next" in data and len(data["Next"].get("Href")) > 0:
if (data.get("Next") and data["Next"].get("Href") and
len(data["Next"]["Href"]) > 0):
url = data["Next"]["Href"]
else:
break
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@
"FutureWorker": null
},
"Next": {
"Href": "/hrp/v3/person.json?name=&page_start=2&page_size=1&worker_wid=&last_name=&first_name=&legal_last_name=&legal_first_name=&preferred_last_name=&preferred_first_name=&position=&retired=&terminated=&current_faculty=&active_appointment=&supervisory_organization=&cost_center=&custom_organization_type=&custom_organization=&location=&future_worker=",
"Href": null,
"ResourceName": null,
"PageStart": "2",
"PageSize": "1",
Expand Down
Loading

0 comments on commit 54c9155

Please sign in to comment.