mirror of https://github.com/DJ2LS/FreeDATA.git
adjusted api for retransmitting and upating
parent
4f32d98429
commit
317ca302ee
|
@ -211,11 +211,11 @@ export async function sendFreedataMessage(destination, body, attachments) {
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function retransmitFreedataMessage(id) {
|
export async function retransmitFreedataMessage(id) {
|
||||||
return await apiPost(`/freedata/messages/${id}`);
|
return await apiPatch(`/freedata/messages/${id}/retransmit`);
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function setFreedataMessageAsUnread(id) {
|
export async function setFreedataMessageAsUnread(id) {
|
||||||
return await apiPatch(`/freedata/messages/${id}`);
|
return await apiPatch(`/freedata/messages/${id}`, {is_read: True});
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function deleteFreedataMessage(id) {
|
export async function deleteFreedataMessage(id) {
|
||||||
|
|
|
@ -58,8 +58,7 @@ class DatabaseManagerMessages(DatabaseManager):
|
||||||
except IntegrityError as e:
|
except IntegrityError as e:
|
||||||
session.rollback() # Roll back the session to a clean state
|
session.rollback() # Roll back the session to a clean state
|
||||||
self.log(f"Message with ID {message_data['id']} already exists in the database.", isWarning=True)
|
self.log(f"Message with ID {message_data['id']} already exists in the database.", isWarning=True)
|
||||||
return None # or you might return the existing message's ID or details
|
return None
|
||||||
|
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
session.rollback()
|
session.rollback()
|
||||||
|
@ -166,7 +165,6 @@ class DatabaseManagerMessages(DatabaseManager):
|
||||||
if 'priority' in update_data:
|
if 'priority' in update_data:
|
||||||
message.priority = update_data['priority']
|
message.priority = update_data['priority']
|
||||||
|
|
||||||
|
|
||||||
session.commit()
|
session.commit()
|
||||||
self.log(f"Updated: {message_id}")
|
self.log(f"Updated: {message_id}")
|
||||||
self.event_manager.freedata_message_db_change(message_id=message_id)
|
self.event_manager.freedata_message_db_change(message_id=message_id)
|
||||||
|
@ -229,21 +227,6 @@ class DatabaseManagerMessages(DatabaseManager):
|
||||||
if own_session:
|
if own_session:
|
||||||
session.remove()
|
session.remove()
|
||||||
|
|
||||||
def mark_message_as_read(self, message_id):
|
|
||||||
session = self.get_thread_scoped_session()
|
|
||||||
try:
|
|
||||||
message = session.query(P2PMessage).filter_by(id=message_id).first()
|
|
||||||
if message:
|
|
||||||
message.is_read = True
|
|
||||||
session.commit()
|
|
||||||
self.log(f"Marked message {message_id} as read")
|
|
||||||
else:
|
|
||||||
self.log(f"Message with ID {message_id} not found")
|
|
||||||
except Exception as e:
|
|
||||||
session.rollback()
|
|
||||||
self.log(f"An error occurred while marking message {message_id} as read: {e}")
|
|
||||||
finally:
|
|
||||||
session.remove()
|
|
||||||
|
|
||||||
def set_message_to_queued_for_callsign(self, callsign):
|
def set_message_to_queued_for_callsign(self, callsign):
|
||||||
session = self.get_thread_scoped_session()
|
session = self.get_thread_scoped_session()
|
||||||
|
|
|
@ -294,25 +294,30 @@ def get_post_freedata_message():
|
||||||
else:
|
else:
|
||||||
api_abort('Error executing command...', 500)
|
api_abort('Error executing command...', 500)
|
||||||
|
|
||||||
@app.route('/freedata/messages/<string:message_id>', methods=['GET', 'POST', 'PATCH', 'DELETE'])
|
@app.route('/freedata/messages/<string:message_id>', methods=['GET', 'PATCH', 'DELETE'])
|
||||||
def handle_freedata_message(message_id):
|
def handle_freedata_message(message_id):
|
||||||
if request.method == 'GET':
|
if request.method == 'GET':
|
||||||
message = DatabaseManagerMessages(app.event_manager).get_message_by_id_json(message_id)
|
message = DatabaseManagerMessages(app.event_manager).get_message_by_id_json(message_id)
|
||||||
return message
|
return message
|
||||||
elif request.method == 'POST':
|
|
||||||
result = DatabaseManagerMessages(app.event_manager).update_message(message_id, update_data={'status': 'queued'})
|
|
||||||
DatabaseManagerMessages(app.event_manager).increment_message_attempts(message_id)
|
|
||||||
return api_response(result)
|
|
||||||
elif request.method == 'PATCH':
|
elif request.method == 'PATCH':
|
||||||
# Fixme We need to adjust this
|
result = DatabaseManagerMessages(app.event_manager).update_message(message_id, update_data=request.json)
|
||||||
result = DatabaseManagerMessages(app.event_manager).mark_message_as_read(message_id)
|
|
||||||
return api_response(result)
|
return api_response(result)
|
||||||
|
|
||||||
elif request.method == 'DELETE':
|
elif request.method == 'DELETE':
|
||||||
result = DatabaseManagerMessages(app.event_manager).delete_message(message_id)
|
result = DatabaseManagerMessages(app.event_manager).delete_message(message_id)
|
||||||
return api_response(result)
|
return api_response(result)
|
||||||
else:
|
else:
|
||||||
api_abort('Error executing command...', 500)
|
api_abort('Error executing command...', 500)
|
||||||
|
|
||||||
|
@app.route('/freedata/messages/<string:message_id>/retransmit', methods=['PATCH'])
|
||||||
|
def retransmit_freedata_message(message_id):
|
||||||
|
if request.method == 'PATCH':
|
||||||
|
result = DatabaseManagerMessages(app.event_manager).update_message(message_id, update_data={'status': 'queued'})
|
||||||
|
DatabaseManagerMessages(app.event_manager).increment_message_attempts(message_id)
|
||||||
|
return api_response(result)
|
||||||
|
else:
|
||||||
|
api_abort('Error executing command...', 500)
|
||||||
|
|
||||||
@app.route('/freedata/messages/<string:message_id>/attachments', methods=['GET'])
|
@app.route('/freedata/messages/<string:message_id>/attachments', methods=['GET'])
|
||||||
def get_message_attachments(message_id):
|
def get_message_attachments(message_id):
|
||||||
attachments = DatabaseManagerAttachments(app.event_manager).get_attachments_by_message_id_json(message_id)
|
attachments = DatabaseManagerAttachments(app.event_manager).get_attachments_by_message_id_json(message_id)
|
||||||
|
|
|
@ -118,22 +118,9 @@ class TestDataFrameFactory(unittest.TestCase):
|
||||||
received_message_dict = MessageP2P.to_dict(received_message)
|
received_message_dict = MessageP2P.to_dict(received_message)
|
||||||
message_id = self.database_manager.add_message(received_message_dict,statistics={},)
|
message_id = self.database_manager.add_message(received_message_dict,statistics={},)
|
||||||
self.database_manager.increment_message_attempts(message_id)
|
self.database_manager.increment_message_attempts(message_id)
|
||||||
|
|
||||||
|
|
||||||
result = self.database_manager.get_message_by_id(message_id)
|
result = self.database_manager.get_message_by_id(message_id)
|
||||||
self.assertEqual(result["attempt"], 1)
|
self.assertEqual(result["attempt"], 1)
|
||||||
|
|
||||||
def testMarkAsRead(self):
|
|
||||||
apiParams = {'destination': 'DJ2LS-3', 'body': 'Hello World!', 'attachments': []}
|
|
||||||
message = MessageP2P.from_api_params(self.mycall, apiParams)
|
|
||||||
payload = message.to_payload()
|
|
||||||
received_message = MessageP2P.from_payload(payload)
|
|
||||||
received_message_dict = MessageP2P.to_dict(received_message)
|
|
||||||
message_id = self.database_manager.add_message(received_message_dict, statistics={},is_read=False)
|
|
||||||
self.database_manager.mark_message_as_read(message_id)
|
|
||||||
|
|
||||||
result = self.database_manager.get_message_by_id(message_id)
|
|
||||||
self.assertEqual(result["is_read"], True)
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
unittest.main()
|
unittest.main()
|
||||||
|
|
Loading…
Reference in New Issue