import os.path
import shutil

sql = """
-- Remove empty values from the milestone list
DELETE FROM milestone WHERE COALESCE(name,'')='';

-- Add a description column to the version table, and remove unnamed versions
CREATE TEMP TABLE version_old AS SELECT * FROM version;
DROP TABLE version;
CREATE TABLE version (
        name            text PRIMARY KEY,
        time            integer,
        description     text
);
INSERT INTO version(name,time,description)
    SELECT name,time,'' FROM version_old WHERE COALESCE(name,'')<>'';

-- Add a description column to the component table, and remove unnamed components
CREATE TEMP TABLE component_old AS SELECT * FROM component;
DROP TABLE component;
CREATE TABLE component (
        name            text PRIMARY KEY,
        owner           text,
        description     text
);
INSERT INTO component(name,owner,description)
    SELECT name,owner,'' FROM component_old WHERE COALESCE(name,'')<>'';
"""

def do_upgrade(env, ver, cursor):
    cursor.execute(sql)

    # Copy the new default wiki macros over to the environment
    from trac.config import default_dir
    for f in os.listdir(default_dir('macros_dir')):
        if not f.endswith('.py'):
            continue
        src = os.path.join(macros_dir, f)
        dst = os.path.join(env.path, 'wiki-macros', f)
        if not os.path.isfile(dst):
            shutil.copy2(src, dst)

@@ -1108,16 +1108,55 @@
 ult_dir%0A
+    macros_dir = default_dir('macros')%0A
     for 
@@ -1171,29 +1171,16 @@
 listdir(
-default_dir('
 macros_d
@@ -1181,18 +1181,16 @@
 cros_dir
-')
 ):%0A     

Fix error in upgrade scripts introduced in [1723]. Closes #1592.