mirror of
https://github.com/DJ2LS/FreeDATA
synced 2024-05-14 08:04:33 +00:00
cleanup and fix for empty message body
This commit is contained in:
parent
09a0bf0c0d
commit
f526a9adb3
6 changed files with 3 additions and 27 deletions
|
@ -6,7 +6,6 @@ def validate_freedata_callsign(callsign):
|
||||||
return re.compile(regexp).match(callsign) is not None
|
return re.compile(regexp).match(callsign) is not None
|
||||||
|
|
||||||
def validate_message_attachment(attachment):
|
def validate_message_attachment(attachment):
|
||||||
print(attachment)
|
|
||||||
for field in ['name', 'type', 'data']:
|
for field in ['name', 'type', 'data']:
|
||||||
if field not in attachment:
|
if field not in attachment:
|
||||||
raise ValueError(f"Attachment missing '{field}'")
|
raise ValueError(f"Attachment missing '{field}'")
|
||||||
|
|
|
@ -13,12 +13,8 @@ class SendMessageCommand(TxCommand):
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def set_params_from_api(self, apiParams):
|
def set_params_from_api(self, apiParams):
|
||||||
print(apiParams)
|
|
||||||
origin = f"{self.config['STATION']['mycall']}-{self.config['STATION']['myssid']}"
|
origin = f"{self.config['STATION']['mycall']}-{self.config['STATION']['myssid']}"
|
||||||
self.message = MessageP2P.from_api_params(origin, apiParams)
|
self.message = MessageP2P.from_api_params(origin, apiParams)
|
||||||
print(self.message.id)
|
|
||||||
print(self.message.to_dict())
|
|
||||||
print("--------------------------------------- set params from api")
|
|
||||||
DatabaseManagerMessages(self.event_manager).add_message(self.message.to_dict(), direction='transmit', status='queued')
|
DatabaseManagerMessages(self.event_manager).add_message(self.message.to_dict(), direction='transmit', status='queued')
|
||||||
|
|
||||||
def transmit(self, modem):
|
def transmit(self, modem):
|
||||||
|
@ -35,10 +31,7 @@ class SendMessageCommand(TxCommand):
|
||||||
self.log(f"Queued message found: {first_queued_message['id']}")
|
self.log(f"Queued message found: {first_queued_message['id']}")
|
||||||
DatabaseManagerMessages(self.event_manager).update_message(first_queued_message["id"], update_data={'status': 'transmitting'})
|
DatabaseManagerMessages(self.event_manager).update_message(first_queued_message["id"], update_data={'status': 'transmitting'})
|
||||||
message_dict = DatabaseManagerMessages(self.event_manager).get_message_by_id(first_queued_message["id"])
|
message_dict = DatabaseManagerMessages(self.event_manager).get_message_by_id(first_queued_message["id"])
|
||||||
print(message_dict["id"])
|
|
||||||
message = MessageP2P.from_api_params(message_dict['origin'], message_dict)
|
message = MessageP2P.from_api_params(message_dict['origin'], message_dict)
|
||||||
print(message.id)
|
|
||||||
print("--------------------------------------- transmit")
|
|
||||||
|
|
||||||
# Convert JSON string to bytes (using UTF-8 encoding)
|
# Convert JSON string to bytes (using UTF-8 encoding)
|
||||||
payload = message.to_payload().encode('utf-8')
|
payload = message.to_payload().encode('utf-8')
|
||||||
|
|
|
@ -42,8 +42,6 @@ class MessageP2P:
|
||||||
raise ValueError(f"Invalid destination given ({params['destination']})")
|
raise ValueError(f"Invalid destination given ({params['destination']})")
|
||||||
|
|
||||||
body = params['body']
|
body = params['body']
|
||||||
if len(body) < 1:
|
|
||||||
raise ValueError(f"Body cannot be empty")
|
|
||||||
|
|
||||||
attachments = []
|
attachments = []
|
||||||
if 'attachments' in params:
|
if 'attachments' in params:
|
||||||
|
|
|
@ -11,17 +11,6 @@ class DatabaseManagerAttachments(DatabaseManager):
|
||||||
|
|
||||||
|
|
||||||
def add_attachment(self, session, message, attachment_data):
|
def add_attachment(self, session, message, attachment_data):
|
||||||
"""
|
|
||||||
Adds an attachment to a message, either by creating a new attachment or reusing an existing one.
|
|
||||||
|
|
||||||
Args:
|
|
||||||
- session: The current database session.
|
|
||||||
- message: The P2PMessage instance to which the attachment should be linked.
|
|
||||||
- attachment_data: A dictionary containing the attachment's data.
|
|
||||||
|
|
||||||
Returns:
|
|
||||||
- The Attachment instance.
|
|
||||||
"""
|
|
||||||
hash_sha512 = hashlib.sha512(attachment_data['data'].encode()).hexdigest()
|
hash_sha512 = hashlib.sha512(attachment_data['data'].encode()).hexdigest()
|
||||||
existing_attachment = session.query(Attachment).filter_by(hash_sha512=hash_sha512).first()
|
existing_attachment = session.query(Attachment).filter_by(hash_sha512=hash_sha512).first()
|
||||||
|
|
||||||
|
@ -70,7 +59,7 @@ class DatabaseManagerAttachments(DatabaseManager):
|
||||||
try:
|
try:
|
||||||
attachment = session.query(Attachment).filter_by(hash_sha512=hash_sha512).first()
|
attachment = session.query(Attachment).filter_by(hash_sha512=hash_sha512).first()
|
||||||
if attachment:
|
if attachment:
|
||||||
return attachment.to_dict() # Assuming you have a to_dict method
|
return attachment.to_dict()
|
||||||
else:
|
else:
|
||||||
self.log(f"No attachment found with SHA-512 hash: {hash_sha512}")
|
self.log(f"No attachment found with SHA-512 hash: {hash_sha512}")
|
||||||
return None
|
return None
|
||||||
|
|
|
@ -4,12 +4,9 @@ import sqlite3
|
||||||
from sqlalchemy import create_engine
|
from sqlalchemy import create_engine
|
||||||
from sqlalchemy.orm import scoped_session, sessionmaker
|
from sqlalchemy.orm import scoped_session, sessionmaker
|
||||||
from threading import local
|
from threading import local
|
||||||
from message_system_db_model import Base, Station, Status, Attachment, P2PMessage, MessageAttachment
|
from message_system_db_model import Base, Station, Status
|
||||||
from datetime import datetime
|
|
||||||
import json
|
|
||||||
import structlog
|
import structlog
|
||||||
import helpers
|
import helpers
|
||||||
import hashlib
|
|
||||||
|
|
||||||
class DatabaseManager:
|
class DatabaseManager:
|
||||||
def __init__(self, event_manger, uri='sqlite:///freedata-messages.db'):
|
def __init__(self, event_manger, uri='sqlite:///freedata-messages.db'):
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
# models.py
|
# models.py
|
||||||
|
|
||||||
from sqlalchemy import Index, Table, Boolean, Column, String, Integer, JSON, ForeignKey, DateTime
|
from sqlalchemy import Index, Boolean, Column, String, Integer, JSON, ForeignKey, DateTime
|
||||||
from sqlalchemy.orm import declarative_base, relationship
|
from sqlalchemy.orm import declarative_base, relationship
|
||||||
|
|
||||||
Base = declarative_base()
|
Base = declarative_base()
|
||||||
|
|
Loading…
Reference in a new issue