2 Commits
Author SHA1 Message Date
golderweb b0c844b2de Use config in jogobot.py
Set configparser.interpolation to none to prevent parsing timestamps
2016-02-25 13:48:38 +01:00
golderweb 027d7d1543 Use configparser to read configuration 2016-02-25 13:24:13 +01:00
3 changed files with 48 additions and 9 deletions
+1 -1
View File
@@ -26,4 +26,4 @@ Scripts for our redundances bot
""" """
# noqa needed to prevent pyflakes from warning about unused imports # noqa needed to prevent pyflakes from warning about unused imports
from jogobot.jogobot import ( output, sendmail, is_active ) # noqa from jogobot.jogobot import ( output, sendmail, is_active ) # noqa
import jogobot.config as config # noqa from jogobot.config import config # noqa
+39
View File
@@ -0,0 +1,39 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
#
# config.py
#
# Copyright 2016 GOLDERWEB – Jonathan Golder <jonathan@golderweb.de>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
# MA 02110-1301, USA.
#
#
"""
This module will read config for jogobot from config file (ini-style) using
python standard library module configparser
"""
import configparser
import pywikibot
config = configparser.ConfigParser(interpolation=None)
config.read(pywikibot.config.get_base_dir() + "/jogobot.conf")
# Make jogobot entrys available in root level (without sections)
config = dict( config )
for key, value in dict(config["jogobot"]).items():
config[key] = value
+8 -8
View File
@@ -23,6 +23,7 @@
# #
import os import os
import shlex
from datetime import datetime from datetime import datetime
from email.mime.text import MIMEText from email.mime.text import MIMEText
from subprocess import Popen, PIPE, TimeoutExpired from subprocess import Popen, PIPE, TimeoutExpired
@@ -32,7 +33,7 @@ import pywikibot
from pywikibot.bot import( from pywikibot.bot import(
DEBUG, INFO, WARNING, ERROR, CRITICAL, STDOUT, VERBOSE, logoutput ) DEBUG, INFO, WARNING, ERROR, CRITICAL, STDOUT, VERBOSE, logoutput )
import jogobot.config as config from jogobot.config import config
def output( text, level="INFO", decoder=None, newline=True, def output( text, level="INFO", decoder=None, newline=True,
@@ -41,7 +42,7 @@ def output( text, level="INFO", decoder=None, newline=True,
Wrapper for pywikibot output functions Wrapper for pywikibot output functions
""" """
text = datetime.utcnow().strftime( "%Y-%m-%d %H:%M:%S (UTC) " ) + text text = datetime.utcnow().strftime( config["log_timestamp"] ) + " " + text
if ( level.upper() == "STDOUT" ): if ( level.upper() == "STDOUT" ):
_level = STDOUT _level = STDOUT
@@ -102,7 +103,7 @@ pywikibot.output = pywikibot_output
def sendmail( Subject, Body, To=None, CC=None, BCC=None, def sendmail( Subject, Body, To=None, CC=None, BCC=None,
From="JogoBot <tools.jogobot@tools.wmflabs.org>" ): From=config["mail_from"] ):
""" """
Provides a simple wrapper for exim (MTA) on tool labs Provides a simple wrapper for exim (MTA) on tool labs
Params should be formated according related fields in RFC 5322 Params should be formated according related fields in RFC 5322
@@ -143,7 +144,7 @@ def sendmail( Subject, Body, To=None, CC=None, BCC=None,
# We have no local MTA so we need to catch errors and write to file instead # We have no local MTA so we need to catch errors and write to file instead
try: try:
# Send the message via exim # Send the message via exim
with Popen( config.mail_cmd, stdin=PIPE, with Popen( shlex.split(config['mail_cmd']), stdin=PIPE,
universal_newlines=True ) as MTA: universal_newlines=True ) as MTA:
MTA.communicate(msg.as_string()) MTA.communicate(msg.as_string())
@@ -164,9 +165,9 @@ def sendmail( Subject, Body, To=None, CC=None, BCC=None,
except FileNotFoundError: except FileNotFoundError:
# Local fallback # Local fallback
with open( config.bot_dir + "/Mail.txt", "a" ) as mail: with open( config["dir"] + "/Mail.txt", "a" ) as mail:
mail.write( "\n\n" ) mail.write( "\n\n" )
mail.write( datetime.utcnow().strftime( "%Y-%m-%d %H:%M:%S (UTC)")) mail.write( datetime.utcnow().strftime( config["log_timestamp"]))
mail.write( "\n" + msg.as_string() ) mail.write( "\n" + msg.as_string() )
@@ -218,8 +219,7 @@ class StatusAPI:
self.site = pywikibot.Site() self.site = pywikibot.Site()
# We need the shell working directory # We need the shell working directory
self.cwd = "/home/joni/GOLDERWEB/Daten/Projekte/" +\ self.cwd = config["dir"]
"05_Wikimedia/62_BOT/bot"
def is_disabled_on_wiki( self, task_slug=None ): def is_disabled_on_wiki( self, task_slug=None ):
""" """