"""

Pre-release... sql, stuff doesn't work yet

The user-name is hardcoded, configure mysql so it can't do any damage.

Author: johannes@sipsolutions.net

"""
# Imports
from MoinMoin import config, user, wikiutil
from MoinMoin.Page import Page
import sys, re, MySQLdb

Dependencies = []

def execute(macro, text):
    _ = macro.request.getText

    # return immediately if getting links for the current page
    if macro.request.mode_getpagelinks:
        return ''

    if text is None: # macro call without parameters
        return ''

    query = text
    
    split = query.split(',', 1)
    if split[0] == 'sql':
        query = split[1]
        sql = True
    else:
        sql = False
    del split
    
    db = MySQLdb.connect(user="johannes-web")
    
    c = db.cursor()
    
    c.execute(query)
    
    formatter = macro.request.formatter

    if not sql:
      result = formatter.table(True)
      result += formatter.table_row(True)
      for stuff in c.description:
        result += formatter.table_cell(True)
        result += stuff[0]
        result += formatter.table_cell(False)
      result += formatter.table_row(False)
      for l in c.fetchall():
        if l is None: break
        result += formatter.table_row(True)
        for v in l:
          result += formatter.table_cell(True)
          result += str(v)
          result += formatter.table_cell(False)
        result += formatter.table_row(False)
      
      result += formatter.table(False)
    else:
      result = 'not yet implemented'
#      for l in c.fetchall():
#        if l is None: break
#        result += l + "\n"
      import sha
      s = sha.new(query)
      id = s.hexdigest()
      result = formatter.code_area(True, id) + result + formatter.code_area(False, id)
    return result

# EOF

