Changed to only using two permissions.

This commit is contained in:
Ydmir 2016-02-27 09:48:42 +01:00
parent cb50697537
commit c852d3f8e2
5 changed files with 107 additions and 122 deletions

View File

@ -26,7 +26,6 @@ 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')
def corp_member_view(request, corpid = None): 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)
@ -58,148 +57,143 @@ def corp_member_view(request, corpid = None):
corp = EveCorporationInfo.objects.get(corporation_id=corpid) corp = EveCorporationInfo.objects.get(corporation_id=corpid)
Player = namedtuple("Player", ["main", "maincorp", "maincorpid", "altlist", "apilist"]) Player = namedtuple("Player", ["main", "maincorp", "maincorpid", "altlist", "apilist"])
send_apis = False
if check_if_user_has_permission(request.user, 'alliance_apis') or (check_if_user_has_permission(request.user, 'corp_apis') and (user_corp_id == corpid)): if check_if_user_has_permission(request.user, 'alliance_apis') or (check_if_user_has_permission(request.user, 'corp_apis') and (user_corp_id == corpid)):
logger.debug("Retreiving and sending API-information") logger.debug("Retreiving and sending API-information")
send_apis = True
if settings.IS_CORP: if settings.IS_CORP:
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:
member_list = EveWhoManager.get_corporation_members(corpid)
characters_with_api = {}
characters_without_api = {}
num_registered_characters = 0
for char_id, member_data in member_list.items():
try:
char = EveCharacter.objects.get(character_id=char_id)
char_owner = char.user
try: try:
mainid = int(AuthServicesInfoManager.get_auth_service_info(user=char_owner).main_char_id) member_list = EveApiManager.get_corp_membertracking(settings.CORP_API_ID, settings.CORP_API_VCODE)
mainchar = EveCharacter.objects.get(character_id=mainid) except APIError:
mainname = mainchar.character_name logger.debug("Corp API does not have membertracking scope, using EveWho data instead.")
maincorp = mainchar.corporation_name member_list = EveWhoManager.get_corporation_members(corpid)
maincorpid = mainchar.corporation_id else:
except (ValueError, EveCharacter.DoesNotExist): member_list = EveWhoManager.get_corporation_members(corpid)
mainname = "User: " + char_owner.username
mainchar = char characters_with_api = {}
maincorp = "Not set." characters_without_api = {}
maincorpid = None
num_registered_characters = num_registered_characters + 1 num_registered_characters = 0
characters_with_api.setdefault(mainname, Player(main=mainchar, for char_id, member_data in member_list.items():
maincorp=maincorp, try:
maincorpid=maincorpid, char = EveCharacter.objects.get(character_id=char_id)
altlist=[], char_owner = char.user
apilist=[]) try:
).altlist.append(char) mainid = int(AuthServicesInfoManager.get_auth_service_info(user=char_owner).main_char_id)
if send_apis: mainchar = EveCharacter.objects.get(character_id=mainid)
mainname = mainchar.character_name
maincorp = mainchar.corporation_name
maincorpid = mainchar.corporation_id
except (ValueError, EveCharacter.DoesNotExist):
mainname = "User: " + char_owner.username
mainchar = char
maincorp = "Not set."
maincorpid = None
num_registered_characters = num_registered_characters + 1
characters_with_api.setdefault(mainname, Player(main=mainchar,
maincorp=maincorp,
maincorpid=maincorpid,
altlist=[],
apilist=[])
).altlist.append(char)
characters_with_api[mainname].apilist.append(EveApiKeyPair.objects.get(api_id=char.api_id)) characters_with_api[mainname].apilist.append(EveApiKeyPair.objects.get(api_id=char.api_id))
except EveCharacter.DoesNotExist:
characters_without_api.update({member_data["name"]: member_data["id"]}) except EveCharacter.DoesNotExist:
characters_without_api.update({member_data["name"]: member_data["id"]})
if not settings.IS_CORP: if not settings.IS_CORP:
context = {"membercorp_list": membercorp_list, context = {"membercorp_list": membercorp_list,
"corp": corp, "corp": corp,
"sent_apis": send_apis, "characters_with_api": sorted(characters_with_api.items()),
"characters_with_api": sorted(characters_with_api.items()), 'n_registered': num_registered_characters,
'n_registered': num_registered_characters, "characters_without_api": sorted(characters_without_api.items()),
"characters_without_api": sorted(characters_without_api.items()), "search_form": CorputilsSearchForm()}
"search_form": CorputilsSearchForm()} else:
else: logger.debug("corp_member_view running in corportation mode")
logger.debug("corp_member_view running in corportation mode") context = {"corp": corp,
context = {"corp": corp, "characters_with_api": sorted(characters_with_api.items()),
"sent_apis": send_apis, 'n_registered': num_registered_characters,
"characters_with_api": sorted(characters_with_api.items()), "characters_without_api": sorted(characters_without_api.items()),
'n_registered': num_registered_characters, "search_form": CorputilsSearchForm()}
"characters_without_api": sorted(characters_without_api.items()),
"search_form": CorputilsSearchForm()}
return render_to_response('registered/corputils.html',context, context_instance=RequestContext(request) )
return render_to_response('registered/corputils.html',context, context_instance=RequestContext(request) ) return HttpResponseRedirect("/dashboard/")
@login_required @login_required
@permission_required('auth.corputils')
def corputils_search(request, corpid=settings.CORP_ID): def corputils_search(request, corpid=settings.CORP_ID):
logger.debug("corputils_search called by user %s" % request.user) logger.debug("corputils_search called by user %s" % request.user)
corp = EveCorporationInfo.objects.get(corporation_id=corpid) corp = EveCorporationInfo.objects.get(corporation_id=corpid)
send_apis = False authorized = False
try: try:
user_main = EveCharacter.objects.get(character_id=AuthServicesInfoManager.get_auth_service_info(user=request.user).main_char_id) user_main = EveCharacter.objects.get(character_id=AuthServicesInfoManager.get_auth_service_info(user=request.user).main_char_id)
if check_if_user_has_permission(request.user, 'alliance_apis') or (check_if_user_has_permission(request.user, 'corp_apis') and (user_main.corporation_id == corpid)): if check_if_user_has_permission(request.user, 'alliance_apis') or (check_if_user_has_permission(request.user, 'corp_apis') and (user_main.corporation_id == corpid)):
logger.debug("Retreiving and sending API-information") logger.debug("Retreiving and sending API-information")
send_apis = True authorized = True
except (ValueError, EveCharacter.DoesNotExist): except (ValueError, EveCharacter.DoesNotExist):
if check_if_user_has_permission(request.user, 'alliance_apis'): if check_if_user_has_permission(request.user, 'alliance_apis'):
logger.debug("Retreiving and sending API-information") logger.debug("Retreiving and sending API-information")
send_apis = True authorized = True
if request.method == 'POST': if authorized:
form = CorputilsSearchForm(request.POST) if request.method == 'POST':
logger.debug("Request type POST contains form valid: %s" % form.is_valid()) form = CorputilsSearchForm(request.POST)
if form.is_valid(): logger.debug("Request type POST contains form valid: %s" % form.is_valid())
# Really dumb search and only checks character name if form.is_valid():
# This can be improved but it does the job for now # Really dumb search and only checks character name
searchstring = form.cleaned_data['search_string'] # This can be improved but it does the job for now
logger.debug("Searching for player with character name %s for user %s" % (searchstring, request.user)) searchstring = form.cleaned_data['search_string']
logger.debug("Searching for player with character name %s for user %s" % (searchstring, request.user))
if settings.IS_CORP: if settings.IS_CORP:
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:
member_list = EveWhoManager.get_corporation_members(corpid)
SearchResult = namedtuple('SearchResult', ['name', 'id', 'main', 'api_registered', 'character', 'apiinfo'])
searchresults = []
for memberid, member_data in member_list.items():
if searchstring.lower() in member_data["name"].lower():
try: try:
char = EveCharacter.objects.get(character_name=member_data["name"]) member_list = EveApiManager.get_corp_membertracking(settings.CORP_API_ID, settings.CORP_API_VCODE)
user = char.user except APIError:
mainid = int(AuthServicesInfoManager.get_auth_service_info(user=user).main_char_id) logger.debug("Corp API does not have membertracking scope, using EveWho data instead.")
mainname = EveCharacter.objects.get(character_id=mainid).character_name member_list = EveWhoManager.get_corporation_members(corpid)
api_registered = True else:
except EveCharacter.DoesNotExist: member_list = EveWhoManager.get_corporation_members(corpid)
api_registered = False
char = None
mainname = ""
if api_registered and send_apis:
apiinfo = EveApiKeyPair.objects.get(api_id=char.api_id)
else:
apiinfo = None
searchresults.append(SearchResult(name=member_data["name"], id=memberid, main=mainname, api_registered=api_registered, SearchResult = namedtuple('SearchResult', ['name', 'id', 'main', 'api_registered', 'character', 'apiinfo'])
character=char, apiinfo=apiinfo))
searchresults = []
for memberid, member_data in member_list.items():
if searchstring.lower() in member_data["name"].lower():
try:
char = EveCharacter.objects.get(character_name=member_data["name"])
user = char.user
mainid = int(AuthServicesInfoManager.get_auth_service_info(user=user).main_char_id)
mainname = EveCharacter.objects.get(character_id=mainid).character_name
api_registered = True
apiinfo = EveApiKeyPair.objects.get(api_id=char.api_id)
except EveCharacter.DoesNotExist:
api_registered = False
char = None
mainname = ""
apiinfo = None
searchresults.append(SearchResult(name=member_data["name"], id=memberid, main=mainname, api_registered=api_registered,
character=char, apiinfo=apiinfo))
logger.info("Found %s members for user %s matching search string %s" % (len(searchresults), request.user, searchstring)) logger.info("Found %s members for user %s matching search string %s" % (len(searchresults), request.user, searchstring))
context = {'corp': corp, 'results': searchresults, 'search_form': CorputilsSearchForm(), 'sent_apis': send_apis} context = {'corp': corp, 'results': searchresults, 'search_form': CorputilsSearchForm()}
return render_to_response('registered/corputilssearchview.html',
context, context_instance=RequestContext(request))
else:
logger.debug("Form invalid - returning for user %s to retry." % request.user)
context = {'corp': corp, 'members': None, 'search_form': CorputilsSearchForm()}
return render_to_response('registered/corputilssearchview.html',
context, context_instance=RequestContext(request))
return render_to_response('registered/corputilssearchview.html',
context, context_instance=RequestContext(request))
else: else:
logger.debug("Form invalid - returning for user %s to retry." % request.user) logger.debug("Returning empty search form for user %s" % request.user)
context = {'corp': corp, 'members': None, 'search_form': CorputilsSearchForm()} return HttpResponseRedirect("/corputils/")
return render_to_response('registered/corputilssearchview.html', return HttpResponseRedirect("/dashboard/")
context, context_instance=RequestContext(request))
else:
logger.debug("Returning empty search form for user %s" % request.user)
return HttpResponseRedirect("/corputils/")

