1 from types import StringTypes
3 from django.contrib.auth import authenticate
4 from openstack.manager import OpenStackManager
5 from core.models import SitePrivilege
6 from core.api.users import _get_users
7 from core.api.sites import _get_sites
8 from core.api.roles import _get_roles
11 def _get_site_privileges(filter):
12 if isinstance(filter, StringTypes) and filter.isdigit():
14 if isinstance(filter, int):
15 site_privileges = SitePrivilege.objects.filter(id=filter)
16 elif isinstance(filter, StringTypes):
17 site_privileges = SitePrivilege.objects.filter(name=filter)
18 elif isinstance(filter, dict):
19 site_privileges = SitePrivilege.objects.filter(**filter)
22 return site_privileges
24 def add_site_privilege(auth, fields):
25 user = authenticate(username=auth.get('username'),
26 password=auth.get('password'))
28 users = _get_user(fields.get('user'))
29 sites = _get_slice(fields.get('site'))
30 roles = _get_role(fields.get('role'))
32 if users: fields['user'] = users[0]
33 if slices: fields['site'] = sites[0]
34 if roles: fields['role'] = roles[0]
36 auth['tenant'] = sites[0].login_base
37 site_privilege = SitePrivilege(**fields)
38 site_privilege.os_manager = OpenStackManager(auth=auth, caller = user)
42 def update_site_privilege(auth, id, **fields):
45 def delete_site_privilege(auth, filter={}):
46 user = authenticate(username=auth.get('username'),
47 password=auth.get('password'))
48 auth['tenant'] = user.site.login_base
49 manager = OpenStackManager(auth=auth, caller = user)
51 site_privileges = _get_site_privileges(filter)
52 for site_privilege in site_privileges:
53 auth['tenant'] = user.site.login_base
54 site_privilege.os_manager = OpenStackManager(auth=auth, caller = user)
55 site_privilege.delete()
58 def get_site_privileges(auth, filter={}):
59 user = authenticate(username=auth.get('username'),
60 password=auth.get('password'))
61 users = _get_users(filter.get('user'))
62 sites = _get_slices(filter.get('site'))
63 roles = _get_roles(filter.get('role'))
65 if users: filter['user'] = users[0]
66 if sites: filter['site'] = sites[0]
67 if roles: filter['role'] = roles[0]
69 site_privileges = _get_site_privileges(filter)
70 return site_privileges