| @@ -9,15 +9,15 @@ from ._provided import blueprint | |||
| SCOPES = {"esi-corporations.read_corporation_membership.v1"} | |||
| _Member = namedtuple("_Member", ["id", "name"]) | |||
| _Member = namedtuple("_Member", ["id", "name", "roles"]) | |||
| # ... show roles if possible | |||
| # ... sort by seniority | |||
| def get_members(): | |||
| """Return a list of the members of the user's corporation. | |||
| Members are returned as 2-namedtuples of (id, name). An empty list is | |||
| returned if there was some error with tokens. | |||
| Members are returned as 3-namedtuples of (id, name, roles). An empty list | |||
| is returned if there was some error with tokens. | |||
| """ | |||
| token = g.auth.get_token() | |||
| if not token: | |||
| @@ -26,8 +26,10 @@ def get_members(): | |||
| corp_id = g.config.get("corp.id") | |||
| resp = g.eve.esi(token).v2.corporations(corp_id).members.get() | |||
| cids = ",".join(str(item["character_id"]) for item in resp) | |||
| ceo_id = g.eve.esi(token).v2.corporations(corp_id).get()["ceo_id"] | |||
| resp = g.eve.esi(token).v1.characters.names.get(character_ids=cids) | |||
| return [_Member(item["character_id"], item["character_name"]) | |||
| return [_Member(item["character_id"], item["character_name"], | |||
| "CEO" if item["character_id"] == ceo_id else None) | |||
| for item in resp] | |||
| def home(): | |||
| @@ -150,7 +150,7 @@ header nav > ul > li { | |||
| display: inline-block; | |||
| } | |||
| header nav > ul > li:not(:last-child):after { | |||
| header nav > ul > li:not(:last-child)::after { | |||
| content: " \007c"; | |||
| color: #777; | |||
| } | |||
| @@ -175,7 +175,7 @@ footer ul li { | |||
| list-style: none; | |||
| } | |||
| footer ul li:not(:last-child):after { | |||
| footer ul li:not(:last-child)::after { | |||
| content: " \00b7"; | |||
| } | |||
| @@ -251,7 +251,7 @@ footer ul li:not(:last-child):after { | |||
| border-width: 1px; | |||
| } | |||
| #character-options:after, #character-options:before { | |||
| #character-options::after, #character-options::before { | |||
| bottom: 100%; | |||
| left: 20px; | |||
| border: solid transparent; | |||
| @@ -262,13 +262,13 @@ footer ul li:not(:last-child):after { | |||
| pointer-events: none; | |||
| } | |||
| #character-options:after { | |||
| #character-options::after { | |||
| border-bottom-color: black; | |||
| border-width: 10px; | |||
| margin-left: -10px; | |||
| } | |||
| #character-options:before { | |||
| #character-options::before { | |||
| border-bottom-color: #4A4A4A; | |||
| border-width: 12px; | |||
| margin-left: -12px; | |||
| @@ -331,22 +331,30 @@ footer ul li:not(:last-child):after { | |||
| column-count: 2; | |||
| } | |||
| #members-list > li { | |||
| #members-list li { | |||
| margin-bottom: 0.5em; | |||
| } | |||
| #members-list > li a:hover { | |||
| #members-list a:hover { | |||
| text-decoration: none; | |||
| } | |||
| #members-list > li img { | |||
| #members-list img { | |||
| width: 48px; | |||
| height: 48px; | |||
| vertical-align: middle; | |||
| border-width: 1px; | |||
| } | |||
| #members-list > li span { | |||
| #members-list span { | |||
| margin-left: 0.5em; | |||
| vertical-align: middle; | |||
| } | |||
| #members-list em { | |||
| font-size: 90%; | |||
| } | |||
| #members-list em::before { | |||
| content: ", "; | |||
| } | |||
| @@ -7,7 +7,7 @@ | |||
| <a href="${g.eve.image.character(member.id, 1024)}"> | |||
| <img class="styled-border" title="${member.name}" alt="${member.name}'s Portrait" src="${g.eve.image.character(member.id, 256)}"/> | |||
| </a> | |||
| <span>${member.name}</span> | |||
| <span>${member.name} <em>${member.roles}</em></span> | |||
| </li> | |||
| % endfor | |||
| </ul> | |||