diff --git a/pyclarity_lims/descriptors.py b/pyclarity_lims/descriptors.py index 843b747b..a35a1d38 100644 --- a/pyclarity_lims/descriptors.py +++ b/pyclarity_lims/descriptors.py @@ -748,10 +748,18 @@ def _parse_element(self, element, lims, **kwargs): queue_date = None if qt is not None: h, s, t = qt.text.rpartition(':') + qt = h + t + microsec = '' + if '.' in qt: + microsec = '.%f' + date_format = '%Y-%m-%dT%H:%M:%S' + microsec try: - queue_date = datetime.datetime.strptime(h+t, '%Y-%m-%dT%H:%M:%S.%f%z') + queue_date = datetime.datetime.strptime(qt, date_format + '%z') except ValueError: - queue_date = datetime.datetime.strptime(h + t, '%Y-%m-%dT%H:%M:%S%z') + # support for python 2.7 ignore time zone + # use python 3 for timezone support + qt = qt.split('+')[0] + queue_date = datetime.datetime.strptime(qt, date_format) list.append(self, (input, queue_date, location)) diff --git a/tests/test_descriptors.py b/tests/test_descriptors.py index da331255..c4e7094e 100644 --- a/tests/test_descriptors.py +++ b/tests/test_descriptors.py @@ -756,28 +756,45 @@ def setUp(self): self.lims = Lims('http://testgenologics.com:4040', username='test', password='password') self.instance1 = Mock(root=et, lims=self.lims) + def get_queue_art(self, art_id, pos, microsec, time_delta): + if version_info[0] == 2: + return ( + Artifact(self.lims, id=art_id), + datetime.datetime(2011, 12, 25, 1, 10, 10, microsec), + (Container(self.lims, id='c1'), pos) + ) + else: + return ( + Artifact(self.lims, id=art_id), + datetime.datetime(2011, 12, 25, 1, 10, 10, microsec, tzinfo=datetime.timezone(time_delta)), + (Container(self.lims, id='c1'), pos) + ) + def test_parse(self): queued_artifacts = QueuedArtifactList(self.instance1) - qart = ( - Artifact(self.lims, id='a1'), - datetime.datetime(2011, 12, 25, 1, 10, 10, 50000, tzinfo=datetime.timezone.utc), - (Container(self.lims, id='c1'), 'A:1') - ) + # qart = ( + # Artifact(self.lims, id='a1'), + # datetime.datetime(2011, 12, 25, 1, 10, 10, 50000, tzinfo=datetime.timezone.utc), + # (Container(self.lims, id='c1'), 'A:1') + # ) + qart = self.get_queue_art('a1', 'A:1', 50000, datetime.timedelta(0, 0)) assert queued_artifacts[0] == qart - qart = ( - Artifact(self.lims, id='a2'), - datetime.datetime(2011, 12, 25, 1, 10, 10, 200000, tzinfo=datetime.timezone(datetime.timedelta(0, 3600))), - (Container(self.lims, id='c1'), 'A:2') - ) + # qart = ( + # Artifact(self.lims, id='a2'), + # datetime.datetime(2011, 12, 25, 1, 10, 10, 200000, tzinfo=datetime.timezone(datetime.timedelta(second=3600))), + # (Container(self.lims, id='c1'), 'A:2') + # ) + qart = self.get_queue_art('a2', 'A:2', 200000, datetime.timedelta(0, 3600)) assert queued_artifacts[1] == qart def test_set(self): queued_artifacts = QueuedArtifactList(self.instance1) - qart = ( - Artifact(self.lims, id='a3'), - datetime.datetime(2011, 12, 25, 1, 10, 11, 50000, tzinfo=datetime.timezone.utc), - (Container(self.lims, id='c1'), 'A:3') - ) + # qart = ( + # Artifact(self.lims, id='a3'), + # datetime.datetime(2011, 12, 25, 1, 10, 11, 50000, tzinfo=datetime.timezone.utc), + # (Container(self.lims, id='c1'), 'A:3') + # ) + qart = self.get_queue_art('a1', 'A:3', 50000, datetime.timedelta(0, 0)) with pytest.raises(NotImplementedError): queued_artifacts.append(qart)