-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()
+ from core.models import Controller, ControllerSite, ControllerUser, User
+ from collections import defaultdict
+
+ # user = User.get(user_id)
+
+ controller_users = ControllerUser.objects.filter(user=user)
+ existing_controllers = [cu.controller for cu in controller_users]
+ all_controllers = Controller.objects.all()
+ for controller in all_controllers:
+ if controller not in existing_controllers:
+ ctrl_user = ControllerUser(controller=controller, user=user)
+ ctrl_user.save()