Skip to content

Commit

Permalink
Plugin cleanups and bugfixes (issue #383, issue #547)
Browse files Browse the repository at this point in the history
  • Loading branch information
BjarniRunar committed Apr 9, 2014
1 parent 683ff15 commit b057932
Show file tree
Hide file tree
Showing 22 changed files with 122 additions and 67 deletions.
12 changes: 10 additions & 2 deletions mailpile/plugins/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,14 @@ class PluginManager(object):

def __init__(self, plugin_name=None, builtin=False, deprecated=False,
config=None, session=None):
if builtin and isinstance(builtin, (str, unicode)):
builtin = os.path.basename(builtin)
for ignore in ('.py', '.pyo', '.pyc'):
if builtin.endswith(ignore):
builtin = builtin[:-len(ignore)]
if builtin not in self.LOADED:
self.LOADED.append(builtin)

self.loading_plugin = plugin_name
self.loading_builtin = plugin_name and builtin
self.builtin = builtin
Expand Down Expand Up @@ -162,7 +170,8 @@ def _load(self, plugin_name, process_manifest=False, config=None):
print 'What what what?? %s' % plugin_name
return self

self.LOADED.append(plugin_name)
if plugin_name not in self.LOADED:
self.LOADED.append(plugin_name)
return self

def load(self, *args, **kwargs):
Expand Down Expand Up @@ -438,7 +447,6 @@ def register_filter_hook_post(self, name, hook):
VCARD_CONTEXT_PROVIDERS = {}

def _reg_vcard_plugin(self, what, cfg_sect, plugin_classes, cls, dct):
self._compat_check()
for plugin_class in plugin_classes:
if not plugin_class.SHORT_NAME or not plugin_class.FORMAT_NAME:
raise PluginError("Please set SHORT_NAME "
Expand Down
11 changes: 7 additions & 4 deletions mailpile/plugins/autotag.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,18 +10,21 @@
from gettext import gettext as _

import mailpile.config
import mailpile.plugins
from mailpile.plugins import PluginManager
from mailpile.commands import Command
from mailpile.mailutils import Email
from mailpile.util import *


_plugins = PluginManager(builtin=__file__)


##[ Configuration ]###########################################################

TAGGERS = {}
TRAINERS = {}

mailpile.plugins.register_config_section(
_plugins.register_config_section(
'prefs', 'autotag', ["Auto-tagging", {
'match_tag': ['Tag we are adding to automatically', str, ''],
'unsure_tag': ['If unsure, add to this tag', str, ''],
Expand Down Expand Up @@ -314,7 +317,7 @@ def command(self):
return tag


mailpile.plugins.register_commands(Retrain, Classify, AutoTag)
_plugins.register_commands(Retrain, Classify, AutoTag)


##[ Cron jobs ]###############################################################
Expand Down Expand Up @@ -355,4 +358,4 @@ def filter_hook(session, msg_mid, msg, keywords, is_new=True):
# We add a filter pre-hook with a high (late) priority. Late priority to
# maximize the amount of data we are feeding to the classifier, but a
# pre-hook so normal filter rules will override the autotagging.
mailpile.plugins.register_filter_hook_pre('90-autotag', filter_hook)
_plugins.register_filter_hook_pre('90-autotag', filter_hook)
2 changes: 1 addition & 1 deletion mailpile/plugins/compose.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
from mailpile.plugins.search import Search, SearchResults, View


_plugins = PluginManager(builtin=True)
_plugins = PluginManager(builtin=__file__)


class EditableSearchResults(SearchResults):
Expand Down
2 changes: 1 addition & 1 deletion mailpile/plugins/contacts.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
from mailpile.util import *


_plugins = PluginManager(builtin=True)
_plugins = PluginManager(builtin=__file__)


##[ VCards ]########################################
Expand Down
16 changes: 10 additions & 6 deletions mailpile/plugins/crypto_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,16 @@
import time
from gettext import gettext as _

import mailpile.plugins
from mailpile.plugins import PluginManager
from mailpile.commands import Command

from mailpile.crypto.gpgi import GnuPG
from mailpile.crypto.nicknym import Nicknym


_plugins = PluginManager(builtin=__file__)


class GPGKeySearch(Command):
"""Search for a GPG Key."""
ORDER = ('', 0)
Expand Down Expand Up @@ -107,8 +111,8 @@ def command(self):
n.refresh_keys()
return True

mailpile.plugins.register_commands(GPGKeySearch)
mailpile.plugins.register_commands(GPGKeyReceive)
mailpile.plugins.register_commands(GPGKeyImport)
mailpile.plugins.register_commands(NicknymGetKey)
mailpile.plugins.register_commands(NicknymRefreshKeys)
_plugins.register_commands(GPGKeySearch)
_plugins.register_commands(GPGKeyReceive)
_plugins.register_commands(GPGKeyImport)
_plugins.register_commands(NicknymGetKey)
_plugins.register_commands(NicknymRefreshKeys)
13 changes: 8 additions & 5 deletions mailpile/plugins/cryptostate.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
from gettext import gettext as _

import mailpile.plugins
from mailpile.plugins import PluginManager


_plugins = PluginManager(builtin=__file__)


##[ Keywords ]################################################################
Expand Down Expand Up @@ -38,8 +41,8 @@ def meta_kw_extractor(index, msg_mid, msg, msg_size, msg_ts):

return list(kw)

mailpile.plugins.register_text_kw_extractor('crypto_tkwe', text_kw_extractor)
mailpile.plugins.register_meta_kw_extractor('crypto_mkwe', meta_kw_extractor)
_plugins.register_text_kw_extractor('crypto_tkwe', text_kw_extractor)
_plugins.register_meta_kw_extractor('crypto_mkwe', meta_kw_extractor)


##[ Search helpers ]##########################################################
Expand All @@ -51,5 +54,5 @@ def search(config, idx, term, hits):
#
return []

mailpile.plugins.register_search_term('crypto', search)
mailpile.plugins.register_search_term('pgp', search)
_plugins.register_search_term('crypto', search)
_plugins.register_search_term('pgp', search)
11 changes: 7 additions & 4 deletions mailpile/plugins/dates.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,10 @@
import datetime
from gettext import gettext as _

import mailpile.plugins
from mailpile.plugins import PluginManager


_plugins = PluginManager(builtin=__name__)


##[ Keywords ]################################################################
Expand All @@ -18,7 +21,7 @@ def meta_kw_extractor(index, msg_mid, msg, msg_size, msg_ts):
]
return keywords

mailpile.plugins.register_meta_kw_extractor('dates', meta_kw_extractor)
_plugins.register_meta_kw_extractor('dates', meta_kw_extractor)


##[ Search terms ]############################################################
Expand Down Expand Up @@ -99,5 +102,5 @@ def search(config, idx, term, hits):
raise ValueError('Invalid date range: %s' % term)


mailpile.plugins.register_search_term('dates', search)
mailpile.plugins.register_search_term('date', search)
_plugins.register_search_term('dates', search)
_plugins.register_search_term('date', search)
7 changes: 5 additions & 2 deletions mailpile/plugins/eventlog.py
Original file line number Diff line number Diff line change
@@ -1,11 +1,14 @@
import time
from gettext import gettext as _

import mailpile.plugins
from mailpile.plugins import PluginManager
from mailpile.commands import Command
from mailpile.util import *


_plugins = PluginManager(builtin=__file__)


class Events(Command):
"""Display events from the event log"""
SYNOPSIS = (None, 'eventlog', 'eventlog',
Expand Down Expand Up @@ -93,4 +96,4 @@ def fset(arg, val):



mailpile.plugins.register_commands(Events)
_plugins.register_commands(Events)
2 changes: 1 addition & 1 deletion mailpile/plugins/exporters.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
from mailpile.mailutils import Email


_plugins = PluginManager(builtin=True)
_plugins = PluginManager(builtin=os.path.basename(__file__)[:-3])


##[ Configuration ]###########################################################
Expand Down
13 changes: 8 additions & 5 deletions mailpile/plugins/groups.py
Original file line number Diff line number Diff line change
@@ -1,12 +1,15 @@
from gettext import gettext as _

import mailpile.plugins
from mailpile.plugins import PluginManager
from mailpile.commands import Command

from mailpile.plugins.tags import AddTag, DeleteTag, Filter
from mailpile.plugins.contacts import *


_plugins = PluginManager(builtin=__file__)


##[ Search terms ]############################################################

def search(config, idx, term, hits):
Expand All @@ -24,8 +27,8 @@ def search(config, idx, term, hits):
rt.extend(hits('%s:%s' % (email, fromto)))
return rt

mailpile.plugins.register_search_term('group', search)
mailpile.plugins.register_search_term('togroup', search)
_plugins.register_search_term('group', search)
_plugins.register_search_term('togroup', search)


##[ Commands ]################################################################
Expand Down Expand Up @@ -84,5 +87,5 @@ class ListGroups(GroupVCard(ListVCards)):
"""Find groups"""


mailpile.plugins.register_commands(Group, AddGroup, GroupAddLines,
RemoveGroup, ListGroups)
_plugins.register_commands(Group, AddGroup, GroupAddLines,
RemoveGroup, ListGroups)
7 changes: 5 additions & 2 deletions mailpile/plugins/hacks.py
Original file line number Diff line number Diff line change
@@ -1,13 +1,16 @@
from gettext import gettext as _

import mailpile.plugins
from mailpile.plugins import PluginManager
from mailpile.commands import Command
from mailpile.mailutils import *
from mailpile.search import *
from mailpile.util import *
from mailpile.vcard import *


_plugins = PluginManager(builtin=__file__)


class Hacks(Command):
"""Various hacks ..."""
SYNOPSIS = (None, 'hacks', None, None)
Expand Down Expand Up @@ -112,4 +115,4 @@ def command(self):
return [self._explain(i) for i in self._choose_messages(self.args)]


mailpile.plugins.register_commands(Hacks, FixIndex, PyCLI, ViewMetadata)
_plugins.register_commands(Hacks, FixIndex, PyCLI, ViewMetadata)
7 changes: 5 additions & 2 deletions mailpile/plugins/html_magic.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,16 @@
#
from gettext import gettext as _

import mailpile.plugins
import mailpile.config
from mailpile.plugins import PluginManager
from mailpile.commands import Command
from mailpile.urlmap import UrlMap
from mailpile.util import *


_plugins = PluginManager(builtin=__file__)


##[ Configuration ]###########################################################

#mailpile.plugins.register_config_section('tags', ["Tags", {
Expand Down Expand Up @@ -77,4 +80,4 @@ def command(self, save=True, auto=False):
return res


mailpile.plugins.register_commands(JsApi)
_plugins.register_commands(JsApi)
7 changes: 5 additions & 2 deletions mailpile/plugins/plugins.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,13 @@
import os
from gettext import gettext as _

import mailpile.commands
from mailpile.plugins import PluginManager


_plugins = PluginManager(builtin=__file__)


class Plugins(mailpile.commands.Command):
"""List the currently available plugins."""
SYNOPSIS = (None, 'plugins', 'plugins', '[<plugins>]')
Expand Down Expand Up @@ -79,5 +83,4 @@ def command(self):
{'disabled': self.args})


PluginManager(builtin=True
).register_commands(Plugins, LoadPlugin, DisablePlugin)
_plugins.register_commands(Plugins, LoadPlugin, DisablePlugin)
7 changes: 3 additions & 4 deletions mailpile/plugins/search.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
from mailpile.ui import SuppressHtmlOutput


_plugin_manager = PluginManager(builtin=True)
_plugins = PluginManager(builtin=__file__)


##[ Commands ]################################################################
Expand Down Expand Up @@ -318,8 +318,7 @@ def command(self):
return results


_plugin_manager.register_commands(Extract, Next, Order, Previous,
Search, View)
_plugins.register_commands(Extract, Next, Order, Previous, Search, View)


##[ Search terms ]############################################################
Expand All @@ -340,4 +339,4 @@ def mailbox_search(config, idx, term, hits):
return rt


_plugin_manager.register_search_term('mailbox', mailbox_search)
_plugins.register_search_term('mailbox', mailbox_search)
12 changes: 7 additions & 5 deletions mailpile/plugins/setup_magic.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
from gettext import gettext as _
from datetime import date

import mailpile.plugins
from mailpile.plugins import PluginManager
from mailpile.plugins import __all__ as PLUGINS
from mailpile.commands import Command
from mailpile.crypto.gpgi import GnuPG, SignatureInfo, EncryptionInfo
Expand All @@ -11,6 +11,9 @@
from mailpile.plugins.tags import AddTag, Filter


_plugins = PluginManager(builtin=__file__)


##[ Commands ]################################################################

class Setup(Command):
Expand Down Expand Up @@ -84,8 +87,7 @@ def command(self):
session = self.session

if session.config.sys.lockdown:
session.ui.warning(_('In lockdown, doing nothing.'))
return False
return self._error(_('In lockdown, doing nothing.'))

# Create local mailboxes
session.config.open_local_mailbox(session)
Expand Down Expand Up @@ -206,7 +208,7 @@ def command(self):
'indexing of encrypted e-mail. '))

session.config.save()
return True
return self._success(_('Performed initial Mailpile setup'))


mailpile.plugins.register_commands(Setup)
_plugins.register_commands(Setup)
Loading

0 comments on commit b057932

Please sign in to comment.