Show More
@@ -0,0 +1,56 b'' | |||||
|
1 | # -*- coding: utf-8 -*- | |||
|
2 | ||||
|
3 | # Copyright (C) 2010-2017 RhodeCode GmbH | |||
|
4 | # | |||
|
5 | # This program is free software: you can redistribute it and/or modify | |||
|
6 | # it under the terms of the GNU Affero General Public License, version 3 | |||
|
7 | # (only), as published by the Free Software Foundation. | |||
|
8 | # | |||
|
9 | # This program is distributed in the hope that it will be useful, | |||
|
10 | # but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
|
11 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
|
12 | # GNU General Public License for more details. | |||
|
13 | # | |||
|
14 | # You should have received a copy of the GNU Affero General Public License | |||
|
15 | # along with this program. If not, see <http://www.gnu.org/licenses/>. | |||
|
16 | # | |||
|
17 | # This program is dual-licensed. If you wish to learn more about the | |||
|
18 | # RhodeCode Enterprise Edition, including its added features, Support services, | |||
|
19 | # and proprietary license terms, please see https://rhodecode.com/licenses/ | |||
|
20 | ||||
|
21 | import logging | |||
|
22 | ||||
|
23 | log = logging.getLogger(__name__) | |||
|
24 | ||||
|
25 | ||||
|
26 | def create_default_permissions(_SESSION, db): | |||
|
27 | for p in db.Permission.PERMS: | |||
|
28 | if not db.Permission.get_by_key(p[0]): | |||
|
29 | new_perm = db.Permission() | |||
|
30 | new_perm.permission_name = p[0] | |||
|
31 | new_perm.permission_longname = p[0] # translation err with p[1] | |||
|
32 | _SESSION().add(new_perm) | |||
|
33 | ||||
|
34 | ||||
|
35 | def create_default_object_permission(_SESSION, db): | |||
|
36 | ||||
|
37 | obj = db.User.get_by_username(db.User.DEFAULT_USER) | |||
|
38 | obj_perms = db.UserToPerm.query().filter(db.UserToPerm.user == obj).all() | |||
|
39 | ||||
|
40 | def _get_group(perm_name): | |||
|
41 | return '.'.join(perm_name.split('.')[:1]) | |||
|
42 | ||||
|
43 | defined_perms_groups = map( | |||
|
44 | _get_group, (x.permission.permission_name for x in obj_perms)) | |||
|
45 | log.debug('GOT ALREADY DEFINED:%s', obj_perms) | |||
|
46 | ||||
|
47 | # for every default permission that needs to be created, we check if | |||
|
48 | # it's group is already defined, if it's not we create default perm | |||
|
49 | for perm_name in db.Permission.DEFAULT_USER_PERMISSIONS: | |||
|
50 | gr = _get_group(perm_name) | |||
|
51 | if gr not in defined_perms_groups: | |||
|
52 | log.debug('GR:%s not found, creating permission %s', gr, perm_name) | |||
|
53 | new_perm = db.UserToPerm() | |||
|
54 | new_perm.user = obj | |||
|
55 | new_perm.permission = db.Permission.get_by_key(perm_name) | |||
|
56 | _SESSION().add(new_perm) |
@@ -1,20 +1,11 b'' | |||||
1 | import logging |
|
1 | import logging | |
2 | import datetime |
|
|||
3 |
|
2 | |||
4 | from sqlalchemy import * |
|
3 | from sqlalchemy import * | |
5 | from sqlalchemy.exc import DatabaseError |
|
|||
6 | from sqlalchemy.orm import relation, backref, class_mapper, joinedload |
|
|||
7 | from sqlalchemy.orm.session import Session |
|
|||
8 | from sqlalchemy.ext.declarative import declarative_base |
|
|||
9 |
|
4 | |||
10 | from rhodecode.lib.dbmigrate.migrate import * |
|
|||
11 | from rhodecode.lib.dbmigrate.migrate.changeset import * |
|
|||
12 | from rhodecode.lib.utils2 import str2bool |
|
|||
13 |
|
||||
14 | from rhodecode.model.meta import Base |
|
|||
15 | from rhodecode.model import meta |
|
5 | from rhodecode.model import meta | |
16 | from rhodecode.lib.dbmigrate.versions import _reset_base, notify |
|
6 | from rhodecode.lib.dbmigrate.versions import _reset_base, notify | |
17 |
|
7 | from rhodecode.lib.dbmigrate.utils import ( | ||
|
8 | create_default_object_permission, create_default_permissions) | |||
18 | log = logging.getLogger(__name__) |
|
9 | log = logging.getLogger(__name__) | |
19 |
|
10 | |||
20 |
|
11 | |||
@@ -36,12 +27,13 b' def downgrade(migrate_engine):' | |||||
36 |
|
27 | |||
37 |
|
28 | |||
38 | def fixups(models, _SESSION): |
|
29 | def fixups(models, _SESSION): | |
39 |
# |
|
30 | # create default permissions | |
40 | from rhodecode.model.permission import PermissionModel |
|
31 | create_default_permissions(_SESSION, models) | |
41 | PermissionModel(_SESSION()).create_permissions() |
|
32 | log.info('created default global permissions definitions') | |
42 | _SESSION().commit() |
|
33 | _SESSION().commit() | |
43 |
|
34 | |||
44 | res = PermissionModel(_SESSION()).create_default_user_permissions( |
|
35 | # fix default object permissions | |
45 | models.User.DEFAULT_USER) |
|
36 | create_default_object_permission(_SESSION, models) | |
46 | log.info('created default permission %s', res) |
|
37 | ||
|
38 | log.info('created default permission') | |||
47 | _SESSION().commit() |
|
39 | _SESSION().commit() |
@@ -1,20 +1,10 b'' | |||||
1 | import logging |
|
1 | import logging | |
2 | import datetime |
|
|||
3 |
|
2 | |||
4 | from sqlalchemy import * |
|
3 | from sqlalchemy import * | |
5 | from sqlalchemy.exc import DatabaseError |
|
|||
6 | from sqlalchemy.orm import relation, backref, class_mapper, joinedload |
|
|||
7 | from sqlalchemy.orm.session import Session |
|
|||
8 | from sqlalchemy.ext.declarative import declarative_base |
|
|||
9 |
|
||||
10 | from rhodecode.lib.dbmigrate.migrate import * |
|
|||
11 | from rhodecode.lib.dbmigrate.migrate.changeset import * |
|
|||
12 | from rhodecode.lib.utils2 import str2bool |
|
|||
13 |
|
||||
14 | from rhodecode.model.meta import Base |
|
|||
15 | from rhodecode.model import meta |
|
4 | from rhodecode.model import meta | |
16 | from rhodecode.lib.dbmigrate.versions import _reset_base, notify |
|
5 | from rhodecode.lib.dbmigrate.versions import _reset_base, notify | |
17 |
|
6 | from rhodecode.lib.dbmigrate.utils import ( | ||
|
7 | create_default_object_permission, create_default_permissions) | |||
18 | log = logging.getLogger(__name__) |
|
8 | log = logging.getLogger(__name__) | |
19 |
|
9 | |||
20 |
|
10 | |||
@@ -28,15 +18,20 b' def upgrade(migrate_engine):' | |||||
28 |
|
18 | |||
29 | fixups(db_4_5_0_0, meta.Session) |
|
19 | fixups(db_4_5_0_0, meta.Session) | |
30 |
|
20 | |||
|
21 | ||||
31 | def downgrade(migrate_engine): |
|
22 | def downgrade(migrate_engine): | |
32 | meta = MetaData() |
|
23 | meta = MetaData() | |
33 | meta.bind = migrate_engine |
|
24 | meta.bind = migrate_engine | |
34 |
|
25 | |||
|
26 | ||||
35 | def fixups(models, _SESSION): |
|
27 | def fixups(models, _SESSION): | |
36 |
# |
|
28 | # create default permissions | |
37 | from rhodecode.model.permission import PermissionModel |
|
29 | create_default_permissions(_SESSION, models) | |
38 | PermissionModel(_SESSION()).create_permissions() |
|
30 | log.info('created default global permissions definitions') | |
|
31 | _SESSION().commit() | |||
39 |
|
32 | |||
40 | res = PermissionModel(_SESSION()).create_default_user_permissions( |
|
33 | # fix default object permissions | |
41 | models.User.DEFAULT_USER) |
|
34 | create_default_object_permission(_SESSION, models) | |
|
35 | ||||
|
36 | log.info('created default permission') | |||
42 | _SESSION().commit() |
|
37 | _SESSION().commit() |
General Comments 0
You need to be logged in to leave comments.
Login now