Example #1
0
 def test_ok(self):
     s = TimeSanitizer(timezone='Asia/Saigon')
     #
     ok, o = s.detect_time('Now')
     self.assertEqual(o['human_time'], 'Now')
     self.assertIsInstance(o['time'], datetime)
     #
     ok, o = s.detect_time('now')
     self.assertEqual(o['human_time'], 'Now')
     self.assertIsInstance(o['time'], datetime)
     #
     ok, o = s.detect_time('Today, 11am')
     print(json_dumps(o))
     #
     ok, o = s.detect_time('Today, 5:32pm')
     print(json_dumps(o))
     #
     ok, o = s.detect_time('TOMORROW, 09:3pm')
     print(json_dumps(o))
     #
     ok, o = s.detect_time('1/12/2020, 09:3pm')
     print(json_dumps(o))
     #
     ok, o = s.detect_time('10/12/2020, 7pm')
     print(json_dumps(o))
     pass
Example #2
0
 def save_dialog(self):
     #
     if self.__persist is None:
         if LOG.isEnabledFor(LL.DEBUG):
             LOG.log(LL.DEBUG, 'The persist object is None, skipped')
         return self
     #
     try:
         self.__persist.state = self.state
         #
         story_json = json_dumps(self.__context)
         self.__persist.story = story_json
         #
         self.__persist.save()
         #
         if LOG.isEnabledFor(LL.DEBUG):
             LOG.log(LL.DEBUG,
                     'Logging current dialog successfully: %s' % story_json)
         return self
     except Exception as err:
         if LOG.isEnabledFor(LL.DEBUG):
             LOG.log(LL.DEBUG,
                     'Logging current dialog failed, error: %s' % str(err))
         raise err
     pass
Example #3
0
 def __init__(self, *args, **kwargs):
     #
     if LOG.isEnabledFor(LL.DEBUG):
         LOG.log(LL.DEBUG, 'The states: %s' % json_dumps(self.states))
     #
     self.__rules, self.__replies = self.enhanceRules(self.transitions)
     #
     super(Descriptor, self).__init__(*args, **kwargs)
Example #4
0
 def __is_invalid_state(self, persist):
     if not persist.state in self.__descriptor.states:
         if LOG.isEnabledFor(LL.DEBUG):
             LOG.log(
                 LL.DEBUG,
                 'The conversation has invalid state [%s] / valid states: %s'
                 % (persist.state, json_dumps(self.__descriptor.states)))
         return True
     return False
Example #5
0
 def goodbye(self):
     if self._isInitialState() or self._isFinalState():
         return self
     try:
         self.__persist.state = self._quit_state
         #
         story_json = json_dumps(self.__context)
         self.__persist.story = story_json
         #
         self.__persist.save()
         #
         if LOG.isEnabledFor(LL.DEBUG):
             LOG.log(LL.DEBUG,
                     'Logging farewell event successfully: %s' % story_json)
         return self
     except Exception as err:
         if LOG.isEnabledFor(LL.DEBUG):
             LOG.log(LL.DEBUG,
                     'Logging farewell event failed, error: %s' % str(err))
         raise err
Example #6
0
 def persist(self, ref):
     #
     assert isinstance(
         ref, ConversationModel), 'object must be a ConversationModel'
     self.__persist = ref
     #
     story = self.__persist.story
     if story is not None and len(story) > 0:
         story_dict, err = json_loads(story)
         if story_dict is not None:
             self.__context = story_dict
             if LOG.isEnabledFor(LL.DEBUG):
                 LOG.log(
                     LL.DEBUG, 'loading the context successfully: %s' %
                     json_dumps(self.__context))
         else:
             if LOG.isEnabledFor(LL.DEBUG):
                 LOG.log(LL.DEBUG,
                         'error on loading the context: %s' % str(err))
     #
     return ref
Example #7
0
 def __repr__(self):
     return json_dumps(
         self, ['id', 'created_at', 'state', 'phone_number', 'facebook_id'])