| from core.models import * |
| |
| def handle(user): |
| from core.models import Controller,ControllerSites,ControllerUsers |
| from collections import defaultdict |
| controllers = Controller.objects.all() |
| controller_sitements = ControllerSites.objects.all() |
| controller_site_lookup = defaultdict(list) |
| for controller_sitement in controller_sitements: |
| controller_site_lookup[controller_sitement.site].append(controller_sitement.controller) |
| |
| controller_user_lookup = defaultdict(list) |
| for controller_userment in ControllerUsers.objects.all(): |
| controller_user_lookup[controller_userment.user].append(controller_userment.controller) |
| |
| all_controllers = Controller.objects.filter() |
| if user.is_admin: |
| # admins should have an account at all controllers |
| expected_controllers = controllers |
| else: |
| # normal users should have an account at their site's controllers |
| #expected_controllers = controller_site_lookup[user.site] |
| # users are added to all controllers for now |
| expected_controllers = controllers |
| |
| for expected_controller in expected_controllers: |
| if not user in controller_user_lookup or \ |
| expected_controller not in controller_user_lookup[user]: |
| # add new record |
| ud = ControllerUsers(user=user, controller=expected_controller) |
| ud.save() |
| |