mark messages as read in r and rm

This commit is contained in:
John Burwell 2023-04-30 20:20:07 -05:00
parent 98d8941152
commit 737e2fb8df
2 changed files with 16 additions and 2 deletions

View File

@ -60,6 +60,12 @@ class Plugin():
self.api.write_output(f"Reading {count} messages:")
for message in messages:
self.api.print_message(message)
with self.api.controller.session() as session:
user = session.get(User, self.api.user.id)
user.messages.append(message[0])
session.commit()
logging.info(f"User {self.api.user.id} "
f"read message {message[0].id }")
self.api.read_enter("Enter to continue...")
else:
self.api.write_output(f"No messages to read.")

View File

@ -40,9 +40,11 @@ class Plugin():
def list_mine(self, args) -> sqlalchemy.ChunkedIteratorResult:
with self.api.controller.session() as session:
try:
callsign = self.api.config.calling_station
statement = sqlalchemy.select(Message).where(
Message.recipient == self.api.config.calling_station
and self.api.user.id not in Message.read_by)
Message.recipient == callsign).where(
~Message.read_by.any(User.id == self.api.user.id)
)
result = session.execute(
statement,
execution_options={"prebuffer_rows": True})
@ -61,6 +63,12 @@ class Plugin():
self.api.write_output(f"Reading {count} messages:")
for message in messages:
self.api.print_message(message)
with self.api.controller.session() as session:
user = session.get(User, self.api.user.id)
user.messages.append(message[0])
session.commit()
logging.info(f"User {self.api.user.id} "
f"read message {message[0].id }")
self.api.read_enter("Enter to continue...")
else:
self.api.write_output(f"No messages to read.")