コード例 #1
0
ファイル: adminlog.py プロジェクト: IcanCheung/mediawiki-svn
def log(message,author):
	site=mwclient.Site(site, path=path)
	site.login(user,password)
	page=site.Pages[logname]
	text=page.edit()
	lines=text.split('\n')
	position=0
	# Try extracting latest date header
	for line in lines:
		position+=1
		if line.startswith("=="):
			undef,month,day,undef=line.split(" ",3)
			break

	# Um, check the date
	now=datetime.datetime.utcnow()
	logline="* %02d:%02d %s: %s" % ( now.hour, now.minute, author, message )
	if months[now.month-1]!=month or now.day!=int(day):
		lines.insert(0,"")
		lines.insert(0,logline)
		lines.insert(0,"== %s %d =="%(months[now.month-1],now.day))
	else:
		lines.insert(position,logline)
	page.save('\n'.join(lines),"%s (%s)"%(message,author))

	## IDENTICA :D
	snapi = statusnet.StatusNet( { 'user': identica_username, 'passwd': identica_password, 'api': 'https://identi.ca/api' } )
	snupdate = "%s: %s" % (author, message)
	snupdate = snupdate[:140] # Trim message
	snapi.update(snupdate)
コード例 #2
0
ファイル: adminlog.py プロジェクト: paladox/puppet-1
def log(config, message, project, author):
    if config.enable_identica:
        import statusnet

    if config.wiki_category:
        import re

    site = mwclient.Site(config.wiki_connection, path=config.wiki_path)
    site.login(config.wiki_user, config.wiki_pass, domain=config.wiki_domain)
    if config.enable_projects:
        project = project.capitalize()
        pagename = config.wiki_page % project
    else:
        pagename = config.wiki_page

    page = site.Pages[pagename]
    if page.redirect:
        page = next(page.links())

    text = page.edit()
    lines = text.split('\n')
    position = 0
    # Um, check the date
    now = datetime.datetime.utcnow()
    logline = "* %02d:%02d %s: %s" % (now.hour, now.minute, author, message)

    # Try extracting latest date header
    header = "=" * config.wiki_header_depth
    header_date = None
    for line in lines:
        position += 1
        if line.startswith(header):
            try:
                header_date = [int(x) for x in line.strip(" =").split("-")]
            except ValueError:
                header_date = None
            break
    if header_date != [now.year, now.month, now.day]:
        lines.insert(0, "")
        lines.insert(0, logline)
        lines.insert(0, now.strftime("{0} %Y-%m-%d {0}".format(header)))
    else:
        lines.insert(position, logline)
    if config.wiki_category:
        if not re.search('\[\[Category:' + config.wiki_category + '\]\]',
                         text):
            lines.append('<noinclude>[[Category:' + config.wiki_category +
                         ']]</noinclude>')

    page.save('\n'.join(lines),
              "%s (%s)" % (message, author),
              bot=getattr(config, 'wiki_bot', True))

    micro_update = ("%s: %s" % (author, message))[:140]

    if config.enable_identica:
        snapi = statusnet.StatusNet({
            'user': config.identica_username,
            'passwd': config.identica_password,
            'api': 'https://identi.ca/api'
        })
        snapi.update(micro_update)

    if config.enable_twitter:
        import twitter
        twitter_api = twitter.Api(**config.twitter_api_params)
        twitter_api.PostUpdate(micro_update)

    revdata = site.api('query',
                       prop='info',
                       inprop='url',
                       revids=page.revision)
    return revdata['query']['pages'].values()[0]['canonicalurl']