From b6c402f4fa848b6443315aa0f778fd250cd97a61 Mon Sep 17 00:00:00 2001 From: Andrew Williams Date: Sun, 14 Mar 2010 02:27:16 +0000 Subject: [PATCH] Fixes the cron jobs and account validation, enables account deletion --- eve_api/api_puller/accounts.py | 11 +++++++++++ eve_api/cron.py | 1 + sso/cron.py | 13 +++---------- sso/models.py | 11 ++++++----- test.py | 11 +++++++---- 5 files changed, 28 insertions(+), 19 deletions(-) diff --git a/eve_api/api_puller/accounts.py b/eve_api/api_puller/accounts.py index 383199b..1620d61 100755 --- a/eve_api/api_puller/accounts.py +++ b/eve_api/api_puller/accounts.py @@ -28,6 +28,17 @@ def import_eve_account(api_key, user_id): #print account_doc.body dom = minidom.parseString(account_doc.body) + + if dom.getElementsByTagName('error'): + try: + account = EVEAccount.objects.get(id=user_id) + except EVEAccount.DoesNotExist: + return + + account.api_status = API_STATUS_OTHER_ERROR + account.save() + return + characters_node_children = dom.getElementsByTagName('rowset')[0].childNodes # Create or retrieve the account last to make sure everything diff --git a/eve_api/cron.py b/eve_api/cron.py index f004bfb..920850e 100644 --- a/eve_api/cron.py +++ b/eve_api/cron.py @@ -3,6 +3,7 @@ import logging from django_cron import cronScheduler, Job from eve_api.models.api_player import EVEAccount, EVEPlayerCorporation import eve_api.api_puller.accounts +from eve_api.api_exceptions import APIAuthException, APINoUserIDException class UpdateAPIs(Job): """ diff --git a/sso/cron.py b/sso/cron.py index 94344cc..2a9c614 100644 --- a/sso/cron.py +++ b/sso/cron.py @@ -26,23 +26,16 @@ class RemoveInvalidUsers(Job): # Check each service account and delete access if they're not allowed for servacc in ServiceAccount.objects.filter(user=user): - - print servacc.service.groups.all() - print user.groups.all() - allowedgroups = servacc.service.groups.all() - - print set(servacc.service.groups.all()) & set(servacc.service.groups.all()) - - if not (set(servacc.service.groups.all()) & set(servacc.service.groups.all())): + if not (set(user.groups.all()) & set(servacc.service.groups.all())): print "User %s is not in allowed group for %s, deleting account" % (user.username, servacc.service) - #servacc.delete() + servacc.delete() pass # For users set to not active, delete all accounts if not user.is_active: print "User %s is inactive, deleting related service accounts" % user.username for servacc in ServiceAccount.objects.filter(user=user): - #servacc.delete() + servacc.delete() pass diff --git a/sso/models.py b/sso/models.py index d7fe891..2328db7 100644 --- a/sso/models.py +++ b/sso/models.py @@ -42,22 +42,23 @@ class SSOUser(models.Model): # Create a list of Char groups chargroups = [] for eacc in EVEAccount.objects.filter(user=self.user): - for char in eacc.characters.all(): - if char.corporation.group: - chargroups.append(char.corporation.group) + if eacc.api_status == 1: + for char in eacc.characters.all(): + if char.corporation.group: + chargroups.append(char.corporation.group) # Generate the list of groups to add/remove delgroups = set(set(self.user.groups.all()) & set(corpgroups)) - set(chargroups) addgroups = set(chargroups) - set(set(self.user.groups.all()) & set(corpgroups)) - print "Del:", delgroups for g in delgroups: self.user.groups.remove(g) - print "Add:", addgroups for g in addgroups: self.user.groups.add(g) + print "%s, Add: %s, Del: %s, Current: %s" % (self.user, addgroups, delgroups, self.user.groups.all()) + def __str__(self): return self.user.__str__() diff --git a/test.py b/test.py index 149338d..2d62731 100644 --- a/test.py +++ b/test.py @@ -1,9 +1,12 @@ import os os.environ['DJANGO_SETTINGS_MODULE'] = 'settings' -from sso.models import Service -from sso.services.jabber import JabberService +from eve_api.cron import UpdateAPIs -b = JabberService() +b = UpdateAPIs() +b.job() -print b.check_user('matalok') +from sso.cron import RemoveInvalidUsers + +b = RemoveInvalidUsers() +b.job()