Handling missing settings.CORP_ID in alliance mode, and api-scope error in corporation mode. Also fixing visual on the corputilsearchview.

This commit is contained in:
Ydmir 2016-01-31 11:29:54 +01:00
parent 185805ecc1
commit 9041f0e7c7
6 changed files with 41 additions and 19 deletions

View File

@ -449,7 +449,7 @@ LOGGING = {
'handlers': ['log_file', 'console'], 'handlers': ['log_file', 'console'],
'level': 'DEBUG', 'level': 'DEBUG',
}, },
'corputil': { 'corputils': {
'handlers': ['log_file', 'console'], 'handlers': ['log_file', 'console'],
'level': 'DEBUG', 'level': 'DEBUG',
}, },

View File

@ -165,9 +165,9 @@ urlpatterns = patterns('',
#corputils #corputils
url(r'^corputils/$', 'corputils.views.corp_member_view', name='auth_corp_member_view'), url(r'^corputils/$', 'corputils.views.corp_member_view', name='auth_corp_member_view'),
url(r'^corputils/(?P<corpid>[0-9]+)/$', 'corputils.views.corp_member_view', name='auth_corp_member_view'), url(r'^corputils/(?P<corpid>[0-9]+)/$', 'corputils.views.corp_member_view'),
url(r'^corputils/search/$', 'corputils.views.corputils_search', name="auth_corputils_search"), url(r'^corputils/search/$', 'corputils.views.corputils_search', name="auth_corputils_search"),
url(r'^corputils/search/(?P<corpid>[0-9]+)/$', 'corputils.views.corputils_search', name="auth_corputils_search"), url(r'^corputils/search/(?P<corpid>[0-9]+)/$', 'corputils.views.corputils_search'),
# FLEET FITTINGS # FLEET FITTINGS
url(r'^fits/$', 'services.views.fleet_fits', name='auth_fleet_fits'), url(r'^fits/$', 'services.views.fleet_fits', name='auth_fleet_fits'),

View File

@ -15,6 +15,7 @@ from eveonline.models import EveAllianceInfo
from eveonline.models import EveCharacter from eveonline.models import EveCharacter
from authentication.models import AuthServicesInfo from authentication.models import AuthServicesInfo
from forms import CorputilsSearchForm from forms import CorputilsSearchForm
from evelink.api import APIError
import logging import logging
@ -24,14 +25,31 @@ logger = logging.getLogger(__name__)
# Because corp-api only exist for the executor corp, this function will only be available in corporation mode. # Because corp-api only exist for the executor corp, this function will only be available in corporation mode.
@login_required @login_required
@permission_required('auth.corputils') @permission_required('auth.corputils')
def corp_member_view(request, corpid = settings.CORP_ID): def corp_member_view(request, corpid = None):
logger.debug("corp_member_view called by user %s" % request.user) logger.debug("corp_member_view called by user %s" % request.user)
if not settings.IS_CORP:
alliance = EveAllianceInfo.objects.get(alliance_id=settings.ALLIANCE_ID)
alliancecorps = EveCorporationInfo.objects.filter(alliance=alliance)
membercorp_list = [(int(membercorp.corporation_id), str(membercorp.corporation_name)) for membercorp in alliancecorps]
membercorp_list.sort(key=lambda tup: tup[1])
if not corpid:
if(settings.CORP_ID):
corpid = settings.CORP_ID
else:
corpid = membercorp_list[0][0]
corp = EveCorporationInfo.objects.get(corporation_id=corpid) corp = EveCorporationInfo.objects.get(corporation_id=corpid)
Player = namedtuple("Player", ["main", "maincorp", "maincorpid", "altlist"]) Player = namedtuple("Player", ["main", "maincorp", "maincorpid", "altlist"])
if settings.IS_CORP: if settings.IS_CORP:
member_list = EveApiManager.get_corp_membertracking(settings.CORP_API_ID, settings.CORP_API_VCODE) try:
member_list = EveApiManager.get_corp_membertracking(settings.CORP_API_ID, settings.CORP_API_VCODE)
except APIError:
logger.debug("Corp API does not have membertracking scope, using EveWho data instead.")
member_list = EveWhoManager.get_corporation_members(corpid)
else: else:
member_list = EveWhoManager.get_corporation_members(corpid) member_list = EveWhoManager.get_corporation_members(corpid)
@ -64,11 +82,6 @@ def corp_member_view(request, corpid = settings.CORP_ID):
if not settings.IS_CORP: if not settings.IS_CORP:
alliance = EveAllianceInfo.objects.get(alliance_id=settings.ALLIANCE_ID)
alliancecorps = EveCorporationInfo.objects.filter(alliance=alliance)
membercorp_list = [(int(membercorp.corporation_id), str(membercorp.corporation_name)) for membercorp in alliancecorps]
membercorp_list.sort(key=lambda tup: tup[1])
context = {"membercorp_list": membercorp_list, context = {"membercorp_list": membercorp_list,
"corp": corp, "corp": corp,
"characters_with_api": sorted(characters_with_api.items()), "characters_with_api": sorted(characters_with_api.items()),
@ -102,7 +115,11 @@ def corputils_search(request, corpid=settings.CORP_ID):
logger.debug("Searching for player with character name %s for user %s" % (searchstring, request.user)) logger.debug("Searching for player with character name %s for user %s" % (searchstring, request.user))
if settings.IS_CORP: if settings.IS_CORP:
member_list = EveApiManager.get_corp_membertracking(settings.CORP_API_ID, settings.CORP_API_VCODE) try:
member_list = EveApiManager.get_corp_membertracking(settings.CORP_API_ID, settings.CORP_API_VCODE)
except APIError:
logger.debug("Corp API does not have membertracking scope, using EveWho data instead.")
member_list = EveWhoManager.get_corporation_members(corpid)
else: else:
member_list = EveWhoManager.get_corporation_members(corpid) member_list = EveWhoManager.get_corporation_members(corpid)

View File

@ -4240,6 +4240,10 @@ textarea.input-group-sm > .form-control, textarea.input-group-sm > .input-group-
line-height: 20px line-height: 20px
} }
.navbar-wide {
width: 100%;
}
@media (max-width: 767px) { @media (max-width: 767px) {
.navbar-nav .open .dropdown-menu { .navbar-nav .open .dropdown-menu {
position: static; position: static;

View File

@ -45,7 +45,7 @@
</div> </div>
<nav class="navbar navbar-default"> <nav class="navbar navbar-default">
<div class="container-fluid"> <div class="container-fluid">
<ul class="nav navbar-nav" style="width: 100%"> <ul class="nav navbar-nav navbar-wide">
{% if membercorp_list %} {% if membercorp_list %}
<li class="dropdown"> <li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Choose corporation <span class="caret"></span></a> <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Choose corporation <span class="caret"></span></a>

View File

@ -8,18 +8,19 @@
{% block extra_css %}{% endblock extra_css %} {% block extra_css %}{% endblock extra_css %}
{% block content %} {% block content %}
<div class="col-lg-8"> <div class="col-lg-12">
{% if perms.auth.corputils %} {% if perms.auth.corputils %}
<h1 class="page-header text-center">Member Search Results
</h1>
<h2 class="text-center"><a href="{% url 'auth_corp_member_view' %}{{ corp.corporation_id }}">{{ corp.corporation_name }}</a></h2>
<div class="container-fluid">
<div class="panel panel-default"> <div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">Search Results</h3>
</div>
<nav class="navbar navbar-default"> <nav class="navbar navbar-default">
<div class="container-fluid"> <div class="container-fluid">
<ul class="nav navbar-nav"> <ul class="nav navbar-nav navbar-wide">
<li> <li style="float: right">
<form class="navbar-form navbar-left" role="search" action={% url 'auth_corputils_search' %}{{ corp.corporation_id }}/ method="POST"> <form class="navbar-form navbar-right" role="search" action={% url 'auth_corputils_search' %}{{ corp.corporation_id }}/ method="POST">
<div class="form-group"> <div class="form-group">
{% csrf_token %} {% csrf_token %}
{{ search_form.as_table }} {{ search_form.as_table }}