Files
test-auth/sso/cron.py

42 lines
1.5 KiB
Python

import logging
from django.contrib.auth.models import User, Group
from eve_api.models import EVEAccount
from sso.models import ServiceAccount, Service
class UpdateServiceGroups():
"""
Cycles through all service accounts and updates group access.
"""
# run daily
run_every = 84600
@property
def _logger(self):
if not hasattr(self, '__logger'):
self.__logger = logging.getLogger(__name__)
return self.__logger
def job(self, args):
if args and len(args) == 1:
services = Service.objects.filter(active=1, id=args[0])
else:
services = Service.objects.filter(active=1)
for serv in services:
self._logger.info('Updating %s service' % serv)
api = serv.api_class
for servacc in ServiceAccount.objects.filter(active=1, service=serv):
self._logger.info('Processing %s' % servacc)
#try:
ret = api.update_groups(servacc.service_uid, servacc.user.groups.all())
if not ret:
if not api.check_uid(servacc.service_uid):
self._logger.error('%s not setup on %s, deleting ServiceAccount record' % (servacc.service_uid, serv))
servacc.delete()
#except:
# self._logger.error('Error updating %s' % servacc)