mirror of
https://github.com/TheCommsChannel/TC2-BBS-mesh.git
synced 2024-11-12 15:44:13 -08:00
Added Reply option and some fixed
Added reply option and some fixes for the Urgent board permissions
This commit is contained in:
parent
35c341e6e6
commit
15d836db27
|
@ -8,7 +8,7 @@ from db_operations import (
|
||||||
add_bulletin, add_mail, delete_mail,
|
add_bulletin, add_mail, delete_mail,
|
||||||
get_bulletin_content, get_bulletins,
|
get_bulletin_content, get_bulletins,
|
||||||
get_mail, get_mail_content,
|
get_mail, get_mail_content,
|
||||||
add_channel, get_channels
|
add_channel, get_channels, get_sender_id_by_mail_id
|
||||||
)
|
)
|
||||||
from utils import (
|
from utils import (
|
||||||
get_node_id_from_num, get_node_info,
|
get_node_id_from_num, get_node_info,
|
||||||
|
@ -150,8 +150,10 @@ def handle_bb_steps(sender_id, message, step, state, interface, bbs_nodes):
|
||||||
if board_name.lower() == 'urgent':
|
if board_name.lower() == 'urgent':
|
||||||
node_id = get_node_id_from_num(sender_id, interface)
|
node_id = get_node_id_from_num(sender_id, interface)
|
||||||
allowed_nodes = interface.allowed_nodes
|
allowed_nodes = interface.allowed_nodes
|
||||||
|
print(f"Checking permissions for node_id: {node_id} with allowed_nodes: {allowed_nodes}") # Debug statement
|
||||||
if allowed_nodes and node_id not in allowed_nodes:
|
if allowed_nodes and node_id not in allowed_nodes:
|
||||||
send_message("You don't have permission to post to this board.", sender_id, interface)
|
send_message("You don't have permission to post to this board.", sender_id, interface)
|
||||||
|
handle_bb_steps(sender_id, 'e', 1, state, interface, bbs_nodes)
|
||||||
return
|
return
|
||||||
send_message("What is the subject of your bulletin? Keep it short.", sender_id, interface)
|
send_message("What is the subject of your bulletin? Keep it short.", sender_id, interface)
|
||||||
update_user_state(sender_id, {'command': 'BULLETIN_POST', 'step': 4, 'board': board_name})
|
update_user_state(sender_id, {'command': 'BULLETIN_POST', 'step': 4, 'board': board_name})
|
||||||
|
@ -188,6 +190,7 @@ def handle_bb_steps(sender_id, message, step, state, interface, bbs_nodes):
|
||||||
update_user_state(sender_id, state)
|
update_user_state(sender_id, state)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def handle_mail_steps(sender_id, message, step, state, interface, bbs_nodes):
|
def handle_mail_steps(sender_id, message, step, state, interface, bbs_nodes):
|
||||||
if step == 1:
|
if step == 1:
|
||||||
choice = message.lower()
|
choice = message.lower()
|
||||||
|
@ -214,8 +217,8 @@ def handle_mail_steps(sender_id, message, step, state, interface, bbs_nodes):
|
||||||
sender_node_id = get_node_id_from_num(sender_id, interface)
|
sender_node_id = get_node_id_from_num(sender_id, interface)
|
||||||
sender, date, subject, content, unique_id = get_mail_content(mail_id, sender_node_id)
|
sender, date, subject, content, unique_id = get_mail_content(mail_id, sender_node_id)
|
||||||
send_message(f"Date: {date}\nFrom: {sender}\nSubject: {subject}\n{content}", sender_id, interface)
|
send_message(f"Date: {date}\nFrom: {sender}\nSubject: {subject}\n{content}", sender_id, interface)
|
||||||
send_message("Would you like to delete this message now that you've viewed it? Y/N", sender_id, interface)
|
send_message("What would you like to do with this message?\n[K]eep [D]elete [R]eply", sender_id, interface)
|
||||||
update_user_state(sender_id, {'command': 'MAIL', 'step': 4, 'mail_id': mail_id, 'unique_id': unique_id})
|
update_user_state(sender_id, {'command': 'MAIL', 'step': 4, 'mail_id': mail_id, 'unique_id': unique_id, 'sender': sender, 'subject': subject, 'content': content})
|
||||||
except TypeError:
|
except TypeError:
|
||||||
logging.info(f"Node {sender_id} tried to access non-existent message")
|
logging.info(f"Node {sender_id} tried to access non-existent message")
|
||||||
send_message("Mail not found", sender_id, interface)
|
send_message("Mail not found", sender_id, interface)
|
||||||
|
@ -239,14 +242,19 @@ def handle_mail_steps(sender_id, message, step, state, interface, bbs_nodes):
|
||||||
update_user_state(sender_id, {'command': 'MAIL', 'step': 6, 'nodes': nodes})
|
update_user_state(sender_id, {'command': 'MAIL', 'step': 6, 'nodes': nodes})
|
||||||
|
|
||||||
elif step == 4:
|
elif step == 4:
|
||||||
if message.lower() == "y":
|
if message.lower() == "d":
|
||||||
unique_id = state['unique_id']
|
unique_id = state['unique_id']
|
||||||
sender_node_id = get_node_id_from_num(sender_id, interface)
|
sender_node_id = get_node_id_from_num(sender_id, interface)
|
||||||
delete_mail(unique_id, sender_node_id, bbs_nodes, interface)
|
delete_mail(unique_id, sender_node_id, bbs_nodes, interface)
|
||||||
send_message("The message has been deleted 🗑️", sender_id, interface)
|
send_message("The message has been deleted 🗑️", sender_id, interface)
|
||||||
|
update_user_state(sender_id, None)
|
||||||
|
elif message.lower() == "r":
|
||||||
|
sender = state['sender']
|
||||||
|
send_message(f"Send your reply to {sender} now, followed by a message with END", sender_id, interface)
|
||||||
|
update_user_state(sender_id, {'command': 'MAIL', 'step': 7, 'reply_to_mail_id': state['mail_id'], 'subject': f"Re: {state['subject']}", 'content': ''})
|
||||||
else:
|
else:
|
||||||
send_message("The message has been kept in your inbox.✉️", sender_id, interface)
|
send_message("The message has been kept in your inbox.✉️", sender_id, interface)
|
||||||
update_user_state(sender_id, None)
|
update_user_state(sender_id, None)
|
||||||
|
|
||||||
elif step == 5:
|
elif step == 5:
|
||||||
subject = message
|
subject = message
|
||||||
|
@ -263,10 +271,14 @@ def handle_mail_steps(sender_id, message, step, state, interface, bbs_nodes):
|
||||||
|
|
||||||
elif step == 7:
|
elif step == 7:
|
||||||
if message.lower() == "end":
|
if message.lower() == "end":
|
||||||
recipient_id = state['recipient_id']
|
if 'reply_to_mail_id' in state:
|
||||||
|
recipient_id = get_sender_id_by_mail_id(state['reply_to_mail_id']) # Get the sender ID from the mail ID
|
||||||
|
else:
|
||||||
|
recipient_id = state.get('recipient_id')
|
||||||
subject = state['subject']
|
subject = state['subject']
|
||||||
content = state['content']
|
content = state['content']
|
||||||
recipient_name = get_node_name(recipient_id, interface)
|
recipient_name = get_node_name(recipient_id, interface)
|
||||||
|
|
||||||
sender_short_name = get_node_short_name(get_node_id_from_num(sender_id, interface), interface)
|
sender_short_name = get_node_short_name(get_node_id_from_num(sender_id, interface), interface)
|
||||||
unique_id = add_mail(get_node_id_from_num(sender_id, interface), sender_short_name, recipient_id, subject, content, bbs_nodes, interface)
|
unique_id = add_mail(get_node_id_from_num(sender_id, interface), sender_short_name, recipient_id, subject, content, bbs_nodes, interface)
|
||||||
send_message(f"Mail has been posted to the mailbox of {recipient_name}.\n(╯°□°)╯📨📬", sender_id, interface)
|
send_message(f"Mail has been posted to the mailbox of {recipient_name}.\n(╯°□°)╯📨📬", sender_id, interface)
|
||||||
|
@ -288,7 +300,6 @@ def handle_mail_steps(sender_id, message, step, state, interface, bbs_nodes):
|
||||||
update_user_state(sender_id, None)
|
update_user_state(sender_id, None)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def handle_wall_of_shame_command(sender_id, interface):
|
def handle_wall_of_shame_command(sender_id, interface):
|
||||||
response = "Devices with battery levels below 20%:\n"
|
response = "Devices with battery levels below 20%:\n"
|
||||||
for node_id, node in interface.nodes.items():
|
for node_id, node in interface.nodes.items():
|
||||||
|
|
|
@ -112,10 +112,14 @@ def initialize_config(config_file: str = None) -> dict[str, Any]:
|
||||||
if bbs_nodes == ['']:
|
if bbs_nodes == ['']:
|
||||||
bbs_nodes = []
|
bbs_nodes = []
|
||||||
|
|
||||||
|
print(f"Configured to sync with the following BBS nodes: {bbs_nodes}")
|
||||||
|
|
||||||
allowed_nodes = config.get('allow_list', 'allowed_nodes', fallback='').split(',')
|
allowed_nodes = config.get('allow_list', 'allowed_nodes', fallback='').split(',')
|
||||||
if allowed_nodes == ['']:
|
if allowed_nodes == ['']:
|
||||||
allowed_nodes = []
|
allowed_nodes = []
|
||||||
|
|
||||||
|
print(f"Nodes with Urgent board permissions: {allowed_nodes}")
|
||||||
|
|
||||||
return {
|
return {
|
||||||
'config': config,
|
'config': config,
|
||||||
'interface_type': interface_type,
|
'interface_type': interface_type,
|
||||||
|
|
|
@ -156,3 +156,11 @@ def delete_mail(unique_id, recipient_id, bbs_nodes, interface):
|
||||||
raise
|
raise
|
||||||
|
|
||||||
|
|
||||||
|
def get_sender_id_by_mail_id(mail_id):
|
||||||
|
conn = get_db_connection()
|
||||||
|
c = conn.cursor()
|
||||||
|
c.execute("SELECT sender FROM mail WHERE id = ?", (mail_id,))
|
||||||
|
result = c.fetchone()
|
||||||
|
if result:
|
||||||
|
return result[0]
|
||||||
|
return None
|
||||||
|
|
Loading…
Reference in a new issue