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)
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']