Skip to content

Commit ec4dfd8

Browse files
author
Silvano Buback
committed
Merge branch 'master' of github.com:globocom/database-as-a-service
2 parents e36f838 + 27d1617 commit ec4dfd8

File tree

8 files changed

+94
-4
lines changed

8 files changed

+94
-4
lines changed

dbaas/account/backends.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@
88
class DbaasBackend(ModelBackend):
99

1010
def has_perm(self, user_obj, perm, obj=None):
11-
11+
#LOG.debug("validating perm %s for user %s" % (perm, user_obj))
1212
if not user_obj.is_active:
1313
return False
1414
else:
15-
return perm in user_obj.get_all_permissions()
15+
return perm in user_obj.get_all_permissions(obj=None)

dbaas/account/helper.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,5 +47,5 @@ def find_ldap_groups_from_user(username=None):
4747
finally:
4848
conn.unbind()
4949
LOG.info("LDAP connection closed")
50-
LOG.debug("ldap groups found for username %s: %s" % (username, groups))
50+
LOG.info("ldap groups found for username %s: %s" % (username, groups))
5151
return groups

dbaas/account/management/__init__.py

Whitespace-only changes.

dbaas/account/management/commands/__init__.py

Whitespace-only changes.
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
# encoding: utf-8
2+
# from datetime import datetime
3+
import sys
4+
import traceback
5+
import logging
6+
from sets import Set
7+
from django.contrib.auth.models import User, Group, Permission
8+
from django.core.management.base import BaseCommand
9+
10+
11+
only_print_errors = True
12+
13+
LOG = logging.getLogger(__name__)
14+
15+
class Command(BaseCommand):
16+
help = u'Fix user roles permissions'
17+
18+
#dba has all permissions in role_reguler
19+
groups_roles = {'role_dba': [u'view_host', u'change_enginetype', u'delete_planattribute', u'add_enginetype',
20+
u'physical.view_databaseinfra', u'change_databaseinfra', u'change_host',
21+
u'delete_auditrequest', u'change_auditchange', u'add_instance',
22+
u'can_manage_quarantine_databases', u'add_planattribute',
23+
u'delete_plan', u'add_databaseinfra', u'view_planattribute',
24+
u'change_planattribute', u'change_auditrequest', u'delete_host',
25+
u'add_host', u'change_plan', u'view_plan', u'change_audit', u'delete_audit',
26+
u'add_audit', u'change_instance', u'view_engine', u'change_engine',
27+
u'delete_databaseinfra', u'add_auditchange', u'add_auditrequest',
28+
u'view_enginetype', u'delete_auditchange', u'add_engine',
29+
u'delete_instance', u'delete_enginetype', u'view_instance', u'delete_engine', u'add_plan'],
30+
'role_regular': [u'add_credential', u'change_credential', u'delete_credential', u'view_credential',
31+
u'add_database', u'change_database', u'delete_database', u'view_database',
32+
u'add_project', u'change_project', u'delete_project', u'view_project']}
33+
34+
def handle(self, *args, **options):
35+
36+
#print "groups_roles: %s" % Command.groups_roles
37+
role_dba = Group.objects.get_or_create(name="role_dba")[0]
38+
role_regular = Group.objects.get_or_create(name="role_regular")[0]
39+
40+
#clean permissions
41+
self.remove_permissions(group=role_dba)
42+
self.remove_permissions(group=role_regular)
43+
44+
#role_regular
45+
codenames = Command.groups_roles['role_regular']
46+
permissions_regular = Permission.objects.filter(codename__in=codenames)
47+
self.add_permissions(group=role_regular, permissions=permissions_regular)
48+
49+
#role_dba
50+
codenames = codenames + Command.groups_roles['role_dba']
51+
permissions_dba = Permission.objects.filter(codename__in=codenames)
52+
self.add_permissions(group=role_dba, permissions=permissions_dba)
53+
54+
def remove_permissions(self, group=None):
55+
print "removing permissions for group %s" % group
56+
[group.permissions.remove(permission) for permission in group.permissions.all()]
57+
print "*" *50
58+
59+
def add_permissions(self, group=None, permissions=None):
60+
print "adding permissions %s to group %s" % (permissions, group)
61+
[group.permissions.add(permission) for permission in permissions]
62+
print "*" *50
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
# -*- coding: utf-8 -*-
2+
import datetime
3+
from south.db import db
4+
from south.v2 import SchemaMigration
5+
from django.db import models
6+
from django.contrib.auth.models import User, Group
7+
8+
class Migration(SchemaMigration):
9+
10+
ROLES = ["role_dba", "role_regular"]
11+
12+
def forwards(self, orm):
13+
14+
[Group.objects.get_or_create(name=role) for role in Migration.ROLES]
15+
16+
17+
def backwards(self, orm):
18+
groups = Group.objects.filter(name__in=Migration.ROLES)
19+
[group.delete for group in groups]
20+
21+
models = {
22+
23+
}
24+
25+
complete_apps = ['account']

dbaas/account/migrations/__init__.py

Whitespace-only changes.

dbaas/account/models.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,10 @@ def user_pre_save(sender, **kwargs):
5252
@receiver(post_save, sender=User)
5353
def user_post_save(sender, **kwargs):
5454
user = kwargs.get('instance')
55-
LOG.debug("user %s post save signal" % user)
55+
created = kwargs.get('created')
56+
if created:
57+
LOG.debug("new user %s created" % user)
58+
sync_ldap_groups_with_user(user=user)
5659

5760

5861
def user_m2m_changed(sender, **kwargs):

0 commit comments

Comments
 (0)