From ae3f5e5675f20ca22c1f12c6d340043a16cfaddf Mon Sep 17 00:00:00 2001 From: Andrew Williams Date: Tue, 19 Jul 2011 09:48:53 +0100 Subject: [PATCH] Move API key percentage to the model --- app/eve_api/models/corporation.py | 22 +++++++++++++++++++ app/eve_api/templates/eve_api/character.html | 2 +- .../templates/eve_api/corporation.html | 6 ++--- app/eve_api/views.py | 9 ++------ 4 files changed, 28 insertions(+), 11 deletions(-) diff --git a/app/eve_api/models/corporation.py b/app/eve_api/models/corporation.py index 8a33f12..9aa15fc 100644 --- a/app/eve_api/models/corporation.py +++ b/app/eve_api/models/corporation.py @@ -1,6 +1,7 @@ from django.db import models from django.contrib.auth.models import Group from eve_api.models import EVEAPIModel +from eve_api.app_defines import * class EVEPlayerCorporation(EVEAPIModel): """ @@ -29,6 +30,27 @@ class EVEPlayerCorporation(EVEAPIModel): group = models.ForeignKey(Group, blank=True, null=True) + @property + def directors(self): + """ Return a queryset of corporate Directors """ + return self.eveplayercharacter_set.filter(roles__name="roleDirector") + + @property + def api_keys(self): + """ Returns the number of characters with stored API keys """ + return self.eveplayercharacter_set.filter(eveaccount__isnull=False).count() + + @property + def api_key_coverage(self): + """ Returns the percentage coverage of API keys for the corporation's members """ + + # Check if we have a full director key, see if we can base our assumptions off what is in auth already + if self.directors.filter(eveaccount__isnull=False, eveaccount__api_keytype=API_KEYTYPE_FULL).count(): + membercount = self.eveplayercharacter_set.count() + else: + membercount = self.member_count + return (float(self.api_keys) / membercount) * 100 + @models.permalink def get_absolute_url(self): return ('eveapi-corporation', [self.pk]) diff --git a/app/eve_api/templates/eve_api/character.html b/app/eve_api/templates/eve_api/character.html index 08af934..ffad033 100644 --- a/app/eve_api/templates/eve_api/character.html +++ b/app/eve_api/templates/eve_api/character.html @@ -12,7 +12,7 @@
- {{ character.corporation.ticker }} + {{ character.corporation.ticker }}
diff --git a/app/eve_api/templates/eve_api/corporation.html b/app/eve_api/templates/eve_api/corporation.html index c686e65..e5deece 100644 --- a/app/eve_api/templates/eve_api/corporation.html +++ b/app/eve_api/templates/eve_api/corporation.html @@ -11,10 +11,10 @@ diff --git a/app/eve_api/views.py b/app/eve_api/views.py index f5b3627..66f86cd 100644 --- a/app/eve_api/views.py +++ b/app/eve_api/views.py @@ -175,13 +175,8 @@ def eveapi_corporation(request, corporationid): """ corporation = get_object_or_404(EVEPlayerCorporation, id=corporationid) - if request.user.is_superuser: + if corporation.eveplayercharacter_set.filter(eveaccount__user=request.user, roles__name="Director").count() or request.user.is_superuser: view_members = True - - memberdata = corporation.eveplayercharacter_set.all() - if corporation.member_count: - api_members = memberdata.filter(eveaccount__isnull=False).count() - percentage = (float(api_members) / corporation.member_count) * 100 - members = memberdata.order_by('corporation_date').only('id', 'name', 'corporation_date') + members = corporation.eveplayercharacter_set.order_by('corporation_date').only('id', 'name', 'corporation_date') return render_to_response('eve_api/corporation.html', locals(), context_instance=RequestContext(request))