Changeset 92
- Timestamp:
- 10/25/07 20:30:22 (15 months ago)
- Files:
-
- 1 modified
-
django/trunk/contrib/evolve.py (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
-
django/trunk/contrib/evolve.py
r87 r92 17 17 class Table(object): 18 18 name_line = re.compile(r'CREATE TABLE "(.+)" \(') 19 field_line = re.compile(r' "(.+)".*')19 field_line = re.compile(r'^"([^"]+)".*') 20 20 21 21 def __init__(self, sql): … … 31 31 self.new_fields = [line.strip().strip(',') for line in sql.splitlines()[1:-1]] # remove create table and closing bracket 32 32 33 33 34 def getTableName(self, sql): 34 35 return self.name_line.search(sql).groups()[0] 35 36 def getFieldName(self, sql): 36 return self.field_line.search(sql).groups()[0] 37 s = self.field_line.search(sql) 38 if not s: 39 return None 40 else: 41 return s.groups()[0] 37 42 def getFieldOption(self, field, option): 38 43 a, m = self.name.split('_', 1) … … 55 60 for field_sql in self.new_fields: 56 61 field_name = self.getFieldName(field_sql) 62 if not field_name: continue 57 63 new_fields.append(field_sql) 58 64 if field_name not in self.old_fields: … … 65 71 old_fields.append('"%s"' % field_name) 66 72 default = self.getFieldDefault(field_name) 67 if default :73 if default is not None: 68 74 new_columns.append('ALTER TABLE "%s__temp__" ADD COLUMN %s DEFAULT "%s";' % (self.name, field_sql, default)) 69 75 … … 98 104 new_tables_sql = new_tables_sql.split(';')[1:-2] # remove begin, commit and empty ; at the end 99 105 old_tables_sql = old_tables_sql.split(';')[:-1] # remove empty ; at the end 100 106 101 107 tables = {} 102 108 103 109 for sql in old_tables_sql: 110 if 'CREATE INDEX' in sql: continue 104 111 t = Table(sql.strip()) 105 112 tables[t.name] = t 106 113 107 114 for sql in new_tables_sql: 115 if 'CREATE INDEX' in sql: continue 108 116 t = Table(sql.strip()) 109 117 tables[t.name].new(sql.strip())