# -*- coding: utf-8 -*- """ .. .... ............ ........ . ....... . .... .. . ... .. .. .. .. ..... . .. .. .. ....@@@. .. . ........ . .. . .. ..@.@@..@@. .@@@@@@@ @@@@@@. .... .@@@@. .@@@@. .@@@@..@@.@@..@@@..@@@..@@@@.... .... @@@@... .@@@.. @@ @@ .@..@@..@@...@@@. .@@@@@. .. .@@@.. . @@@. @@.@@..@@.@@..@@@ @@ .@@@@@@.. ..... ...@@@.... @@@ .@@.......... ........ ..... .. . ..@@@@.. . .@@@@. .. ....... . ............. . .. .... .. .. . ... .... . . .... ............. .. ... .. .. ... ........ ... ... ................................ MoinMoin - Doodle poll parser PURPOSE: un joli sondage doodle sur le wiki AUTHOR: Antoine Durand-Gasselin CALLING SEQUENCE: {{{ #!Doodle pollname; choix1; choix2; choix3 participant1; choix1=1; choix2=0; choix3=1 participant2; choix1=0; choix2=1; choix3=1 }}} """ import os, string, re, StringIO, base64 from MoinMoin import config, wikiutil from MoinMoin.parser.text_moin_wiki import Parser as WikiParser Dependencies = [] class Parser: parsername = "Doodle" Dependencies = Dependencies def __init__ (self, raw, request, **kw): self.form = request.form self.request = request self.raw = raw self.parseArgs(kw["format_args"]) def parseArgs(self, argsString): argList = argsString.split(';') self.poll_name=argList[0] self.poll_choices=filter ((lambda x: x != ""), [ i.strip() for i in argList[1:]]) def format(self, f): entries = self.raw.splitlines() code = '\n\n
' % self.poll_name code += f.table(1) code += f.table_row(1) code += f.table_cell(1) code += f.table_cell(0) for choice in self.poll_choices: code += f.table_cell(1) code += f.text(choice) code += f.table_cell(0) code += f.table_row(0) for entry in entries: code += f.table_row(1) code += f.table_cell(1) code += f.text(entry.split(";",1)[0].strip()) code += f.table_cell(0) for choice in self.poll_choices: resp = re.search(re.escape(choice)+'=?', entry) if resp: disp = entry[resp.end()] if '1' == disp: color= 'green' elif '0' == disp: color= 'red' else: color = 'grey' code += f.table_cell(1,{'style':'background-color: %s;' % color}) code += f.text(disp) else: code += f.table_cell(1,{'style':'background-color: grey;'}) code += f.text('nsp') code += f.table_cell(0) code += f.table_row(0) code += f.table_row(1) code += f.table_cell(1) code += ('' % self.request.user.name) code += f.table_cell(0) for choice in self.poll_choices: if isinstance(choice, unicode): name = base64.encodestring(choice.strip().decode('utf-8')).strip('\r\t \n=') # l'utf-8, c'est bien! else: name = base64.encodestring(choice.strip()).strip('\r\t \n=') # mais ça peut bien chier! code += f.table_cell(1) code += '' % name code += f.table_cell(0) code += f.table(0) code += '' code += '
' self.request.write(code)