Merge pick up, tweaked role/site/plcore_base or os_manager path when OpenStack not...
[plstackapi.git] / planetstack / core / api / site_privileges.py
1 from types import StringTypes
2 import re
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
9
10
11 def _get_site_privileges(filter):
12     if isinstance(filter, StringTypes) and filter.isdigit():
13         filter = int(filter)
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)
20     else:
21         site_privileges = []
22     return site_privileges
23  
24 def add_site_privilege(auth, fields):
25     user = authenticate(username=auth.get('username'),
26                         password=auth.get('password'))
27
28     users = _get_user(fields.get('user')) 
29     sites = _get_slice(fields.get('site')) 
30     roles = _get_role(fields.get('role'))
31     
32     if users: fields['user'] = users[0]     
33     if slices: fields['site'] = sites[0] 
34     if roles: fields['role'] = roles[0]
35  
36     auth['tenant'] = sites[0].login_base
37     site_privilege = SitePrivilege(**fields)
38     site_privilege.os_manager = OpenStackManager(auth=auth, caller = user) 
39     site_privilege.save()
40     return site_privilege
41
42 def update_site_privilege(auth, id, **fields):
43     return  
44
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)
50
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()
56     return 1
57
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'))
64
65     if users: filter['user'] = users[0]
66     if sites: filter['site'] = sites[0]
67     if roles: filter['role'] = roles[0]
68     
69     site_privileges = _get_site_privileges(filter)
70     return site_privileges             
71         
72
73