diff --git a/eveonline/forms.py b/eveonline/forms.py index ff081104..44b1138e 100644 --- a/eveonline/forms.py +++ b/eveonline/forms.py @@ -7,13 +7,19 @@ from eveonline.managers import EveManager class UpdateKeyForm(forms.Form): api_id = forms.CharField(max_length=254, required=True, label="Key ID") api_key = forms.CharField(max_length=254, required=True, label="Verification Code") - is_blue = forms.BooleanField(label="Blue to alliance") + is_blue = forms.BooleanField(label="Blue to alliance", required=False) def clean(self): if EveManager.check_if_api_key_pair_exist(self.cleaned_data['api_id']): raise forms.ValidationError(u'API key already exist') - if not self.cleaned_data['is_blue']: + check_blue = False + try: + check_blue = self.cleaned_data['is_blue'] + except: + pass + + if not check_blue: if not EveApiManager.check_api_is_type_account(self.cleaned_data['api_id'], self.cleaned_data['api_key']): raise forms.ValidationError(u'API not of type account') diff --git a/eveonline/views.py b/eveonline/views.py index 87bf7cf9..4a7b0410 100644 --- a/eveonline/views.py +++ b/eveonline/views.py @@ -17,6 +17,21 @@ from util.common_task import deactivate_services from util.common_task import generate_corp_group_name +def disable_alliance_member(user, char_id): + remove_member_permission(user, 'alliance_member') + remove_user_from_group(user, settings.DEFAULT_ALLIANCE_GROUP) + remove_user_from_group(user, + generate_corp_group_name( + EveManager.get_character_by_id(char_id).corporation_name)) + deactivate_services(user) + + +def disable_blue_member(user): + remove_member_permission(user, 'blue_member') + remove_user_from_group(user, settings.DEFAULT_BLUE_GROUP) + deactivate_services(user) + + @login_required def add_api_key(request): if request.method == 'POST': @@ -57,7 +72,10 @@ def api_key_removal(request, api_id): if character.character_id == authinfo.main_char_id: if character.api_id == api_id: # TODO: Remove servies also - AuthServicesInfoManager.update_main_char_Id("", request.user) + if authinfo.is_blue: + disable_blue_member(request.user) + else: + disable_alliance_member(request.user, authinfo.main_char_id) EveManager.delete_api_key_pair(api_id, request.user.id) EveManager.delete_characters_by_api_id(api_id, request.user.id) @@ -94,17 +112,10 @@ def main_character_change(request, char_id): else: # TODO: disable serivces if check_if_user_has_permission(request.user, 'alliance_member'): - remove_member_permission(request.user, 'alliance_member') - remove_user_from_group(request.user, settings.DEFAULT_ALLIANCE_GROUP) - remove_user_from_group(request.user, - generate_corp_group_name( - EveManager.get_character_by_id(previousmainid).corporation_name)) - deactivate_services(request.user) + disable_alliance_member(request.user, previousmainid) if check_if_user_has_permission(request.user, 'blue_member'): - remove_member_permission(request.user, 'blue_member') - remove_user_from_group(request.user, settings.DEFAULT_BLUE_GROUP) - deactivate_services(request.user) + disable_blue_member(request.user) return HttpResponseRedirect("/characters") return HttpResponseRedirect("/characters") diff --git a/util/__init__.py b/util/__init__.py index 7388403c..8d5057d9 100644 --- a/util/__init__.py +++ b/util/__init__.py @@ -7,6 +7,7 @@ from django.conf import settings def bootstrap_permissions(): ct = ContentType.objects.get_for_model(User) + Permission.objects.get_or_create(codename="alliance_member", content_type=ct, name="alliance_member") Permission.objects.get_or_create(codename="group_management", content_type=ct, name="group_management") Permission.objects.get_or_create(codename="jabber_broadcast", content_type=ct, name="jabber_broadcast") Permission.objects.get_or_create(codename="human_resources", content_type=ct, name="human_resources") @@ -19,22 +20,21 @@ def add_member_permission(user, permission): ct = ContentType.objects.get_for_model(User) stored_permission, created = Permission.objects.get_or_create(codename=permission, content_type=ct, name=permission) - - if User.objects.filter(username=user.username).exists(): - user = User.objects.get(username=user.username) - user.user_permissions.add(stored_permission) - user.save() + user = User.objects.get(username=user.username) + user.user_permissions.add(stored_permission) + user.save() def remove_member_permission(user, permission): ct = ContentType.objects.get_for_model(User) stored_permission, created = Permission.objects.get_or_create(codename=permission, content_type=ct, name=permission) - if User.objects.filter(username=user.username).exists(): - user = User.objects.get(username=user.username) - if user.has_perm(permission): - user.user_permissions.remove(stored_permission) - user.save() + + user = User.objects.get(username=user.username) + + if user.has_perm('auth.' + permission): + user.user_permissions.remove(stored_permission) + user.save() def check_if_user_has_permission(user, permission):