def remove_topic(self, msg): received_data = json.loads(msg.payload) payload = Utils().validate_data(received_data, MANAGEMENT_PASSWORD, ['password', 'client']) if payload.result == 'OK': topic = Topic.select().where( Topic.name == str(received_data['topic'])) if topic.count() > 0: topic[0].delete_instance() else: payload.result = 'KO' payload.error = 'Topic not found' saved_topics = [] for topic in Topic.select(): saved_topics.append(topic.name) payload.topics = saved_topics return payload.get_json()
def list_topics(self, msg): received_data = json.loads(msg.payload) payload = Utils().validate_data(received_data, QUERY_PASSWORD, ['password', 'client'], topic=False) if payload.result == 'OK': saved_topics = [] for topic in Topic.select(): saved_topics.append(topic.name) payload.topics = saved_topics return payload.get_json()
def add_topic(self, msg): received_data = json.loads(msg.payload) payload = Utils().validate_data(received_data, MANAGEMENT_PASSWORD, ['password', 'client']) if payload.result == 'OK': new_topic, created = Topic.get_or_create( name=str(received_data['topic'])) saved_topics = [] for topic in Topic.select(): saved_topics.append(topic.name) payload.topics = saved_topics return payload.get_json()
def test_on_message_remove_topic(self): with test_database(test_db, (Log, Topic), create_tables=True): self.client.subscribed_topics = [] self.client.subscribe('/test/topic/test1') self.client.subscribe('/test/topic/test2') self.client.subscribe('/test/topic/test3') Topic.create(name='/test/topic/test1') Topic.create(name='/test/topic/test2') Topic.create(name='/test/topic/test3') self.payload['options'] = None self.payload['topic'] = '/test/topic/test3' self.payload['password'] = Settings.MANAGEMENT_PASSWORD self.msg = msg(topic=Settings.ROOT_TOPIC + 'topic/remove', payload=json.dumps(self.payload)) mqtt_controller = MqttController() result = mqtt_controller.on_message(self.client, self.msg) self.assertEqual(2, len(self.client.subscribed_topics)) self.assertEqual(2, Topic.select().count())
def is_topic_subscribed(self, topic): if Topic.select().where(Topic.name == topic).count(): return True else: return False
def get_storaged_topics(self): return Topic.select()