Details
- Applies to
- MySQL.py.parser
- Purpose
- Extend table creation abilities
- Description
- This patch adds the ability to create tables by massaging SQL queries. For example this query finds customer addresses from a CRM, formats them into a table and makes one column a link to google maps highlighting the physical location of the customer.
DBDATA localhost,davecrm,crmread,DatabasePassword QUERY select concat(concat("http://maps.google.com/maps?f=q&hl=en&q=", replace(shipping_address_street, "\n", ", "), ", ", shipping_address_city, ", New Zealand"), "|", concat("Map to ", name, ", ", Shipping_address_street)) from accounts where NOT shipping_address_street = "" and NOT shipping_address_city = "" and NOT deleted = "1" order by name; WMLCOLUMN 1
returns a table of links that looks like this
http://maps.google.com/maps?f=q&hl=en&q=320%20Manchester%20St,%20Christchurch,%20New%20Zealand "Map to Total Team, 320 Manchester Street"
Patch
1 --- MySQL.py.orig 2007-03-27 15:26:00.000000000 +1200
2 +++ MySQL.py 2007-03-27 15:51:40.000000000 +1200
3 @@ -16,6 +16,7 @@
4 """
5
6 import sys
7 +import string,re
8 from MoinMoin import wikiutil, config
9 import MySQLdb
10 import re
11 @@ -27,6 +28,7 @@
12 _re_evenattr=re.compile("EVENATTR (?P<EVENATTR>.*)")
13 _re_oddattr=re.compile("ODDATTR (?P<ODDATTR>.*)")
14 _re_wikicol=re.compile("WIKICOLUMN (?P<WIKICOLUMN>.*)")
15 +_re_wmlcol=re.compile("WMLCOLUMN (?P<WMLCOLUMN>.*)")
16 _re_htmlcol=re.compile("HTMLCOLUMN (?P<HTMLCOLUMN>.*)")
17 _re_mailcol=re.compile("MAILCOLUMN (?P<MAILCOLUMN>.*)")
18 _re_hidden=re.compile("HIDDENCOLUMN (?P<HIDDENCOLUMN>.*)")
19 @@ -36,9 +38,10 @@
20 <img src="/wiki/rightsidebar/img/moin-www.png"
21 alt="[www]" width="11" height="11">%s</a>'''
22 _format_wikiref=' <a href="%s">%s</a>'
23 -_format_mailto='<a href="mailto:%s">%s</a>'
24 +_format_wmlref=' <a href="%s">%s</a>'
25 +_format_mailto=' <a href="mailto:%s">%s</a>'
26
27 class Preference:
28 def __init__(self):
29 @@ -51,6 +54,7 @@
30 self.header=''
31 self.html=''
32 self.wiki=''
33 + self.wml=''
34 self.mail=''
35 self.hidden=''
36
37 @@ -91,6 +95,8 @@
38 output.append(params.linebreak)
39 output.append('[WIKICOLUMN columnnumber1,columnnumber2,...,...]')
40 output.append(params.linebreak)
41 + output.append('[WMLCOLUMN columnnumber1,columnnumber2,...,...] use | to separate two columns, aa|bb will become a link to aa labelled as bb')
42 + output.append(params.linebreak)
43 output.append('[MAILCOLUMN columnnumber1,columnnumber2,...,...]')
44 output.append(params.linebreak)
45 output.append('[HIDDENCOLUMN columnnumber1,columnnumber2,...,...]')
46 @@ -148,6 +154,10 @@
47 if match and match.groupdict().has_key('WIKICOLUMN'):
48 params.wiki=match.group('WIKICOLUMN').split(',')
49
50 + match=_re_wmlcol.search(parameterstring)
51 + if match and match.groupdict().has_key('WMLCOLUMN'):
52 + params.wml=match.group('WMLCOLUMN').split(',')
53 +
54 match=_re_htmlcol.search(parameterstring)
55 if match and match.groupdict().has_key('HTMLCOLUMN'):
56 params.html=match.group('HTMLCOLUMN').split(',')
57 @@ -210,13 +220,17 @@
58 aColumnNumber=aColumnNumber+1
59 element=unicode(str(aCell) , config.charset)
60 if str(aColumnNumber) in params.hidden:
61 - conitnue
62 + continue
63 if str(aColumnNumber) in params.html:
64 isHTML=1
65 element=_format_href % (str(aCell), str(aCell) )
66 if str(aColumnNumber) in params.wiki:
67 isHTML=1
68 element=_format_wikiref % (str(aCell), str(aCell) )
69 + if str(aColumnNumber) in params.wml:
70 + isHTML=1
71 + wml=str(aCell).split("|")
72 + element=_format_wmlref % (str(wml[0]), str(wml[1]) )
73 if str(aColumnNumber) in params.mail:
74 isHTML=1
75 element=_format_mailto % (str(aCell),str(aCell))
Discussion
Created by cfalconer@totalteam.co.nz The purpose was to allow more flexible generation of tables from SQL queries, so that a URL could be created from a name field and an address field. See the example above for one way to use WML.
And WML stands for Wiki Mark-up Language... for no reason at all.
Please move this to the ParserMarket.
Plan
- Priority:
- Assigned to:
- Status: