Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--doc/Manual.txt8
-rw-r--r--meeting.py9
-rw-r--r--plugin.py6
-rw-r--r--tests/run_test.py22
4 files changed, 37 insertions, 8 deletions
diff --git a/doc/Manual.txt b/doc/Manual.txt
index 3b3665a..1dc2ea4 100644
--- a/doc/Manual.txt
+++ b/doc/Manual.txt
@@ -452,11 +452,11 @@ These variables are set either in ``meetingLocalConfig.py`` (in the
``logFileDir`` and ``logUrlPrefix``.
Variables available for replacement using ``%(name)s`` include:
- ``channel``, ``meetingname``. Double percent signs (e.g.: ``%%Y``
- are time formats, from ``time.strftime``.
+ ``channel``, ``network``, ``meetingname``. Double percent signs
+ (e.g.: ``%%Y`` are time formats, from ``time.strftime``.
- This filename does *not* include extensions. Those are found from
- the writers, via the variable ``writer_map``.
+ You should *not* include filename extensions here. Those are
+ found from the writers, via the variable ``writer_map``.
Putting these all together, a set of variables could be:
1) ``logFileDir = /srv/www/meetings/``
diff --git a/meeting.py b/meeting.py
index 002e4b4..9a11c9f 100644
--- a/meeting.py
+++ b/meeting.py
@@ -148,11 +148,13 @@ class Config(object):
else:
pattern = self.filenamePattern
channel = self.M.channel.strip('# ').lower().replace('/', '')
+ network = self.M.network.strip(' ').lower().replace('/', '')
if self.M._meetingname:
meetingname = self.M._meetingname.replace('/', '')
else:
meetingname = channel
- path = pattern%locals()
+ path = pattern%{'channel':channel, 'network':network,
+ 'meetingname':meetingname}
path = time.strftime(path, self.M.starttime)
# If we want the URL name, append URL prefix and return
if url:
@@ -428,7 +430,7 @@ class Meeting(MeetingCommands, object):
filename=None, writeRawLog=False,
setTopic=None, sendReply=None, getRegistryValue=None,
safeMode=False, channelNicks=None,
- extraConfig={}):
+ extraConfig={}, network='nonetwork'):
self.config = Config(self, writeRawLog=writeRawLog, safeMode=safeMode,
extraConfig=extraConfig)
if getRegistryValue is not None:
@@ -439,6 +441,7 @@ class Meeting(MeetingCommands, object):
self._setTopic = setTopic
self.owner = owner
self.channel = channel
+ self.network = network
self.currenttopic = ""
if oldtopic:
self.oldtopic = self.config.dec(oldtopic)
@@ -540,6 +543,8 @@ class Meeting(MeetingCommands, object):
self.minutes.append(m)
def replacements(self):
repl = { }
+ repl['channel'] = self.channel
+ repl['network'] = self.network
repl['MeetBotInfoURL'] = self.config.MeetBotInfoURL
repl['timeZone'] = self.config.timeZone
repl['starttime'] = repl['endtime'] = "None"
diff --git a/plugin.py b/plugin.py
index 9b003b0..ace7efd 100644
--- a/plugin.py
+++ b/plugin.py
@@ -74,6 +74,7 @@ class MeetBot(callbacks.Plugin):
nick = msg.nick
channel = msg.args[0]
payload = msg.args[1]
+ network = irc.msg.tags['receivedOn']
# The following is for debugging. It's excellent to get an
# interactive interperter inside of the live bot. use
@@ -85,7 +86,7 @@ class MeetBot(callbacks.Plugin):
# Get our Meeting object, if one exists. Have to keep track
# of different servers/channels.
# (channel, network) tuple is our lookup key.
- Mkey = (channel,irc.msg.tags['receivedOn'])
+ Mkey = (channel,network)
M = meeting_cache.get(Mkey, None)
# Start meeting if we are requested
@@ -106,10 +107,11 @@ class MeetBot(callbacks.Plugin):
setTopic = _setTopic, sendReply = _sendReply,
getRegistryValue = self.registryValue,
safeMode=True, channelNicks=_channelNicks,
+ network=network,
)
meeting_cache[Mkey] = M
recent_meetings.append(
- (channel, irc.msg.tags['receivedOn'], time.ctime()))
+ (channel, network, time.ctime()))
if len(recent_meetings) > 10:
del recent_meetings[0]
# If there is no meeting going on, then we quit
diff --git a/tests/run_test.py b/tests/run_test.py
index 78663d1..07aecdf 100644
--- a/tests/run_test.py
+++ b/tests/run_test.py
@@ -223,6 +223,28 @@ class MeetBotTest(unittest.TestCase):
self.assert_('<link rel="stylesheet" ' not in results['.log.html'])
self.assert_('<style type="text/css" ' not in results['.log.html'])
+ def test_filenamevars(self):
+ def getM(fnamepattern):
+ M = meeting.Meeting(channel='somechannel',
+ network='somenetwork',
+ owner='nobody',
+ extraConfig={'filenamePattern':fnamepattern})
+ M.addline('nobody', '#startmeeting')
+ return M
+ # Test the %(channel)s and %(network)s commands in supybot.
+ M = getM('%(channel)s-%(network)s')
+ assert M.config.filename().endswith('somechannel-somenetwork'), \
+ "Filename not as expected: "+M.config.filename()
+ # Test dates in filenames
+ M = getM('%(channel)s-%%F')
+ import time
+ assert M.config.filename().endswith(time.strftime('somechannel-%F')),\
+ "Filename not as expected: "+M.config.filename()
+ # Test #meetingname in filenames
+ M = getM('%(channel)s-%(meetingname)s')
+ M.addline('nobody', '#meetingname blah1234')
+ assert M.config.filename().endswith('somechannel-blah1234'),\
+ "Filename not as expected: "+M.config.filename()
if __name__ == '__main__':