Statistics
| Branch: | Tag: | Revision:

root / tools / migrate-users @ f6c0005f

History | View | Annotate | Download (2.7 kB)

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()