#!/usr/bin/python # -*- coding: utf-8 -*- # Standard Python Library from optparse import OptionParser import os import os.path import sys import datetime # PLSA Library import plsa from plsa.utility import list_translations from plsa.mail import openComposer # piksemel import piksemel # i18n import gettext __trans = gettext.translation("plsa", fallback=True) _ = __trans.ugettext # l10n import locale locale.setlocale(locale.LC_ALL, '') # Error codes SUCCESS, FAIL_USAGE, FAIL_READ, FAIL_XML, FAIL_LANG, FAIL_MAIL = xrange(6) def main(): language = os.environ["LANG"][:2] version = "1.0" usage = "%prog advisory.xml" parser = OptionParser(usage=usage, version="%prog " + version) parser.add_option("-l", "--language", dest="language", help=_("generate advisory for locale LANG (default: %s)") % language, metavar=_("LANG")) parser.add_option("-m", "--mail", dest="mail", help=_("open KMail compose dialog"), action="store_true") options, args = parser.parse_args() if len(args) == 0: parser.print_help() return FAIL_USAGE if not options.language: options.language = language if options.language not in list_translations("plsa"): print _("'%s' locale is not supported.") % options.language return FAIL_LANG # Read advisory xml if not os.path.isfile(args[0]) or not os.access(args[0], os.R_OK): print _("Unable to read %s.") % args[0] return FAIL_READ adv = plsa.advisory(options.language) try: adv.import_xml(args[0]) except plsa.Error, e: print _("XML file has errors:") for i in adv.errors: print " " + i return FAIL_XML # Build advisory text text = adv.build_text() if options.mail: title = "[PLSA-%s-%s] %s" % (datetime.date.today().year,adv.data["id"],adv.data["title"]) if not openComposer('', '', '', title, text): return FAIL_MAIL else: print text return SUCCESS if __name__ == "__main__": sys.exit(main())