def update_rule(self, statement): """ Modifies an entry in the database. Creates an entry if one does not exist. """ Statement = self.get_model('statementrules') if statement is not None: session = self.Session() record = None if hasattr(statement, 'id') and statement.id is not None: record = session.query(Statement).get(statement.id) if statement.text is not None: record.text = statement.text if statement.in_response_to is not None: record.in_response_to = statement.in_response_to if statement.search_text is not None: record.search_text = statement.search_text else: record.search_text = self.tagger.get_text_index_string( statement.text) if statement.search_in_response_to is not None: record.search_in_response_to = statement.search_in_response_to elif statement.in_response_to is not None: record.search_in_response_to = self.tagger.get_text_index_string( statement.in_response_to) else: if statement.text is not None: record = session.query(Statement).filter( Statement.text == statement.text, ).first() # if statement.search_in_response_to is not None: # record.search_in_response_to=statement.search_in_response_to if not record: record = Statement( text=statement.text, ) if statement.in_response_to is not None: record.in_response_to = statement.in_response_to if statement.search_text is not None: record.search_text = statement.search_text else: record.search_text = self.tagger.get_text_index_string( statement.text) if statement.search_in_response_to is not None: record.search_in_response_to = statement.search_in_response_to elif statement.in_response_to is not None: record.search_in_response_to = self.tagger.get_text_index_string( statement.in_response_to) session.add(record) self._session_finish(session)
def update_text(self, statement): """ Modifies an entry in the database. Creates an entry if one does not exist. """ Statement = self.get_model('statement') Tag = self.get_model('tag') if statement is not None: session = self.Session() record = None if hasattr(statement, 'id') and statement.id is not None: record = session.query(Statement).get(statement.id) else: record = session.query(Statement).filter( Statement.text == statement.text, Statement.conversation == statement.conversation, ).first() # Create a new statement entry if one does not already exist if not record: record = Statement( text=statement.text, conversation=statement.conversation, persona=statement.persona ) # Update the response value record.text = statement.text record.in_response_to = statement.in_response_to record.created_at = statement.created_at record.search_text = self.tagger.get_text_index_string( statement.text) if statement.in_response_to: record.search_in_response_to = self.tagger.get_text_index_string( statement.in_response_to) for tag_name in statement.get_tags(): tag = session.query(Tag).filter_by(name=tag_name).first() if not tag: # Create the record tag = Tag(name=tag_name) record.tags.append(tag) session.add(record) self._session_finish(session)