View File

@ -124,7 +124,7 @@
</li> </li>
{% endif %} {% endif %}
{% if perms.auth.corp_stats %} {% if perms.auth.corp_apis or perms.auth.alliance_apis %}
<li> <li>
<a {% ifequal request.path "/corputils/" %} class="active" {% endifequal %} <a {% ifequal request.path "/corputils/" %} class="active" {% endifequal %}
href="{% url 'auth_corputils' %}"><i href="{% url 'auth_corputils' %}"><i

View File

@ -46,7 +46,7 @@
<nav class="navbar navbar-default"> <nav class="navbar navbar-default">
<div class="container-fluid"> <div class="container-fluid">
<ul class="nav navbar-nav navbar-wide"> <ul class="nav navbar-nav navbar-wide">
{% if membercorp_list %} {% if membercorp_list and perms.auth.alliance_apis %}
<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>
<ul class="dropdown-menu scrollable"> <ul class="dropdown-menu scrollable">
@ -91,9 +91,7 @@
<th class="col-md-2">Main corporation</th> <th class="col-md-2">Main corporation</th>
<th class="col-md-2">Character list</th> <th class="col-md-2">Character list</th>
<th class="col-md-3">Killboard</th> <th class="col-md-3">Killboard</th>
{% if sent_apis %}
<th class="col-md-2">API JackKnife</th> <th class="col-md-2">API JackKnife</th>
{% endif %}
</tr> </tr>
{% for maincharname, player in characters_with_api %} {% for maincharname, player in characters_with_api %}
<tr > <tr >
@ -124,7 +122,6 @@
<p><a href="https://zkillboard.com/character/{{ char.character_id }}/" class="label label-danger" target="_blank">Killboard</a></p> <p><a href="https://zkillboard.com/character/{{ char.character_id }}/" class="label label-danger" target="_blank">Killboard</a></p>
{% endfor %} {% endfor %}
</td> </td>
{% if sent_apis %}
<td> <td>
{% for apiinfo in player.apilist %} {% for apiinfo in player.apilist %}
<p> <p>
@ -136,7 +133,6 @@
</p> </p>
{% endfor %} {% endfor %}
</td> </td>
{% endif %}
</tr> </tr>
{% endfor %} {% endfor %}
</table> </table>

View File

@ -38,9 +38,7 @@
<th class="col-md-2">Character</th> <th class="col-md-2">Character</th>
<th class="col-md-2">Main character</th> <th class="col-md-2">Main character</th>
<th class="col-md-5">Killboard</th> <th class="col-md-5">Killboard</th>
{% if sent_apis %}
<th class="col-md-2">API JackKnife</th> <th class="col-md-2">API JackKnife</th>
{% endif %}
</tr> </tr>
{% for result in results %} {% for result in results %}
<tr > <tr >
@ -59,7 +57,6 @@
<p><a href="https://zkillboard.com/character/{{ result.char.character_id }}/" class="label label-danger" target="_blank">Killboard</a></p> <p><a href="https://zkillboard.com/character/{{ result.char.character_id }}/" class="label label-danger" target="_blank">Killboard</a></p>
</td> </td>
{% if sent_apis %}
<td> <td>
{% if result.api_registered %} {% if result.api_registered %}
<a href="{{ JACK_KNIFE_URL }}?usid={{ result.apiinfo.api_id }}&apik={{ result.apiinfo.api_key }}" <a href="{{ JACK_KNIFE_URL }}?usid={{ result.apiinfo.api_id }}&apik={{ result.apiinfo.api_key }}"
@ -69,7 +66,6 @@
</a> </a>
{% endif %} {% endif %}
</td> </td>
{% endif %}
</tr> </tr>
{% endfor %} {% endfor %}
</table> </table>

View File

@ -18,7 +18,6 @@ def bootstrap_permissions():
Permission.objects.get_or_create(codename="jabber_broadcast_all", content_type=ct, name="jabber_broadcast_all") Permission.objects.get_or_create(codename="jabber_broadcast_all", content_type=ct, name="jabber_broadcast_all")
Permission.objects.get_or_create(codename="human_resources", content_type=ct, name="human_resources") Permission.objects.get_or_create(codename="human_resources", content_type=ct, name="human_resources")
Permission.objects.get_or_create(codename="blue_member", content_type=ct, name="blue_member") Permission.objects.get_or_create(codename="blue_member", content_type=ct, name="blue_member")
Permission.objects.get_or_create(codename="corputils", content_type=ct, name="corputils")
Permission.objects.get_or_create(codename="alliance_apis", content_type=ct, name="alliance_apis") Permission.objects.get_or_create(codename="alliance_apis", content_type=ct, name="alliance_apis")
Permission.objects.get_or_create(codename="corp_apis", content_type=ct, name="corp_apis") Permission.objects.get_or_create(codename="corp_apis", content_type=ct, name="corp_apis")
Permission.objects.get_or_create(codename="timer_management", content_type=ct, name="timer_management") Permission.objects.get_or_create(codename="timer_management", content_type=ct, name="timer_management")