606 |
606 |
verified_fields text[],
|
607 |
607 |
name_identifiers text[],
|
608 |
608 |
lasso_dump text,
|
609 |
|
last_seen timestamp)''' % table_name)
|
|
609 |
last_seen timestamp,
|
|
610 |
deleted boolean DEFAULT(FALSE))''' % table_name)
|
610 |
611 |
cur.execute('''SELECT column_name FROM information_schema.columns
|
611 |
612 |
WHERE table_schema = 'public'
|
612 |
613 |
AND table_name = %s''', (table_name,))
|
... | ... | |
614 |
615 |
|
615 |
616 |
needed_fields = set(['id', 'name', 'email', 'roles', 'is_admin',
|
616 |
617 |
'anonymous', 'name_identifiers', 'verified_fields',
|
617 |
|
'lasso_dump', 'last_seen', 'fts', 'ascii_name'])
|
|
618 |
'lasso_dump', 'last_seen', 'fts', 'ascii_name', 'deleted'])
|
618 |
619 |
|
619 |
620 |
from wcs.admin.settings import UserFieldsFormDef
|
620 |
621 |
formdef = UserFieldsFormDef()
|
... | ... | |
653 |
654 |
if not 'ascii_name' in existing_fields:
|
654 |
655 |
cur.execute('ALTER TABLE %s ADD COLUMN ascii_name varchar' % table_name)
|
655 |
656 |
|
|
657 |
if not 'deleted' in existing_fields:
|
|
658 |
cur.execute('ALTER TABLE %s ADD COLUMN deleted boolean DEFAULT(FALSE)' % table_name)
|
|
659 |
|
656 |
660 |
# delete obsolete fields
|
657 |
661 |
for field in (existing_fields - needed_fields):
|
658 |
662 |
cur.execute('''ALTER TABLE %s DROP COLUMN %s''' % (table_name, field))
|
... | ... | |
1736 |
1740 |
('lasso_dump', 'text'),
|
1737 |
1741 |
('last_seen', 'timestamp'),
|
1738 |
1742 |
('ascii_name', 'varchar'),
|
|
1743 |
('deleted', 'boolean'),
|
1739 |
1744 |
]
|
1740 |
1745 |
|
1741 |
1746 |
id = None
|
... | ... | |
1760 |
1765 |
'verified_fields': self.verified_fields,
|
1761 |
1766 |
'lasso_dump': self.lasso_dump,
|
1762 |
1767 |
'last_seen': None,
|
|
1768 |
'deleted': self.deleted,
|
1763 |
1769 |
}
|
1764 |
1770 |
if self.last_seen:
|
1765 |
1771 |
sql_dict['last_seen'] = datetime.datetime.fromtimestamp(self.last_seen),
|
... | ... | |
1827 |
1833 |
o = cls()
|
1828 |
1834 |
(o.id, o.name, o.email, o.roles, o.is_admin, o.anonymous,
|
1829 |
1835 |
o.name_identifiers, o.verified_fields, o.lasso_dump,
|
1830 |
|
o.last_seen, ascii_name) = [str_encode(x) for x in tuple(row[:11])]
|
|
1836 |
o.last_seen, ascii_name, o.deleted) = [str_encode(x) for x in tuple(row[:12])]
|
1831 |
1837 |
if o.last_seen:
|
1832 |
1838 |
o.last_seen = time.mktime(o.last_seen.timetuple())
|
1833 |
1839 |
if o.roles:
|
... | ... | |
2292 |
2298 |
return result
|
2293 |
2299 |
|
2294 |
2300 |
|
2295 |
|
SQL_LEVEL = 34
|
|
2301 |
SQL_LEVEL = 35
|
2296 |
2302 |
|
2297 |
2303 |
def migrate_global_views(conn, cur):
|
2298 |
2304 |
cur.execute('''SELECT COUNT(*) FROM information_schema.tables
|
... | ... | |
2379 |
2385 |
# 31: add user_label to formdata
|
2380 |
2386 |
# 33: add anonymised field to global view
|
2381 |
2387 |
migrate_views(conn, cur)
|
2382 |
|
if sql_level < 21:
|
|
2388 |
if sql_level < 35:
|
2383 |
2389 |
# 3: introduction of _structured for user fields
|
2384 |
2390 |
# 4: removal of identification_token
|
2385 |
2391 |
# 12: (first part) add fts to users
|
2386 |
2392 |
# 16: add verified_fields to users
|
2387 |
2393 |
# 21: (first part) add ascii_name to users
|
|
2394 |
# 35: add deleted
|
2388 |
2395 |
do_user_table()
|
2389 |
2396 |
if sql_level < 6:
|
2390 |
2397 |
# 6: add actions_roles_array to tables and views
|