From 308dc9191f5c90e532baffa893da9c0b1d6a2662 Mon Sep 17 00:00:00 2001 From: Adarnof Date: Thu, 23 Feb 2017 10:40:48 -0500 Subject: [PATCH] Create v1 Character ESI client for names lookup Closes #731 Alter member sorting to put registered characters ahead of unregistered Conditionally pluralize Main Characters on template --- corputils/models.py | 6 +++++- corputils/templates/corputils/corpstats.html | 2 +- corputils/views.py | 5 ++++- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/corputils/models.py b/corputils/models.py index 11d49a76..6f04238b 100644 --- a/corputils/models.py +++ b/corputils/models.py @@ -52,6 +52,7 @@ class CorpStats(models.Model): # the swagger spec doesn't have a maxItems count # manual testing says we can do over 350, but let's not risk it member_id_chunks = [member_ids[i:i + 255] for i in range(0, len(member_ids), 255)] + c = self.token.get_esi_client(Character='v1') # ccplease bump versions of whole resources member_name_chunks = [c.Character.get_characters_names(character_ids=id_chunk).result() for id_chunk in member_id_chunks] member_list = {} @@ -163,7 +164,10 @@ class CorpStats(models.Model): def get_member_objects(self, user): show_apis = self.show_apis(user) - return sorted([CorpStats.MemberObject(id, name, show_apis=show_apis) for id, name in self.members.items()], key=attrgetter('main_user', 'character_name')) + member_list = [CorpStats.MemberObject(id, name, show_apis=show_apis) for id, name in self.members.items()] + outlist = sorted([m for m in member_list if m.main_user], key=attrgetter('main_user', 'character_name')) + outlist = outlist + sorted([m for m in member_list if not m.main_user], key=attrgetter('character_name')) + return outlist def can_update(self, user): return user.is_superuser or user == self.token.user diff --git a/corputils/templates/corputils/corpstats.html b/corputils/templates/corputils/corpstats.html index 9f26a871..df1f0b76 100644 --- a/corputils/templates/corputils/corpstats.html +++ b/corputils/templates/corputils/corpstats.html @@ -25,7 +25,7 @@
- {% trans "API Index: " %} {{ corpstats.total_users }} Main Characters + {% trans "API Index: " %} {{ corpstats.total_users }} Main Character{{ corpstats.total_users|pluralize }}
{{ corpstats.registered_members }}/{{ corpstats.total_members }} diff --git a/corputils/views.py b/corputils/views.py index ab839b72..31f5cc1a 100644 --- a/corputils/views.py +++ b/corputils/views.py @@ -46,7 +46,10 @@ def corpstats_add(request, token): 'corporation_id'] corp = EveCorporationInfo.objects.get(corporation_id=corp_id) cs = CorpStats.objects.create(token=token, corp=corp) - cs.update() + try: + cs.update() + except HTTPError as e: + messages.error(request, str(e)) assert cs.pk # ensure update was successful if CorpStats.objects.filter(pk=cs.pk).visible_to(request.user).exists(): return redirect('corputils:view_corp', corp_id=corp.corporation_id)