diff --git a/uw_hrp/dao.py b/uw_hrp/dao.py index f879b48..7b74a76 100644 --- a/uw_hrp/dao.py +++ b/uw_hrp/dao.py @@ -10,3 +10,6 @@ def service_name(self): def service_mock_paths(self): return [abspath(os.path.join(dirname(__file__), "resources"))] + + def is_using_file_dao(self): + return self.get_implementation().is_mock() diff --git a/uw_hrp/models.py b/uw_hrp/models.py index fadd50f..207ad9f 100644 --- a/uw_hrp/models.py +++ b/uw_hrp/models.py @@ -1,7 +1,13 @@ -from datetime import datetime, timezone +from datetime import datetime, timedelta, timezone from dateutil.parser import parse import json from restclients_core import models +from uw_hrp.dao import HRP_DAO + + +def get_now(): + # return time-zone-aware datetime + return datetime.now(timezone.utc) def date_to_str(d_obj): @@ -122,7 +128,7 @@ class WorkerPosition(models.Model): title = models.CharField(max_length=128, null=True, default=None) def is_active_position(self): - now = datetime.now(timezone.utc) + now = get_now() + timedelta(days=1) return self.end_date is None or self.end_date > now def to_json(self): @@ -173,7 +179,11 @@ def __init__(self, *args, **kwargs): self.start_date = parse_date(data["PositionStartDate"]) if data.get("PositionEndDate") is not None: - self.end_date = parse_date(data["PositionEndDate"]) + if (HRP_DAO().is_using_file_dao() and + data["PositionEndDate"] == "future"): + self.end_date = get_now() + timedelta(days=30) + else: + self.end_date = parse_date(data["PositionEndDate"]) if data.get("PositionSupervisor") is not None: self.supervisor_eid = data["PositionSupervisor"]["EmployeeID"] diff --git a/uw_hrp/tests/test_dao.py b/uw_hrp/tests/test_dao.py index 9602f3b..e3e220e 100644 --- a/uw_hrp/tests/test_dao.py +++ b/uw_hrp/tests/test_dao.py @@ -8,3 +8,4 @@ def test_dao(self): dao = HRP_DAO() self.assertEqual(dao.service_name(), "hrpws") self.assertTrue(len(dao.service_mock_paths()) > 0) + self.assertTrue(dao.is_using_file_dao()) diff --git a/uw_hrp/tests/test_models.py b/uw_hrp/tests/test_models.py index 8e59a10..93e7d55 100644 --- a/uw_hrp/tests/test_models.py +++ b/uw_hrp/tests/test_models.py @@ -1,5 +1,4 @@ from unittest import TestCase -from datetime import datetime, timedelta, timezone from uw_hrp.models import ( EmploymentStatus, JobProfile, SupervisoryOrganization, Worker, WorkerPosition, parse_date) @@ -129,6 +128,12 @@ def test_worker_position(self): self.assertFalse(work_position.is_active_position()) self.assertIsNotNone(str(work_position)) + work_position = WorkerPosition( + data={"PositionStartDate": "1994-10-01T00:00:00.000Z", + "PositionEndDate": "future", + "PositionFTEPercent": "100.00000"}) + self.assertTrue(work_position.is_active_position()) + def test_worker(self): worker = Worker(netid='none', regid="10000000",