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..f2de25a 100644 --- a/uw_hrp/models.py +++ b/uw_hrp/models.py @@ -4,6 +4,11 @@ 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) @@ -122,8 +127,10 @@ class WorkerPosition(models.Model): title = models.CharField(max_length=128, null=True, default=None) def is_active_position(self): - now = datetime.now(timezone.utc) - return self.end_date is None or self.end_date > now + return self.end_date is None or self.end_date > get_now() + + def is_future_position(self): + return self.start_date is not None and self.start_date > get_now() def to_json(self): data = {'start_date': date_to_str(self.start_date), @@ -171,10 +178,8 @@ def __init__(self, *args, **kwargs): self.fte_percent = float(data.get("PositionFTEPercent")) if data.get("PositionStartDate") is not None: self.start_date = parse_date(data["PositionStartDate"]) - if data.get("PositionEndDate") is not None: self.end_date = parse_date(data["PositionEndDate"]) - if data.get("PositionSupervisor") is not None: self.supervisor_eid = data["PositionSupervisor"]["EmployeeID"] @@ -210,8 +215,8 @@ def __str__(self): def __init__(self, *args, **kwargs): data = kwargs.get("data") self.employee_status = None - self.primary_position = None - self.other_active_positions = [] + self.primary_position = None # only 1 primary position + self.other_active_positions = [] # include the future position if data is None: return super(Worker, self).__init__(*args, **kwargs) 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..ef7d284 100644 --- a/uw_hrp/tests/test_models.py +++ b/uw_hrp/tests/test_models.py @@ -129,6 +129,22 @@ 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": str(datetime.now(timezone.utc) + + timedelta(minutes=1)), + "PositionFTEPercent": "100.00000"}) + self.assertTrue(work_position.is_active_position()) + self.assertFalse(work_position.is_future_position()) + + work_position = WorkerPosition( + data={"PositionStartDate": str(datetime.now(timezone.utc) + + timedelta(minutes=1)), + "PositionEndDate": None, + "PositionFTEPercent": "100.00000"}) + self.assertTrue(work_position.is_active_position()) + self.assertTrue(work_position.is_future_position()) + def test_worker(self): worker = Worker(netid='none', regid="10000000",