Revision 5fdaf331 tools/migrate-users
b/tools/migrate-users | ||
---|---|---|
36 | 36 |
from lib.migrate import Migration |
37 | 37 |
|
38 | 38 |
from sqlalchemy import Table |
39 |
from sqlalchemy.sql import select |
|
40 |
|
|
39 | 41 |
from pithos.im.models import User |
40 | 42 |
|
41 | 43 |
import base64 |
... | ... | |
61 | 63 |
user.active = 'ACTIVE' if u['active'] else 'SUSPENDED' |
62 | 64 |
print '#', user |
63 | 65 |
user.save(update_timestamps=False) |
66 |
|
|
67 |
#create user groups |
|
68 |
for (owner, group, members) in self.retrieve_groups(u['username']): |
|
69 |
self.backend.permissions.group_addmany(owner, group, members) |
|
70 |
|
|
64 | 71 |
|
65 | 72 |
def retrieve_users(self): |
66 | 73 |
s = self.gss_users.select() |
... | ... | |
70 | 77 |
yield user |
71 | 78 |
user = rp.fetchone() |
72 | 79 |
rp.close() |
80 |
|
|
81 |
def retrieve_groups(self, owner): |
|
82 |
gss_group = Table('gss_group', self.metadata, autoload=True) |
|
83 |
gss_user = Table('gss_user', self.metadata, autoload=True) |
|
84 |
group_user = Table('gss_group_gss_user', self.metadata, autoload=True) |
|
85 |
j1 = gss_group.join(gss_user, gss_group.c.owner_id == gss_user.c.id) |
|
86 |
j2 = group_user.join(gss_user, group_user.c.members_id == gss_user.c.id) |
|
87 |
s = select([gss_group.c.id, gss_group.c.name, gss_user.c.username], from_obj=j1) |
|
88 |
s = s.where(gss_user.c.username == owner) |
|
89 |
rp = self.conn.execute(s) |
|
90 |
gr = rp.fetchone() |
|
91 |
while gr: |
|
92 |
id, group, owner = gr |
|
93 |
s = select([gss_user.c.username], from_obj=j2) |
|
94 |
s = s.where(group_user.c.groupsmember_id == id) |
|
95 |
rp2 = self.conn.execute(s) |
|
96 |
members = rp2.fetchall() |
|
97 |
rp2.close() |
|
98 |
yield owner, group, (m[0] for m in members) |
|
99 |
gr = rp.fetchone() |
|
100 |
rp.close() |
|
73 | 101 |
|
74 | 102 |
if __name__ == "__main__": |
75 |
db = 'postgresql://gss@127.0.0.1/pithos'
|
|
103 |
db = '' |
|
76 | 104 |
m = UserMigration(db) |
77 | 105 |
m.execute() |
Also available in: Unified diff