From 6df26dc98d6b21875d56e2b19b082cdaa80dd699 Mon Sep 17 00:00:00 2001 From: Madhur Garg Date: Wed, 26 Jun 2019 01:30:47 +0530 Subject: [PATCH] Removed /mam as a plugin, added it as a command in basetabs. --- plugins/mam.py | 64 ----------------------------------------- poezio/tabs/basetabs.py | 38 +++++++++++++++++++++++- 2 files changed, 37 insertions(+), 65 deletions(-) delete mode 100644 plugins/mam.py diff --git a/plugins/mam.py b/plugins/mam.py deleted file mode 100644 index 1335bfd0..00000000 --- a/plugins/mam.py +++ /dev/null @@ -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) diff --git a/poezio/tabs/basetabs.py b/poezio/tabs/basetabs.py index e57f0064..aa7f0a39 100644 --- a/poezio/tabs/basetabs.py +++ b/poezio/tabs/basetabs.py @@ -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>||", 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)