示例#1
0
 def _get_start_stop_datetime(self, form_config):
     """
     Returns a start datetime for the Visit and the Encounter, and a
     stop_datetime for the Visit
     """
     if form_config.openmrs_start_datetime:
         cc_start_datetime_str = form_config.openmrs_start_datetime._get_commcare_value(self.info)
         if cc_start_datetime_str is None:
             raise ConfigurationError(
                 'A form config for form XMLNS "{}" uses "openmrs_start_datetime" to get the start of '
                 'the visit but no value was found in the form.'.format(form_config.xmlns)
             )
         try:
             cc_start_datetime = string_to_utc_datetime(cc_start_datetime_str)
         except ValueError:
             raise ConfigurationError(
                 'A form config for form XMLNS "{}" uses "openmrs_start_datetime" to get the start of '
                 'the visit but an invalid value was found in the form.'.format(form_config.xmlns)
             )
         cc_stop_datetime = cc_start_datetime + timedelta(days=1) - timedelta(seconds=1)
         # We need to use openmrs_start_datetime.serialize()
         # for both values because they could be either
         # OpenMRS datetimes or OpenMRS dates, and their data
         # types must match.
         start_datetime = form_config.openmrs_start_datetime.serialize(cc_start_datetime)
         stop_datetime = form_config.openmrs_start_datetime.serialize(cc_stop_datetime)
     else:
         cc_start_datetime = string_to_utc_datetime(self.form_json['form']['meta']['timeEnd'])
         cc_stop_datetime = cc_start_datetime + timedelta(days=1) - timedelta(seconds=1)
         start_datetime = to_omrs_datetime(cc_start_datetime)
         stop_datetime = to_omrs_datetime(cc_stop_datetime)
     return start_datetime, stop_datetime
示例#2
0
 def _get_start_stop_datetime(self, form_config):
     """
     Returns a start datetime for the Visit and the Encounter, and a
     stop_datetime for the Visit
     """
     if form_config.openmrs_start_datetime:
         cc_start_datetime_str = form_config.openmrs_start_datetime._get_commcare_value(self.info)
         if cc_start_datetime_str is None:
             raise ConfigurationError(
                 'A form config for form XMLNS "{}" uses "openmrs_start_datetime" to get the start of '
                 'the visit but no value was found in the form.'.format(form_config.xmlns)
             )
         try:
             cc_start_datetime = string_to_utc_datetime(cc_start_datetime_str)
         except ValueError:
             raise ConfigurationError(
                 'A form config for form XMLNS "{}" uses "openmrs_start_datetime" to get the start of '
                 'the visit but an invalid value was found in the form.'.format(form_config.xmlns)
             )
         cc_stop_datetime = cc_start_datetime + timedelta(days=1) - timedelta(seconds=1)
         # We need to use openmrs_start_datetime.serialize()
         # for both values because they could be either
         # OpenMRS datetimes or OpenMRS dates, and their data
         # types must match.
         start_datetime = form_config.openmrs_start_datetime.serialize(cc_start_datetime)
         stop_datetime = form_config.openmrs_start_datetime.serialize(cc_stop_datetime)
     else:
         cc_start_datetime = string_to_utc_datetime(self.form_json['form']['meta']['timeEnd'])
         cc_stop_datetime = cc_start_datetime + timedelta(days=1) - timedelta(seconds=1)
         start_datetime = to_omrs_datetime(cc_start_datetime)
         stop_datetime = to_omrs_datetime(cc_stop_datetime)
     return start_datetime, stop_datetime
示例#3
0
    def test_to_timestamp_datetime(self):

        class CAT(datetime.tzinfo):
            def utcoffset(self, dt):
                return datetime.timedelta(hours=2)
            def tzname(self, dt):
                return "CAT"
            def dst(self, dt):
                return datetime.timedelta(0)

        dt = datetime.datetime(2017, 6, 27, 9, 36, 47, tzinfo=CAT())
        openmrs_datetime = to_omrs_datetime(dt)
        self.assertEqual(openmrs_datetime, '2017-06-27T09:36:47.000+0200')
示例#4
0
    def test_to_timestamp_datetime(self):
        class CAT(datetime.tzinfo):
            def utcoffset(self, dt):
                return datetime.timedelta(hours=2)

            def tzname(self, dt):
                return "CAT"

            def dst(self, dt):
                return datetime.timedelta(0)

        dt = datetime.datetime(2017, 6, 27, 9, 36, 47, tzinfo=CAT())
        openmrs_datetime = to_omrs_datetime(dt)
        self.assertEqual(openmrs_datetime, '2017-06-27T09:36:47.000+0200')
示例#5
0
 def test_to_timestamp_int(self):
     day_int = 1
     openmrs_timestamp = to_omrs_datetime(day_int)
     self.assertIsNone(openmrs_timestamp)
示例#6
0
 def test_to_timestamp_day_num(self):
     day_str = '1'
     with self.assertRaisesMessage(
             ValueError, '"1" is not recognised as a date or a datetime'):
         to_omrs_datetime(day_str)
示例#7
0
 def test_to_timestamp_date(self):
     date = datetime.date(2017, 6, 27)
     openmrs_datetime = to_omrs_datetime(date)
     self.assertEqual(openmrs_datetime, '2017-06-27T00:00:00.000+0000')
示例#8
0
 def test_to_timestamp_datetime_str(self):
     datetime_str = '2017-06-27T09:36:47.396000Z'
     openmrs_datetime = to_omrs_datetime(datetime_str)
     self.assertEqual(openmrs_datetime, '2017-06-27T09:36:47.396+0000')
示例#9
0
 def test_to_timestamp_int(self):
     day_int = 1
     openmrs_timestamp = to_omrs_datetime(day_int)
     self.assertIsNone(openmrs_timestamp)
示例#10
0
 def test_to_timestamp_day_num(self):
     day_str = '1'
     with self.assertRaisesMessage(ValueError, '"1" is not recognised as a date or a datetime'):
         to_omrs_datetime(day_str)
示例#11
0
 def test_to_timestamp_date(self):
     date = datetime.date(2017, 6, 27)
     openmrs_datetime = to_omrs_datetime(date)
     self.assertEqual(openmrs_datetime, '2017-06-27T00:00:00.000+0000')
示例#12
0
 def test_to_timestamp_datetime_str(self):
     datetime_str = '2017-06-27T09:36:47.396000Z'
     openmrs_datetime = to_omrs_datetime(datetime_str)
     self.assertEqual(openmrs_datetime, '2017-06-27T09:36:47.396+0000')