role base filtering for main admin pages
[plstackapi.git] / plstackapi / core / api / sites.py
1 from types import StringTypes
2 from django.contrib.auth import authenticate
3 from plstackapi.openstack.manager import OpenStackManager    
4 from plstackapi.core.models import Site
5
6
7 def _get_sites(filter):
8     if isinstance(filter, StringTypes) and filter.isdigit():
9         filter = int(filter)
10     if isinstance(filter, int):
11         sites = Site.objects.filter(id=filter)
12     elif isinstance(filter, StringTypes):
13         sites = Site.objects.filter(login_base=filter)
14     elif isinstance(filter, dict):
15         sites = Site.objects.filter(**filter)
16     else:
17         sites = []
18     return sites 
19
20 def add_site(auth, fields):
21     user = authenticate(username=auth.get('username'),
22                         password=auth.get('password'))
23     auth['tenant'] = user.site.login_base
24
25     site = Site(**fields)
26     site.os_manager = OpenStackManager(auth=auth, caller = user)
27     site.save()
28     return site
29
30 def update_site(auth, id, **fields):
31     user = authenticate(username=auth.get('username'),
32                         password=auth.get('password'))
33     auth['tenant'] = user.site.login_base
34
35     sites = _get_sites(id)
36     if not sites:
37         return
38
39     site = Site[0]
40     site.os_manager = OpenStackManager(auth=auth, caller = user)
41     site.update(**fields)
42     return site 
43
44 def delete_site(auth, filter={}):
45     user = authenticate(username=auth.get('username'),
46                         password=auth.get('password'))
47     auth['tenant'] = user.site.login_base
48     sites = _get_sites(id)
49     for site in sites:
50         site.os_manager = OpenStackManager(auth=auth, caller = user)
51         site.delete()
52     return 1
53
54 def get_sites(auth, filter={}):
55     user = authenticate(username=auth.get('username'),
56                         password=auth.get('password'))
57     sites = _get_sites(filter)
58     return sites             
59         
60
61