def linkto(pagename, request, params=""): from MoinMoin.util import web _ = request.getText if not request.cfg.chart_options: request.formatter = Formatter(request) return ( request.formatter.sysmsg(1) + request.formatter.text(_("Charts are not available!")) + request.formatter.sysmsg(0) ) if _debug: return draw(pagename, request) page = Page(request, pagename) # Create escaped query string from dict and params querystr = {"action": "chart", "type": "hitcounts"} querystr = web.makeQueryString(querystr) querystr = wikiutil.escape(querystr) if params: querystr += "&" + params # TODO: remove escape=0 in 1.4 data = {"url": page.url(request, querystr, escape=0)} data.update(request.cfg.chart_options) result = ('<img src="%(url)s" width="%(width)d" height="%(height)d"' ' alt="hitcounts chart">') % data return result
def linkto(pagename, request, params=''): from MoinMoin.util import web _ = request.getText if not request.cfg.chart_options: return (request.formatter.sysmsg(1) + request.formatter.text(_('Charts are not available!')) + request.formatter.sysmsg(0)) if _debug: return draw(pagename, request) page = Page(request, pagename) # Create escaped query string from dict and params querystr = {'action': 'chart', 'type': 'pagesize'} querystr = web.makeQueryString(querystr) querystr = wikiutil.escape(querystr) if params: querystr += '&' + params # TODO: remove escape=0 in 1.4 data = {'url': page.url(request, querystr, escape=0)} data.update(request.cfg.chart_options) result = ('<img src="%(url)s" width="%(width)d" height="%(height)d"' ' alt="pagesize chart">') % data return result
def querystring(self): """ Return query string, used in the page link """ from MoinMoin.util import web querystr = {'highlight': self.query.highlight_re()} querystr = web.makeQueryString(querystr) querystr = wikiutil.escape(querystr) return querystr
def testMakeQueryStringFromArgument(self): """ util.web: make query sting from argument """ tests = ( # description, arg, expected ('string unchanged', 'a=b', 'a=b'), ('string value', {'a': 'b'}, 'a=b'), ('integer value', {'a': 1}, 'a=1'), ('multiply values', {'a': 1, 'b': 2}, 'a=1&b=2'), ) for description, arg, expected in tests: result = web.makeQueryString(arg) self.assertEqual(result, expected, ('%(description)s: expected "%(expected)s" ' 'but got "%(result)s"') % locals())
def testMakeQueryStringFromArgumentAndKeywords(self): """ util.web: make query sting from argument and keywords """ tests = ( # description, arg, expected ('kw ignored', 'a=1', 'a=1'), ('kw added to arg', {'a': 1}, 'a=1&b=kw'), ('kw override arg', {'a': 1, 'b': 'arg'}, 'a=1&b=kw'), ) for description, arg, expected in tests: # Call makeQueryString with both arg and keyword result = web.makeQueryString(arg, b='kw') self.assertEqual(result, expected, ('%(description)s: expected "%(expected)s" ' 'but got "%(result)s"') % locals())
def send_hotdraw(pagename, request): _ = request.getText now = time.time() pubpath = request.cfg.url_prefix + "/applets/TWikiDrawPlugin" basename = request.form['drawing'][0] drawpath = getAttachUrl(pagename, basename + '.draw', request, escaped=1) pngpath = getAttachUrl(pagename, basename + '.png', request, escaped=1) querystr = {'action': 'AttachFile', 'ts': now} querystr = wikiutil.escape(web.makeQueryString(querystr)) pagelink = '%s?%s' % (wikiutil.quoteWikinameURL(pagename), querystr) savelink = Page(request, pagename).url(request) # XXX include target filename param here for twisted # request, {'savename': request.form['drawing'][0]+'.draw'} #savelink = '/cgi-bin/dumpform.bat' if htdocs_access(request): timestamp = '?ts=%s' % now else: timestamp = '&ts=%s' % now request.write('<h2>' + _("Edit drawing") + '</h2>') request.write(""" <p> <img src="%(pngpath)s%(timestamp)s"> <applet code="CH.ifa.draw.twiki.TWikiDraw.class" archive="%(pubpath)s/twikidraw.jar" width="640" height="480"> <param name="drawpath" value="%(drawpath)s"> <param name="pngpath" value="%(pngpath)s"> <param name="savepath" value="%(savelink)s"> <param name="basename" value="%(basename)s"> <param name="viewpath" value="%(pagelink)s"> <param name="helppath" value="%(pagelink)s"> <strong>NOTE:</strong> You need a Java enabled browser to edit the drawing example. </applet> </p>""" % { 'pngpath': pngpath, 'timestamp': timestamp, 'pubpath': pubpath, 'drawpath': drawpath, 'savelink': savelink, 'pagelink': pagelink, 'basename': basename })
def add(self, request, eventtype, values=None, add_http_info=1, mtime_usecs=None): """ Write an event of type `eventtype, with optional key/value pairs appended (i.e. you have to pass a dict). """ # Dont log spiders XXX TODO: does it make sense? if web.isSpiderAgent(request): return if mtime_usecs is None: mtime_usecs = wikiutil.timestamp2version(time.time()) if values is None: values = {} if add_http_info: # All these are ascii for key in ['remote_addr', 'http_user_agent', 'http_referer']: value = getattr(request, key, '') if value: # Save those http headers in UPPERcase values[key.upper()] = value # Encode values in a query string TODO: use more reaable format values = web.makeQueryString(values) self._add(u"%d\t%s\t%s\n" % (mtime_usecs, eventtype, values))
def testMakeQueryStringFromKeywords(self): """ util.web: make query sting from keywords """ expected = 'a=1&b=string' result = web.makeQueryString(a=1, b='string') self.assertEqual(result, expected, 'Expected "%(expected)s" but got "%(result)s"' % locals())