636 |
636 |
verified_fields text[],
|
637 |
637 |
name_identifiers text[],
|
638 |
638 |
lasso_dump text,
|
639 |
|
last_seen timestamp)''' % table_name)
|
|
639 |
last_seen timestamp,
|
|
640 |
deleted boolean DEFAULT(FALSE))''' % table_name)
|
640 |
641 |
cur.execute('''SELECT column_name FROM information_schema.columns
|
641 |
642 |
WHERE table_schema = 'public'
|
642 |
643 |
AND table_name = %s''', (table_name,))
|
... | ... | |
644 |
645 |
|
645 |
646 |
needed_fields = set(['id', 'name', 'email', 'roles', 'is_admin',
|
646 |
647 |
'anonymous', 'name_identifiers', 'verified_fields',
|
647 |
|
'lasso_dump', 'last_seen', 'fts', 'ascii_name'])
|
|
648 |
'lasso_dump', 'last_seen', 'fts', 'ascii_name', 'deleted'])
|
648 |
649 |
|
649 |
650 |
from wcs.admin.settings import UserFieldsFormDef
|
650 |
651 |
formdef = UserFieldsFormDef()
|
... | ... | |
683 |
684 |
if not 'ascii_name' in existing_fields:
|
684 |
685 |
cur.execute('ALTER TABLE %s ADD COLUMN ascii_name varchar' % table_name)
|
685 |
686 |
|
|
687 |
if not 'deleted' in existing_fields:
|
|
688 |
cur.execute('ALTER TABLE %s ADD COLUMN deleted boolean DEFAULT(FALSE)' % table_name)
|
|
689 |
|
686 |
690 |
# delete obsolete fields
|
687 |
691 |
for field in (existing_fields - needed_fields):
|
688 |
692 |
cur.execute('''ALTER TABLE %s DROP COLUMN %s''' % (table_name, field))
|
... | ... | |
1771 |
1775 |
('lasso_dump', 'text'),
|
1772 |
1776 |
('last_seen', 'timestamp'),
|
1773 |
1777 |
('ascii_name', 'varchar'),
|
|
1778 |
('deleted', 'boolean'),
|
1774 |
1779 |
]
|
1775 |
1780 |
|
1776 |
1781 |
id = None
|
... | ... | |
1795 |
1800 |
'verified_fields': self.verified_fields,
|
1796 |
1801 |
'lasso_dump': self.lasso_dump,
|
1797 |
1802 |
'last_seen': None,
|
|
1803 |
'deleted': self.deleted,
|
1798 |
1804 |
}
|
1799 |
1805 |
if self.last_seen:
|
1800 |
1806 |
sql_dict['last_seen'] = datetime.datetime.fromtimestamp(self.last_seen),
|
... | ... | |
1862 |
1868 |
o = cls()
|
1863 |
1869 |
(o.id, o.name, o.email, o.roles, o.is_admin, o.anonymous,
|
1864 |
1870 |
o.name_identifiers, o.verified_fields, o.lasso_dump,
|
1865 |
|
o.last_seen, ascii_name) = [str_encode(x) for x in tuple(row[:11])]
|
|
1871 |
o.last_seen, ascii_name, o.deleted) = [str_encode(x) for x in tuple(row[:12])]
|
1866 |
1872 |
if o.last_seen:
|
1867 |
1873 |
o.last_seen = time.mktime(o.last_seen.timetuple())
|
1868 |
1874 |
if o.roles:
|
... | ... | |
2341 |
2347 |
return result
|
2342 |
2348 |
|
2343 |
2349 |
|
2344 |
|
SQL_LEVEL = 36
|
|
2350 |
SQL_LEVEL = 37
|
2345 |
2351 |
|
2346 |
2352 |
|
2347 |
2353 |
def migrate_global_views(conn, cur):
|
... | ... | |
2434 |
2440 |
# 31: add user_label to formdata
|
2435 |
2441 |
# 33: add anonymised field to global view
|
2436 |
2442 |
migrate_views(conn, cur)
|
2437 |
|
if sql_level < 21:
|
|
2443 |
if sql_level < 37:
|
2438 |
2444 |
# 3: introduction of _structured for user fields
|
2439 |
2445 |
# 4: removal of identification_token
|
2440 |
2446 |
# 12: (first part) add fts to users
|
2441 |
2447 |
# 16: add verified_fields to users
|
2442 |
2448 |
# 21: (first part) add ascii_name to users
|
|
2449 |
# 37: add deleted
|
2443 |
2450 |
do_user_table()
|
2444 |
2451 |
if sql_level < 6:
|
2445 |
2452 |
# 6: add actions_roles_array to tables and views
|