Invitation improvements
[pithos] / tools / migrate-users
1 #!/usr/bin/env python
2
3 # Copyright 2011 GRNET S.A. All rights reserved.
4
5 # Redistribution and use in source and binary forms, with or
6 # without modification, are permitted provided that the following
7 # conditions are met:
8
9 #   1. Redistributions of source code must retain the above
10 #      copyright notice, this list of conditions and the following
11 #      disclaimer.
12
13 #   2. Redistributions in binary form must reproduce the above
14 #      copyright notice, this list of conditions and the following
15 #      disclaimer in the documentation and/or other materials
16 #      provided with the distribution.
17
18 # THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS'' AND ANY EXPRESS
19 # OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
20 # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
21 # PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRNET S.A OR
22 # CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
23 # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
24 # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
25 # USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
26 # AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
27 # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
28 # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
29 # POSSIBILITY OF SUCH DAMAGE.
30
31 # The views and conclusions contained in the software and
32 # documentation are those of the authors and should not be
33 # interpreted as representing official policies, either expressed
34 # or implied, of GRNET S.A.
35
36 from lib.migrate import Migration
37
38 from sqlalchemy import Table
39 from pithos.aai.models import PithosUser
40
41 import base64
42
43 class UserMigration(Migration):
44     def __init__(self, db):
45         Migration.__init__(self, db)
46         self.gss_users = Table('gss_user', self.metadata, autoload=True)
47     
48     def execute(self):
49         s = self.gss_users.select()
50         users = self.conn.execute(s).fetchall()
51         l = []
52         for u in users:
53             user = PithosUser()
54             user.pk = u['id']
55             user.uniq = u['username']
56             user.realname = u['name']
57             user.is_admin = False
58             user.affiliation = u['homeorganization'] if u['homeorganization'] else ''
59             user.auth_token = base64.b64encode(u['authtoken'])
60             user.auth_token_created = u['creationdate']
61             user.auth_token_expires = u['authtokenexpirydate']
62             user.created = u['creationdate']
63             user.updated = u['modificationdate']
64             print '#', user
65             user.save(update_timestamps=False)
66
67 if __name__ == "__main__":
68     db = 'postgresql://gss@localhost/pithos'
69     m = UserMigration(db)
70     m.execute()