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) {
|
||||
return await apiPost(`/freedata/messages/${id}`);
|
||||
return await apiPatch(`/freedata/messages/${id}/retransmit`);
|
||||
}
|
||||
|
||||
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) {
|
||||
|
|
|
@ -58,8 +58,7 @@ class DatabaseManagerMessages(DatabaseManager):
|
|||
except IntegrityError as e:
|
||||
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)
|
||||
return None # or you might return the existing message's ID or details
|
||||
|
||||
return None
|
||||
|
||||
except Exception as e:
|
||||
session.rollback()
|
||||
|
@ -166,7 +165,6 @@ class DatabaseManagerMessages(DatabaseManager):
|
|||
if 'priority' in update_data:
|
||||
message.priority = update_data['priority']
|
||||
|
||||
|
||||
session.commit()
|
||||
self.log(f"Updated: {message_id}")
|
||||
self.event_manager.freedata_message_db_change(message_id=message_id)
|
||||
|
@ -229,21 +227,6 @@ class DatabaseManagerMessages(DatabaseManager):
|
|||
if own_session:
|
||||
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):
|
||||
session = self.get_thread_scoped_session()
|
||||
|
|
|
@ -294,25 +294,30 @@ def get_post_freedata_message():
|
|||
else:
|
||||
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):
|
||||
if request.method == 'GET':
|
||||
message = DatabaseManagerMessages(app.event_manager).get_message_by_id_json(message_id)
|
||||
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':
|
||||
# Fixme We need to adjust this
|
||||
result = DatabaseManagerMessages(app.event_manager).mark_message_as_read(message_id)
|
||||
result = DatabaseManagerMessages(app.event_manager).update_message(message_id, update_data=request.json)
|
||||
return api_response(result)
|
||||
|
||||
elif request.method == 'DELETE':
|
||||
result = DatabaseManagerMessages(app.event_manager).delete_message(message_id)
|
||||
return api_response(result)
|
||||
else:
|
||||
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'])
|
||||
def get_message_attachments(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)
|
||||
message_id = self.database_manager.add_message(received_message_dict,statistics={},)
|
||||
self.database_manager.increment_message_attempts(message_id)
|
||||
|
||||
|
||||
result = self.database_manager.get_message_by_id(message_id)
|
||||
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__':
|
||||
unittest.main()
|
||||
|
|
Loading…
Reference in New Issue