Removed /mam as a plugin, added it as a command in basetabs.
This commit is contained in:
parent
ba93143e8a
commit
6df26dc98d
2 changed files with 37 additions and 65 deletions
|
@ -1,64 +0,0 @@
|
|||
#! /usr/bin/env python3
|
||||
# -*- coding: utf-8 -*-
|
||||
# vim:fenc=utf-8
|
||||
#
|
||||
# Copyright © 2019 Madhur Garg
|
||||
|
||||
"""
|
||||
Query and control an archive of messages stored on a server using
|
||||
XEP-0313: Message Archive Management(MAM).
|
||||
"""
|
||||
|
||||
import re
|
||||
import slixmpp
|
||||
|
||||
from datetime import datetime
|
||||
from datetime import timedelta
|
||||
from poezio.plugin import BasePlugin
|
||||
from poezio.decorators import command_args_parser
|
||||
from poezio import tabs
|
||||
from poezio.mam import MAM
|
||||
from poezio.text_buffer import Message, TextBuffer
|
||||
|
||||
|
||||
class Plugin(BasePlugin):
|
||||
"""MAM Plugin"""
|
||||
|
||||
def init(self):
|
||||
for tab in tabs.ConversationTab, tabs.PrivateTab, tabs.MucTab:
|
||||
self.api.add_tab_command(
|
||||
tab,
|
||||
'mam',
|
||||
self.command_mam,
|
||||
usage='[start_timestamp] [end_timestamp]',
|
||||
help='Query and control an archive of messages using MAM')
|
||||
|
||||
@command_args_parser.quoted(0, 2)
|
||||
def command_mam(self, args):
|
||||
"""Define mam command"""
|
||||
|
||||
tab = self.api.current_tab()
|
||||
remote_jid = tab.jid
|
||||
end = datetime.now()
|
||||
end = datetime.strftime(end, '%Y-%m-%dT%H:%M:%SZ')
|
||||
start = datetime.strptime(end, '%Y-%m-%dT%H:%M:%SZ')
|
||||
# Default start date is 10 days past the current day.
|
||||
start = start + timedelta(days=-10)
|
||||
start = datetime.strftime(start, '%Y-%m-%dT%H:%M:%SZ')
|
||||
# Format for start and end timestamp is [dd:mm:yyyy]
|
||||
if len(args) == 1:
|
||||
try:
|
||||
start = datetime.strptime(args[0], '%d:%m:%Y')
|
||||
start = datetime.strftime(start, '%Y-%m-%dT%H:%M:%SZ')
|
||||
except ValueError:
|
||||
pass
|
||||
elif len(args) == 2:
|
||||
try:
|
||||
start = datetime.strptime(args[0], '%d:%m:%Y')
|
||||
start = datetime.strftime(start, '%Y-%m-%dT%H:%M:%SZ')
|
||||
end = datetime.strptime(args[1], '%d:%m:%Y')
|
||||
end = datetime.strftime(end, '%Y-%m-%dT%H:%M:%SZ')
|
||||
except ValueError:
|
||||
pass
|
||||
|
||||
MAM(remote_jid, start, end, tab)
|
|
@ -16,7 +16,7 @@ revolving around chats.
|
|||
import logging
|
||||
import string
|
||||
import time
|
||||
from datetime import datetime
|
||||
from datetime import datetime, timedelta
|
||||
from xml.etree import cElementTree as ET
|
||||
from typing import Any, Callable, Dict, List, Optional, Union
|
||||
|
||||
|
@ -29,6 +29,7 @@ from poezio import xhtml
|
|||
from poezio import poopt
|
||||
from math import ceil, log10
|
||||
from poezio.windows.funcs import truncate_nick, parse_attrs
|
||||
from poezio.mam import MAM
|
||||
from poezio.common import safeJID
|
||||
from poezio.config import config
|
||||
from poezio.decorators import refresh_wrapper
|
||||
|
@ -498,6 +499,11 @@ class ChatTab(Tab):
|
|||
self.command_scrollback,
|
||||
usage="end home clear status goto <+|-linecount>|<linenum>|<timestamp>",
|
||||
shortdesc='Scrollback to the given line number, message, or clear the buffer.')
|
||||
self.register_command(
|
||||
'mam',
|
||||
self.command_mam,
|
||||
usage="[start_timestamp] [end_timestamp]",
|
||||
shortdesc='Query and control an archive of messages using MAM.')
|
||||
self.commands['sb'] = self.commands['scrollback']
|
||||
self.register_command(
|
||||
'xhtml',
|
||||
|
@ -917,6 +923,36 @@ class ChatTab(Tab):
|
|||
# new_date is the timestamp for which the user has queried.
|
||||
self.goto_build_lines(new_date)
|
||||
|
||||
@command_args_parser.quoted(0, 2)
|
||||
def command_mam(self, args):
|
||||
"""Define mam command"""
|
||||
|
||||
tab = self.core.tabs.current_tab
|
||||
remote_jid = tab.jid
|
||||
end = datetime.now()
|
||||
end = datetime.strftime(end, '%Y-%m-%dT%H:%M:%SZ')
|
||||
start = datetime.strptime(end, '%Y-%m-%dT%H:%M:%SZ')
|
||||
# Default start date is 10 days past the current day.
|
||||
start = start + timedelta(days=-10)
|
||||
start = datetime.strftime(start, '%Y-%m-%dT%H:%M:%SZ')
|
||||
# Format for start and end timestamp is [dd:mm:yyyy]
|
||||
if len(args) == 1:
|
||||
try:
|
||||
start = datetime.strptime(args[0], '%d:%m:%Y')
|
||||
start = datetime.strftime(start, '%Y-%m-%dT%H:%M:%SZ')
|
||||
except ValueError:
|
||||
pass
|
||||
elif len(args) == 2:
|
||||
try:
|
||||
start = datetime.strptime(args[0], '%d:%m:%Y')
|
||||
start = datetime.strftime(start, '%Y-%m-%dT%H:%M:%SZ')
|
||||
end = datetime.strptime(args[1], '%d:%m:%Y')
|
||||
end = datetime.strftime(end, '%Y-%m-%dT%H:%M:%SZ')
|
||||
except ValueError:
|
||||
pass
|
||||
|
||||
MAM(remote_jid, start, end, tab)
|
||||
|
||||
def on_line_up(self):
|
||||
return self.text_win.scroll_up(1)
|
||||
|
||||
|
|
Loading…
Reference in a new issue