Controller replaces Deployment
[plstackapi.git] / planetstack / model_policies / model_policy_User.py
1 from core.models import *
2
3 def handle(user):
4         from core.models import Controller,ControllerSites,ControllerUsers
5         from collections import defaultdict
6         controllers = Controller.objects.all()
7         controller_sitements = ControllerSites.objects.all()
8         controller_site_lookup = defaultdict(list)
9         for controller_sitement in controller_sitements:
10                 controller_site_lookup[controller_sitement.site].append(controller_sitement.controller)
11
12         controller_user_lookup = defaultdict(list)
13         for controller_userment in ControllerUsers.objects.all():
14                 controller_user_lookup[controller_userment.user].append(controller_userment.controller)
15    
16         all_controllers = Controller.objects.filter() 
17         if user.is_admin:
18                 # admins should have an account at all controllers
19                 expected_controllers = controllers
20         else:
21                 # normal users should have an account at their site's controllers
22                 #expected_controllers = controller_site_lookup[user.site]
23                 # users are added to all controllers for now
24                 expected_controllers = controllers        
25
26         for expected_controller in expected_controllers:
27                 if not user in controller_user_lookup or \
28                   expected_controller not in controller_user_lookup[user]: 
29                         # add new record
30                         ud = ControllerUsers(user=user, controller=expected_controller)
31                         ud.save()    
32