1 """some utility functions for datastore initialization. |
1 """some utility functions for datastore initialization. |
2 |
2 |
3 :organization: Logilab |
3 :organization: Logilab |
4 :copyright: 2008 LOGILAB S.A. (Paris, FRANCE), all rights reserved. |
4 :copyright: 2008-2009 LOGILAB S.A. (Paris, FRANCE), all rights reserved. |
5 :contact: http://www.logilab.fr/ -- mailto:contact@logilab.fr |
5 :contact: http://www.logilab.fr/ -- mailto:contact@logilab.fr |
6 """ |
6 """ |
7 __docformat__ = "restructuredtext en" |
7 __docformat__ = "restructuredtext en" |
8 |
8 |
9 from google.appengine.api.datastore import Key, Entity, Put, Get, Query |
9 from google.appengine.api.datastore import Key, Entity, Put, Get, Query |
27 |
27 |
28 |
28 |
29 def create_user(login, password, groups): |
29 def create_user(login, password, groups): |
30 """create a cubicweb user""" |
30 """create a cubicweb user""" |
31 from cubicweb.server.utils import crypt_password |
31 from cubicweb.server.utils import crypt_password |
32 user = Entity('EUser', name=login) |
32 user = Entity('CWUser', name=login) |
33 user['s_login'] = unicode(login) |
33 user['s_login'] = unicode(login) |
34 user['s_upassword'] = crypt_password(password) |
34 user['s_upassword'] = crypt_password(password) |
35 set_user_groups(user, groups) |
35 set_user_groups(user, groups) |
36 Put(user) |
36 Put(user) |
37 return user |
37 return user |
38 |
38 |
39 def create_groups(): |
39 def create_groups(): |
40 """create initial cubicweb groups""" |
40 """create initial cubicweb groups""" |
41 for groupname in ('managers', 'users', 'guests'): |
41 for groupname in ('managers', 'users', 'guests'): |
42 group = Entity('EGroup', name='key_' + groupname) |
42 group = Entity('CWGroup', name='key_' + groupname) |
43 group['s_name'] = unicode(groupname) |
43 group['s_name'] = unicode(groupname) |
44 Put(group) |
44 Put(group) |
45 _GROUP_CACHE[groupname] = group |
45 _GROUP_CACHE[groupname] = group |
46 |
46 |
47 def set_user_groups(user, groups): |
47 def set_user_groups(user, groups): |
70 if rschema == 'identity': |
70 if rschema == 'identity': |
71 continue |
71 continue |
72 dsrelation = 'o_' + rschema.type |
72 dsrelation = 'o_' + rschema.type |
73 if not dsrelation in gaeentity: |
73 if not dsrelation in gaeentity: |
74 gaeentity[dsrelation] = None |
74 gaeentity[dsrelation] = None |
75 |
75 |
76 def fix_entities(schema): |
76 def fix_entities(schema): |
77 for etype in ('EUser', 'EGroup'): |
77 for etype in ('CWUser', 'CWGroup'): |
78 eschema = schema.eschema(etype) |
78 eschema = schema.eschema(etype) |
79 for gaeentity in Query(etype).Run(): |
79 for gaeentity in Query(etype).Run(): |
80 init_relations(gaeentity, eschema) |
80 init_relations(gaeentity, eschema) |
81 # XXX o_is on EEType entity |
81 # XXX o_is on CWEType entity |
82 gaeentity['s_is'] = Key.from_path('EEType', 'key_' + etype, parent=None) |
82 gaeentity['s_is'] = Key.from_path('CWEType', 'key_' + etype, parent=None) |
83 Put(gaeentity) |
83 Put(gaeentity) |
84 |
84 |
85 def init_persistent_schema(ssession, schema): |
85 def init_persistent_schema(ssession, schema): |
86 execute = ssession.unsafe_execute |
86 execute = ssession.unsafe_execute |
87 rql = ('INSERT EEType X: X name %(name)s, X description %(descr)s,' |
87 rql = ('INSERT CWEType X: X name %(name)s, X description %(descr)s,' |
88 'X final FALSE, X meta %(meta)s') |
88 'X final FALSE, X meta %(meta)s') |
89 eschema = schema.eschema('EEType') |
89 eschema = schema.eschema('CWEType') |
90 execute(rql, {'name': u'EEType', 'descr': unicode(eschema.description), |
90 execute(rql, {'name': u'CWEType', 'descr': unicode(eschema.description), |
91 'meta': eschema.meta}) |
91 'meta': eschema.meta}) |
92 for eschema in schema.entities(): |
92 for eschema in schema.entities(): |
93 if eschema.is_final() or eschema == 'EEType': |
93 if eschema.is_final() or eschema == 'CWEType': |
94 continue |
94 continue |
95 execute(rql, {'name': unicode(eschema), 'meta': eschema.meta, |
95 execute(rql, {'name': unicode(eschema), 'meta': eschema.meta, |
96 'descr': unicode(eschema.description)}) |
96 'descr': unicode(eschema.description)}) |
97 |
97 |
98 def insert_versions(ssession, config): |
98 def insert_versions(ssession, config): |
99 execute = ssession.unsafe_execute |
99 execute = ssession.unsafe_execute |
100 # insert versions |
100 # insert versions |
101 execute('INSERT EProperty X: X pkey %(pk)s, X value%(v)s', |
101 execute('INSERT CWProperty X: X pkey %(pk)s, X value%(v)s', |
102 {'pk': u'system.version.cubicweb', |
102 {'pk': u'system.version.cubicweb', |
103 'v': unicode(config.cubicweb_version())}) |
103 'v': unicode(config.cubicweb_version())}) |
104 for cube in config.cubes(): |
104 for cube in config.cubes(): |
105 execute('INSERT EProperty X: X pkey %(pk)s, X value%(v)s', |
105 execute('INSERT CWProperty X: X pkey %(pk)s, X value%(v)s', |
106 {'pk': u'system.version.%s' % cube, |
106 {'pk': u'system.version.%s' % cube, |
107 'v': unicode(config.cube_version(cube))}) |
107 'v': unicode(config.cube_version(cube))}) |
108 |
|