mirror of
https://gitlab.com/allianceauth/allianceauth.git
synced 2025-07-09 12:30:15 +02:00
Added initial corputils functionality, for auditing members in corporation mode.
This commit is contained in:
parent
4c8ab70f0d
commit
786e573a0a
11
.idea/allianceauth.iml
generated
11
.idea/allianceauth.iml
generated
@ -6,21 +6,16 @@
|
|||||||
<option name="rootFolder" value="$MODULE_DIR$" />
|
<option name="rootFolder" value="$MODULE_DIR$" />
|
||||||
<option name="settingsModule" value="settings.py" />
|
<option name="settingsModule" value="settings.py" />
|
||||||
<option name="manageScript" value="manage.py" />
|
<option name="manageScript" value="manage.py" />
|
||||||
|
<option name="environment" value="<map/>" />
|
||||||
</configuration>
|
</configuration>
|
||||||
</facet>
|
</facet>
|
||||||
</component>
|
</component>
|
||||||
<component name="NewModuleRootManager">
|
<component name="NewModuleRootManager">
|
||||||
<content url="file://$MODULE_DIR$" />
|
<content url="file://$MODULE_DIR$" />
|
||||||
<orderEntry type="inheritedJdk" />
|
<orderEntry type="jdk" jdkName="Python 2.7.6 (/usr/bin/python2.7)" jdkType="Python SDK" />
|
||||||
<orderEntry type="sourceFolder" forTests="false" />
|
<orderEntry type="sourceFolder" forTests="false" />
|
||||||
</component>
|
</component>
|
||||||
<component name="TemplatesService">
|
<component name="TemplatesService">
|
||||||
<option name="TEMPLATE_CONFIGURATION" value="Django" />
|
<option name="TEMPLATE_CONFIGURATION" value="Django" />
|
||||||
<option name="TEMPLATE_FOLDERS">
|
|
||||||
<list>
|
|
||||||
<option value="$MODULE_DIR$/templates" />
|
|
||||||
</list>
|
|
||||||
</option>
|
|
||||||
</component>
|
</component>
|
||||||
</module>
|
</module>
|
||||||
|
|
@ -162,7 +162,10 @@ urlpatterns = patterns('',
|
|||||||
url(r'srp_request_reject/(\w+)', 'srp.views.srp_request_reject', name='auth_srp_request_reject'),
|
url(r'srp_request_reject/(\w+)', 'srp.views.srp_request_reject', name='auth_srp_request_reject'),
|
||||||
url(r'srp_request_amount_update/(\w+)', 'srp.views.srp_request_update_amount_view',
|
url(r'srp_request_amount_update/(\w+)', 'srp.views.srp_request_update_amount_view',
|
||||||
name="auth_srp_request_update_amount_view"),
|
name="auth_srp_request_update_amount_view"),
|
||||||
|
|
||||||
# FLEET FITTINGS
|
#corputils
|
||||||
url(r'^fits/$', 'services.views.fleet_fits', name='auth_fleet_fits'),
|
url(r'^corp_utils/$', 'corputils.views.corp_member_view', name='auth_corp_member_view'),
|
||||||
|
|
||||||
|
# FLEET FITTINGS
|
||||||
|
url(r'^fits/$', 'services.views.fleet_fits', name='auth_fleet_fits'),
|
||||||
)
|
)
|
||||||
|
0
corputils/__init__.py
Normal file
0
corputils/__init__.py
Normal file
0
corputils/admin.py
Normal file
0
corputils/admin.py
Normal file
0
corputils/models.py
Normal file
0
corputils/models.py
Normal file
0
corputils/tests.py
Normal file
0
corputils/tests.py
Normal file
52
corputils/views.py
Normal file
52
corputils/views.py
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
from django.conf import settings
|
||||||
|
from django.shortcuts import render_to_response
|
||||||
|
from django.template import RequestContext
|
||||||
|
from django.contrib.auth.decorators import login_required
|
||||||
|
from django.contrib.auth.decorators import permission_required
|
||||||
|
|
||||||
|
from authentication.managers import AuthServicesInfoManager
|
||||||
|
from services.managers.eve_api_manager import EveApiManager
|
||||||
|
from eveonline.models import EveCorporationInfo
|
||||||
|
from eveonline.models import EveCharacter
|
||||||
|
from authentication.models import AuthServicesInfo
|
||||||
|
|
||||||
|
import logging
|
||||||
|
|
||||||
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
|
# Because corp-api only exist for the executor corp, this function will only be available in corporation mode.
|
||||||
|
@login_required
|
||||||
|
@permission_required('auth.corp_stats')
|
||||||
|
def corp_member_view(request):
|
||||||
|
logger.debug("corp_member_view called by user %s" % request.user)
|
||||||
|
# Get the corp the member is in
|
||||||
|
auth_info = AuthServicesInfo.objects.get(user=request.user)
|
||||||
|
logger.debug("Got user %s authservicesinfo model %s" % (request.user, auth_info))
|
||||||
|
|
||||||
|
if settings.IS_CORP:
|
||||||
|
corp = EveCorporationInfo.objects.get(corporation_id=settings.CORP_ID)
|
||||||
|
|
||||||
|
member_list = EveApiManager.get_corp_membertracking()
|
||||||
|
characters_with_api = {}
|
||||||
|
characters_without_api = {}
|
||||||
|
for char_id, member_data in member_list.iteritems():
|
||||||
|
try:
|
||||||
|
char = EveCharacter.objects.get(character_id=char_id)
|
||||||
|
user = char.user
|
||||||
|
mainid = int(AuthServicesInfoManager.get_auth_service_info(user=user).main_char_id)
|
||||||
|
characters_with_api.setdefault(mainid,{}).update({char_id:char.character_name})
|
||||||
|
except EveCharacter.DoesNotExist:
|
||||||
|
mainid = char_id
|
||||||
|
characters_without_api.setdefault(mainid,{}).update({char_id:member_data["name"]})
|
||||||
|
|
||||||
|
|
||||||
|
context = {"corp": corp,
|
||||||
|
"characters_with_api": characters_with_api,
|
||||||
|
"characters_without_api": characters_without_api}
|
||||||
|
|
||||||
|
return render_to_response('registered/corputils.html',context, context_instance=RequestContext(request) )
|
||||||
|
else:
|
||||||
|
logger.error("Not running in corporation mode. Cannot provide corp member tracking data." % (request.user, auth_info.main_char_id))
|
||||||
|
return render_to_response('registered/corputils.html', None, context_instance=RequestContext(request))
|
||||||
|
|
@ -25,6 +25,7 @@ import logging
|
|||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
def disable_member(user, char_id):
|
def disable_member(user, char_id):
|
||||||
logger.debug("Disabling user %s with character id %s" % (user, char_id))
|
logger.debug("Disabling user %s with character id %s" % (user, char_id))
|
||||||
remove_member_permission(user, 'member')
|
remove_member_permission(user, 'member')
|
||||||
|
@ -22,236 +22,236 @@ logger = logging.getLogger(__name__)
|
|||||||
|
|
||||||
@login_required
|
@login_required
|
||||||
def hr_application_management_view(request):
|
def hr_application_management_view(request):
|
||||||
logger.debug("hr_application_management_view called by user %s" % request.user)
|
logger.debug("hr_application_management_view called by user %s" % request.user)
|
||||||
personal_app = None
|
personal_app = None
|
||||||
corp_applications = None
|
corp_applications = None
|
||||||
|
|
||||||
if request.user.is_superuser:
|
if request.user.is_superuser:
|
||||||
logger.debug("User %s is superuser: returning all applications." % request.user)
|
logger.debug("User %s is superuser: returning all applications." % request.user)
|
||||||
corp_applications = HRApplication.objects.all()
|
corp_applications = HRApplication.objects.all()
|
||||||
else:
|
else:
|
||||||
# Get the corp the member is in
|
# Get the corp the member is in
|
||||||
auth_info = AuthServicesInfo.objects.get(user=request.user)
|
auth_info = AuthServicesInfo.objects.get(user=request.user)
|
||||||
if auth_info.main_char_id != "":
|
if auth_info.main_char_id != "":
|
||||||
try:
|
try:
|
||||||
main_corp_id = EveManager.get_charater_corporation_id_by_id(auth_info.main_char_id)
|
main_corp_id = EveManager.get_charater_corporation_id_by_id(auth_info.main_char_id)
|
||||||
main_alliance_id = EveManager.get_charater_alliance_id_by_id(auth_info.main_char_id)
|
main_alliance_id = EveManager.get_charater_alliance_id_by_id(auth_info.main_char_id)
|
||||||
if (settings.IS_CORP and main_corp_id == settings.CORP_ID) or (not settings.IS_CORP and main_alliance_id == settings.ALLIANCE_ID):
|
if (settings.IS_CORP and main_corp_id == settings.CORP_ID) or (not settings.IS_CORP and main_alliance_id == settings.ALLIANCE_ID):
|
||||||
main_char = EveCharacter.objects.get(character_id=auth_info.main_char_id)
|
main_char = EveCharacter.objects.get(character_id=auth_info.main_char_id)
|
||||||
if EveCorporationInfo.objects.filter(corporation_id=main_char.corporation_id).exists():
|
if EveCorporationInfo.objects.filter(corporation_id=main_char.corporation_id).exists():
|
||||||
corp = EveCorporationInfo.objects.get(corporation_id=main_char.corporation_id)
|
corp = EveCorporationInfo.objects.get(corporation_id=main_char.corporation_id)
|
||||||
corp_applications = HRApplication.objects.filter(corp=corp).filter(approved_denied=None)
|
corp_applications = HRApplication.objects.filter(corp=corp).filter(approved_denied=None)
|
||||||
else:
|
else:
|
||||||
corp_applications = None
|
corp_applications = None
|
||||||
else:
|
else:
|
||||||
corp_applications = None
|
corp_applications = None
|
||||||
except:
|
except:
|
||||||
logger.error("Unable to determine user %s main character id %s corp. Returning no corp hrapplications." % (request.user, auth_info.main_char_id))
|
logger.error("Unable to determine user %s main character id %s corp. Returning no corp hrapplications." % (request.user, auth_info.main_char_id))
|
||||||
corp_applications = None
|
corp_applications = None
|
||||||
context = {'personal_apps': HRApplication.objects.all().filter(user=request.user),
|
context = {'personal_apps': HRApplication.objects.all().filter(user=request.user),
|
||||||
'applications': corp_applications,
|
'applications': corp_applications,
|
||||||
'search_form': HRApplicationSearchForm()}
|
'search_form': HRApplicationSearchForm()}
|
||||||
|
|
||||||
return render_to_response('registered/hrapplicationmanagement.html',
|
return render_to_response('registered/hrapplicationmanagement.html',
|
||||||
context, context_instance=RequestContext(request))
|
context, context_instance=RequestContext(request))
|
||||||
|
|
||||||
|
|
||||||
@login_required
|
@login_required
|
||||||
def hr_application_create_view(request):
|
def hr_application_create_view(request):
|
||||||
logger.debug("hr_application_create_view called by user %s" % request.user)
|
logger.debug("hr_application_create_view called by user %s" % request.user)
|
||||||
success = False
|
success = False
|
||||||
|
|
||||||
if request.method == 'POST':
|
if request.method == 'POST':
|
||||||
form = HRApplicationForm(request.POST)
|
form = HRApplicationForm(request.POST)
|
||||||
logger.debug("Request type POST with form valid: %s" % form.is_valid())
|
logger.debug("Request type POST with form valid: %s" % form.is_valid())
|
||||||
if form.is_valid():
|
if form.is_valid():
|
||||||
application = HRApplication()
|
application = HRApplication()
|
||||||
application.user = request.user
|
application.user = request.user
|
||||||
application.character_name = form.cleaned_data['character_name']
|
application.character_name = form.cleaned_data['character_name']
|
||||||
application.full_api_id = form.cleaned_data['full_api_id']
|
application.full_api_id = form.cleaned_data['full_api_id']
|
||||||
application.full_api_key = form.cleaned_data['full_api_key']
|
application.full_api_key = form.cleaned_data['full_api_key']
|
||||||
application.corp = EveCorporationInfo.objects.get(corporation_id=form.cleaned_data['corp'])
|
application.corp = EveCorporationInfo.objects.get(corporation_id=form.cleaned_data['corp'])
|
||||||
application.is_a_spi = form.cleaned_data['is_a_spi']
|
application.is_a_spi = form.cleaned_data['is_a_spi']
|
||||||
application.about = form.cleaned_data['about']
|
application.about = form.cleaned_data['about']
|
||||||
application.extra = form.cleaned_data['extra']
|
application.extra = form.cleaned_data['extra']
|
||||||
application.save()
|
application.save()
|
||||||
success = True
|
success = True
|
||||||
logger.info("Created HRApplication for user %s to corp %s" % (request.user, application.corp))
|
logger.info("Created HRApplication for user %s to corp %s" % (request.user, application.corp))
|
||||||
else:
|
else:
|
||||||
logger.debug("Providing empty form.")
|
logger.debug("Providing empty form.")
|
||||||
form = HRApplicationForm()
|
form = HRApplicationForm()
|
||||||
|
|
||||||
context = {'form': form, 'success': success}
|
context = {'form': form, 'success': success}
|
||||||
return render_to_response('registered/hrcreateapplication.html',
|
return render_to_response('registered/hrcreateapplication.html',
|
||||||
context, context_instance=RequestContext(request))
|
context, context_instance=RequestContext(request))
|
||||||
|
|
||||||
|
|
||||||
@login_required
|
@login_required
|
||||||
def hr_application_personal_view(request, app_id):
|
def hr_application_personal_view(request, app_id):
|
||||||
logger.debug("hr_application_personal_view called by user %s for app id %s" % (request.user, app_id))
|
logger.debug("hr_application_personal_view called by user %s for app id %s" % (request.user, app_id))
|
||||||
if HRApplication.objects.filter(id=app_id).exists():
|
if HRApplication.objects.filter(id=app_id).exists():
|
||||||
application = HRApplication.objects.get(id=app_id)
|
application = HRApplication.objects.get(id=app_id)
|
||||||
logger.debug("Got application id %s: %s" % (app_id, application))
|
logger.debug("Got application id %s: %s" % (app_id, application))
|
||||||
if application.user != request.user:
|
if application.user != request.user:
|
||||||
logger.warn("HRApplication id %s user %s does not match request user %s - returning blank application." % (app_id, application.user, request.user))
|
logger.warn("HRApplication id %s user %s does not match request user %s - returning blank application." % (app_id, application.user, request.user))
|
||||||
application = HRApplication()
|
application = HRApplication()
|
||||||
else:
|
else:
|
||||||
logger.error("Unable to locate HRApplication matching id %s - returning blank application to user %s" % (app_id, request.user))
|
logger.error("Unable to locate HRApplication matching id %s - returning blank application to user %s" % (app_id, request.user))
|
||||||
application = HRApplication()
|
application = HRApplication()
|
||||||
context = {'application': application}
|
context = {'application': application}
|
||||||
|
|
||||||
return render_to_response('registered/hrapplicationview.html',
|
return render_to_response('registered/hrapplicationview.html',
|
||||||
context, context_instance=RequestContext(request))
|
context, context_instance=RequestContext(request))
|
||||||
|
|
||||||
|
|
||||||
@login_required
|
@login_required
|
||||||
def hr_application_personal_removal(request, app_id):
|
def hr_application_personal_removal(request, app_id):
|
||||||
logger.debug("hr_application_personal_removal called by user %s for app id %s" % (request.user, app_id))
|
logger.debug("hr_application_personal_removal called by user %s for app id %s" % (request.user, app_id))
|
||||||
if HRApplication.objects.filter(id=app_id).exists():
|
if HRApplication.objects.filter(id=app_id).exists():
|
||||||
application = HRApplication.objects.get(id=app_id)
|
application = HRApplication.objects.get(id=app_id)
|
||||||
if application.user == request.user:
|
if application.user == request.user:
|
||||||
application.delete()
|
application.delete()
|
||||||
logger.info("Deleted HRApplication with id %s for user %s to corp %s" % (app_id, request.user, application.corp))
|
logger.info("Deleted HRApplication with id %s for user %s to corp %s" % (app_id, request.user, application.corp))
|
||||||
else:
|
else:
|
||||||
logger.error("HRapplication id %s user %s does not match request user %s - refusing to delete." % (app_id, application.user, request.user))
|
logger.error("HRapplication id %s user %s does not match request user %s - refusing to delete." % (app_id, application.user, request.user))
|
||||||
return HttpResponseRedirect("/hr_application_management/")
|
return HttpResponseRedirect("/hr_application_management/")
|
||||||
|
|
||||||
|
|
||||||
@login_required
|
@login_required
|
||||||
@permission_required('auth.human_resources')
|
@permission_required('auth.human_resources')
|
||||||
def hr_application_view(request, app_id):
|
def hr_application_view(request, app_id):
|
||||||
logger.debug("hr_application_view called by user %s for app id %s" % (request.user, app_id))
|
logger.debug("hr_application_view called by user %s for app id %s" % (request.user, app_id))
|
||||||
if request.method == 'POST':
|
if request.method == 'POST':
|
||||||
form = HRApplicationCommentForm(request.POST)
|
form = HRApplicationCommentForm(request.POST)
|
||||||
logger.debug("Request type POST contains form valid: %s" % form.is_valid())
|
logger.debug("Request type POST contains form valid: %s" % form.is_valid())
|
||||||
if form.is_valid():
|
if form.is_valid():
|
||||||
auth_info = AuthServicesInfo.objects.get(user=request.user)
|
auth_info = AuthServicesInfo.objects.get(user=request.user)
|
||||||
|
|
||||||
comment = HRApplicationComment()
|
comment = HRApplicationComment()
|
||||||
comment.application = HRApplication.objects.get(id=int(form.cleaned_data['app_id']))
|
comment.application = HRApplication.objects.get(id=int(form.cleaned_data['app_id']))
|
||||||
comment.commenter_user = request.user
|
comment.commenter_user = request.user
|
||||||
comment.commenter_character = EveCharacter.objects.get(character_id=auth_info.main_char_id)
|
comment.commenter_character = EveCharacter.objects.get(character_id=auth_info.main_char_id)
|
||||||
comment.comment = form.cleaned_data['comment']
|
comment.comment = form.cleaned_data['comment']
|
||||||
comment.save()
|
comment.save()
|
||||||
logger.info("Saved comment by user %s to hrapplication %s" % (request.user, comment.application))
|
logger.info("Saved comment by user %s to hrapplication %s" % (request.user, comment.application))
|
||||||
|
|
||||||
else:
|
else:
|
||||||
logger.debug("Returning blank HRApplication comment form.")
|
logger.debug("Returning blank HRApplication comment form.")
|
||||||
form = HRApplicationCommentForm()
|
form = HRApplicationCommentForm()
|
||||||
|
|
||||||
if HRApplication.objects.filter(id=app_id).exists():
|
if HRApplication.objects.filter(id=app_id).exists():
|
||||||
application = HRApplication.objects.get(id=app_id)
|
application = HRApplication.objects.get(id=app_id)
|
||||||
comments = HRApplicationComment.objects.all().filter(application=application)
|
comments = HRApplicationComment.objects.all().filter(application=application)
|
||||||
logger.debug("Retrieved hrpplication id %s on behalf of user %s with comments %s" % (app_id, request.user, len(comments)))
|
logger.debug("Retrieved hrpplication id %s on behalf of user %s with comments %s" % (app_id, request.user, len(comments)))
|
||||||
else:
|
else:
|
||||||
application = HRApplication()
|
application = HRApplication()
|
||||||
comments = []
|
comments = []
|
||||||
logger.error("HRAppllication with id %s not found - returning blank applicatin to user %s" % request.user)
|
logger.error("HRAppllication with id %s not found - returning blank applicatin to user %s" % request.user)
|
||||||
|
|
||||||
context = {'application': application, 'comments': comments, 'comment_form': form}
|
context = {'application': application, 'comments': comments, 'comment_form': form}
|
||||||
|
|
||||||
return render_to_response('registered/hrapplicationview.html',
|
return render_to_response('registered/hrapplicationview.html',
|
||||||
context, context_instance=RequestContext(request))
|
context, context_instance=RequestContext(request))
|
||||||
|
|
||||||
|
|
||||||
@login_required
|
@login_required
|
||||||
@permission_required('auth.human_resources')
|
@permission_required('auth.human_resources')
|
||||||
def hr_application_remove(request, app_id):
|
def hr_application_remove(request, app_id):
|
||||||
logger.debug("hr_application_remove called by user %s for app id %s" % (request.user, app_id))
|
logger.debug("hr_application_remove called by user %s for app id %s" % (request.user, app_id))
|
||||||
if HRApplication.objects.filter(id=app_id).exists():
|
if HRApplication.objects.filter(id=app_id).exists():
|
||||||
application = HRApplication.objects.get(id=app_id)
|
application = HRApplication.objects.get(id=app_id)
|
||||||
if application:
|
if application:
|
||||||
logger.info("Deleted HRApplication id %s on behalf of user %s" % (app_id, request.user))
|
logger.info("Deleted HRApplication id %s on behalf of user %s" % (app_id, request.user))
|
||||||
application.delete()
|
application.delete()
|
||||||
else:
|
else:
|
||||||
logger.error("Unable to delete HRApplication with id %s on behalf of user %s: application is NoneType" % (app_id, request.user))
|
logger.error("Unable to delete HRApplication with id %s on behalf of user %s: application is NoneType" % (app_id, request.user))
|
||||||
else:
|
else:
|
||||||
logger.error("Unable to delete HRApplication with id %s on behalf of user %s: application not found." % (app_id, request.user))
|
logger.error("Unable to delete HRApplication with id %s on behalf of user %s: application not found." % (app_id, request.user))
|
||||||
|
|
||||||
return HttpResponseRedirect("/hr_application_management/")
|
return HttpResponseRedirect("/hr_application_management/")
|
||||||
|
|
||||||
|
|
||||||
@login_required
|
@login_required
|
||||||
@permission_required('auth.human_resources')
|
@permission_required('auth.human_resources')
|
||||||
def hr_application_approve(request, app_id):
|
def hr_application_approve(request, app_id):
|
||||||
logger.debug("hr_application_approve called by user %s for app id %s" % (request.user, app_id))
|
logger.debug("hr_application_approve called by user %s for app id %s" % (request.user, app_id))
|
||||||
if HRApplication.objects.filter(id=app_id).exists():
|
if HRApplication.objects.filter(id=app_id).exists():
|
||||||
auth_info = AuthServicesInfo.objects.get(user=request.user)
|
auth_info = AuthServicesInfo.objects.get(user=request.user)
|
||||||
application = HRApplication.objects.get(id=app_id)
|
application = HRApplication.objects.get(id=app_id)
|
||||||
application.approved_denied = True
|
application.approved_denied = True
|
||||||
application.reviewer_user = request.user
|
application.reviewer_user = request.user
|
||||||
application.reviewer_character = EveCharacter.objects.get(character_id=auth_info.main_char_id)
|
application.reviewer_character = EveCharacter.objects.get(character_id=auth_info.main_char_id)
|
||||||
application.save()
|
application.save()
|
||||||
logger.info("HRApplication for user %s to corp %s approved by %s" % (application.user, application.corp, request.user))
|
logger.info("HRApplication for user %s to corp %s approved by %s" % (application.user, application.corp, request.user))
|
||||||
else:
|
else:
|
||||||
logger.error("User %s unable to approve HRApplication id %s - hrapplication with that id not found." % (request.user, app_id))
|
logger.error("User %s unable to approve HRApplication id %s - hrapplication with that id not found." % (request.user, app_id))
|
||||||
|
|
||||||
return HttpResponseRedirect("/hr_application_management/")
|
return HttpResponseRedirect("/hr_application_management/")
|
||||||
|
|
||||||
|
|
||||||
@login_required
|
@login_required
|
||||||
@permission_required('auth.human_resources')
|
@permission_required('auth.human_resources')
|
||||||
def hr_application_reject(request, app_id):
|
def hr_application_reject(request, app_id):
|
||||||
logger.debug("hr_application_reject called by user %s for app id %s" % (request.user, app_id))
|
logger.debug("hr_application_reject called by user %s for app id %s" % (request.user, app_id))
|
||||||
if HRApplication.objects.filter(id=app_id).exists():
|
if HRApplication.objects.filter(id=app_id).exists():
|
||||||
auth_info = AuthServicesInfo.objects.get(user=request.user)
|
auth_info = AuthServicesInfo.objects.get(user=request.user)
|
||||||
application = HRApplication.objects.get(id=app_id)
|
application = HRApplication.objects.get(id=app_id)
|
||||||
application.approved_denied = False
|
application.approved_denied = False
|
||||||
application.reviewer_user = request.user
|
application.reviewer_user = request.user
|
||||||
application.reviewer_character = EveCharacter.objects.get(character_id=auth_info.main_char_id)
|
application.reviewer_character = EveCharacter.objects.get(character_id=auth_info.main_char_id)
|
||||||
application.save()
|
application.save()
|
||||||
logger.info("HRApplication for user %s to corp %s rejected by %s" % (application.user, application.corp, request.user))
|
logger.info("HRApplication for user %s to corp %s rejected by %s" % (application.user, application.corp, request.user))
|
||||||
else:
|
else:
|
||||||
logger.error("User %s unable to reject HRApplication id %s - hrapplication with that id not found." % (request.user, app_id))
|
logger.error("User %s unable to reject HRApplication id %s - hrapplication with that id not found." % (request.user, app_id))
|
||||||
|
|
||||||
return HttpResponseRedirect("/hr_application_management/")
|
return HttpResponseRedirect("/hr_application_management/")
|
||||||
|
|
||||||
|
|
||||||
@login_required
|
@login_required
|
||||||
@permission_required('auth.human_resources')
|
@permission_required('auth.human_resources')
|
||||||
def hr_application_search(request):
|
def hr_application_search(request):
|
||||||
logger.debug("hr_application_search called by user %s" % request.user)
|
logger.debug("hr_application_search called by user %s" % request.user)
|
||||||
if request.method == 'POST':
|
if request.method == 'POST':
|
||||||
form = HRApplicationSearchForm(request.POST)
|
form = HRApplicationSearchForm(request.POST)
|
||||||
logger.debug("Request type POST contains form valid: %s" % form.is_valid())
|
logger.debug("Request type POST contains form valid: %s" % form.is_valid())
|
||||||
if form.is_valid():
|
if form.is_valid():
|
||||||
# Really dumb search and only checks character name
|
# Really dumb search and only checks character name
|
||||||
# This can be improved but it does the job for now
|
# This can be improved but it does the job for now
|
||||||
searchstring = form.cleaned_data['search_string']
|
searchstring = form.cleaned_data['search_string']
|
||||||
applications = []
|
applications = []
|
||||||
logger.debug("Searching for application with character name %s for user %s" % (searchstring, request.user))
|
logger.debug("Searching for application with character name %s for user %s" % (searchstring, request.user))
|
||||||
|
|
||||||
for application in HRApplication.objects.all():
|
for application in HRApplication.objects.all():
|
||||||
if searchstring in application.character_name:
|
if searchstring in application.character_name:
|
||||||
applications.append(application)
|
applications.append(application)
|
||||||
logger.info("Found %s HRApplications for user %s matching search string %s" % (len(applications), request.user, searchstring))
|
logger.info("Found %s HRApplications for user %s matching search string %s" % (len(applications), request.user, searchstring))
|
||||||
|
|
||||||
context = {'applications': applications, 'search_form': HRApplicationSearchForm()}
|
context = {'applications': applications, 'search_form': HRApplicationSearchForm()}
|
||||||
|
|
||||||
return render_to_response('registered/hrapplicationsearchview.html',
|
return render_to_response('registered/hrapplicationsearchview.html',
|
||||||
context, context_instance=RequestContext(request))
|
context, context_instance=RequestContext(request))
|
||||||
else:
|
else:
|
||||||
logger.debug("Form invalid - returning for user %s to retry." % request.user)
|
logger.debug("Form invalid - returning for user %s to retry." % request.user)
|
||||||
context = {'applications': None, 'search_form': form}
|
context = {'applications': None, 'search_form': form}
|
||||||
return render_to_response('registered/hrapplicationsearchview.html',
|
return render_to_response('registered/hrapplicationsearchview.html',
|
||||||
context, context_instance=RequestContext(request))
|
context, context_instance=RequestContext(request))
|
||||||
|
|
||||||
else:
|
else:
|
||||||
logger.debug("Returning empty search form for user %s" % request.user)
|
logger.debug("Returning empty search form for user %s" % request.user)
|
||||||
return HttpResponseRedirect("/hr_application_management/")
|
return HttpResponseRedirect("/hr_application_management/")
|
||||||
|
|
||||||
|
|
||||||
@login_required
|
@login_required
|
||||||
@permission_required('auth.human_resources')
|
@permission_required('auth.human_resources')
|
||||||
def hr_application_mark_in_progress(request, app_id):
|
def hr_application_mark_in_progress(request, app_id):
|
||||||
logger.debug("hr_application_mark_in_progress called by user %s for app id %s" % (request.user, app_id))
|
logger.debug("hr_application_mark_in_progress called by user %s for app id %s" % (request.user, app_id))
|
||||||
if HRApplication.objects.filter(id=app_id).exists():
|
if HRApplication.objects.filter(id=app_id).exists():
|
||||||
auth_info = AuthServicesInfo.objects.get(user=request.user)
|
auth_info = AuthServicesInfo.objects.get(user=request.user)
|
||||||
application = HRApplication.objects.get(id=app_id)
|
application = HRApplication.objects.get(id=app_id)
|
||||||
application.reviewer_inprogress_character = EveCharacter.objects.get(character_id=auth_info.main_char_id)
|
application.reviewer_inprogress_character = EveCharacter.objects.get(character_id=auth_info.main_char_id)
|
||||||
application.save()
|
application.save()
|
||||||
logger.info("Marked HRApplication for user %s to corp %s in progress by user %s" % (application.user, application.corp, request.user))
|
logger.info("Marked HRApplication for user %s to corp %s in progress by user %s" % (application.user, application.corp, request.user))
|
||||||
else:
|
else:
|
||||||
logger.error("Unable to mark HRApplication id %s in progress by user %s - hrapplication matching id not found." % (app_id, request.user))
|
logger.error("Unable to mark HRApplication id %s in progress by user %s - hrapplication matching id not found." % (app_id, request.user))
|
||||||
|
|
||||||
return HttpResponseRedirect("/hr_application_view/" + str(app_id))
|
return HttpResponseRedirect("/hr_application_view/" + str(app_id))
|
||||||
|
@ -185,7 +185,7 @@ class EveApiManager():
|
|||||||
api = evelink.api.API(api_key=(settings.CORP_API_ID, settings.CORP_API_VCODE))
|
api = evelink.api.API(api_key=(settings.CORP_API_ID, settings.CORP_API_VCODE))
|
||||||
corp = evelink.corp.Corp(api=api)
|
corp = evelink.corp.Corp(api=api)
|
||||||
corpinfo = corp.contacts()
|
corpinfo = corp.contacts()
|
||||||
results = corpinfo[0]
|
results = corpinfo.result
|
||||||
logger.debug("Got corp standings from settings: %s" % results)
|
logger.debug("Got corp standings from settings: %s" % results)
|
||||||
return results
|
return results
|
||||||
except evelink.api.APIError as error:
|
except evelink.api.APIError as error:
|
||||||
@ -194,6 +194,27 @@ class EveApiManager():
|
|||||||
logger.error("No corp API key supplied in settings. Unable to get standings.")
|
logger.error("No corp API key supplied in settings. Unable to get standings.")
|
||||||
return {}
|
return {}
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def get_corp_membertracking():
|
||||||
|
if settings.IS_CORP:
|
||||||
|
if settings.CORP_API_ID and settings.CORP_API_VCODE:
|
||||||
|
try:
|
||||||
|
logger.debug("Getting corp membertracking with api id %s" % settings.CORP_API_ID)
|
||||||
|
api = evelink.api.API(api_key=(settings.CORP_API_ID, settings.CORP_API_VCODE))
|
||||||
|
corp = evelink.corp.Corp(api=api)
|
||||||
|
membertracking = corp.members()
|
||||||
|
results = membertracking.result
|
||||||
|
logger.debug("Got corp membertracking from settings: %s" % results)
|
||||||
|
return results
|
||||||
|
except evelink.api.APIError as error:
|
||||||
|
logger.exception("Unhandled APIError occured.", exc_info=True)
|
||||||
|
else:
|
||||||
|
logger.error("No corp API key supplied in settings. Unable to get standings.")
|
||||||
|
else:
|
||||||
|
logger.error("Membertracking function only works in corporation mode.")
|
||||||
|
return {}
|
||||||
|
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def check_if_id_is_alliance(alliance_id):
|
def check_if_id_is_alliance(alliance_id):
|
||||||
logger.debug("Checking if id %s is an alliance." % alliance_id)
|
logger.debug("Checking if id %s is an alliance." % alliance_id)
|
||||||
@ -201,7 +222,7 @@ class EveApiManager():
|
|||||||
api = evelink.api.API()
|
api = evelink.api.API()
|
||||||
eve = evelink.eve.EVE(api=api)
|
eve = evelink.eve.EVE(api=api)
|
||||||
alliance = eve.alliances()
|
alliance = eve.alliances()
|
||||||
results = alliance[0][int(alliance_id)]
|
results = alliance.result[int(alliance_id)]
|
||||||
if results:
|
if results:
|
||||||
logger.debug("Confirmed id %s is an alliance." % alliance_id)
|
logger.debug("Confirmed id %s is an alliance." % alliance_id)
|
||||||
return True
|
return True
|
||||||
|
@ -117,10 +117,17 @@
|
|||||||
|
|
||||||
{% if perms.auth.corp_stats %}
|
{% if perms.auth.corp_stats %}
|
||||||
<li>
|
<li>
|
||||||
<a {% ifequal request.path "/corporation_stats" %} class="active" {% endifequal %}
|
<a {% ifequal request.path "/corporation_stats/" %} class="active" {% endifequal %}
|
||||||
href="{% url 'auth_corp_stats' %}"><i
|
href="{% url 'auth_corp_stats' %}"><i
|
||||||
class="fa fa-share-alt fa-fw grayiconecolor"></i> Corporation Stats</a>
|
class="fa fa-share-alt fa-fw grayiconecolor"></i> Corporation Stats</a>
|
||||||
</li>
|
</li>
|
||||||
|
{% if IS_CORP %}
|
||||||
|
<li>
|
||||||
|
<a {% ifequal request.path "/corp_utils/" %} class="active" {% endifequal %}
|
||||||
|
href="{% url 'auth_corp_stats' %}"><i
|
||||||
|
class="fa fa-chain fa-fw grayiconecolor"></i> Corporation Stats</a>
|
||||||
|
</li>
|
||||||
|
{% endif %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% if perms.auth.group_management %}
|
{% if perms.auth.group_management %}
|
||||||
|
102
stock/templates/registered/corputils.html
Normal file
102
stock/templates/registered/corputils.html
Normal file
@ -0,0 +1,102 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<title>{% extends "public/base.html" %}
|
||||||
|
{% block title %}Alliance Auth{% endblock %}
|
||||||
|
{% block page_title %}Corporation Stats{% endblock page_title %}
|
||||||
|
{% load corputils_extras %}
|
||||||
|
|
||||||
|
{% block content %}
|
||||||
|
|
||||||
|
<div class="col-lg-12">
|
||||||
|
<h1 class="page-header text-center">Corporation Member Data</h1>
|
||||||
|
{% if perms.auth.member %}
|
||||||
|
<div class="col-lg-12 container" id="example">
|
||||||
|
{% if corp %}
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-lg-12">
|
||||||
|
<div class="panel panel-default">
|
||||||
|
<div class="panel-heading">Corporation</div>
|
||||||
|
|
||||||
|
<div class="panel-body">
|
||||||
|
<div class="col-lg-5 col-sm-2"><img class=
|
||||||
|
"ra-avatar img-responsive" src=
|
||||||
|
"https://image.eveonline.com/Corporation/{{ corp.corporation_id }}_128.png">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-lg-7 col-sm-2">
|
||||||
|
<h4 class="">Name: {{ corp.corporation_name }}</h4>
|
||||||
|
|
||||||
|
<p>Ticker: {{ corp.corporation_ticker }}</p>
|
||||||
|
|
||||||
|
<p>Member: {{ corp.member_count }}</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="col-lg-12">
|
||||||
|
<div class="panel panel-default">
|
||||||
|
<div class="panel-heading">Registered Characters</div>
|
||||||
|
<div class="panel-body">
|
||||||
|
<div style="overflow:auto;overflow-y:auto;">
|
||||||
|
<table class="table table-condensed">
|
||||||
|
<tr>
|
||||||
|
<th class="text-center">Main character</th>
|
||||||
|
<th class="text-center">Character list</th>
|
||||||
|
</tr>
|
||||||
|
{% for mainid, alts in characters_with_api.items %}
|
||||||
|
<tr>
|
||||||
|
<td class="text-center">
|
||||||
|
<p class="">{{ alts|get_dict_item:mainid }}</p>
|
||||||
|
</td>
|
||||||
|
<td class="text-center">
|
||||||
|
{% for charid, name in alts.items %}
|
||||||
|
<p class="">{{ name}}</p>
|
||||||
|
{% endfor %}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
{% endfor %}
|
||||||
|
{% for mainid, alts in characters_without_api.items %}
|
||||||
|
<tr bgcolor="#DD5500">
|
||||||
|
<td class="text-center">
|
||||||
|
<p class="">{{ alts|get_dict_item:mainid }}</p>
|
||||||
|
</td>
|
||||||
|
<td class="text-center">
|
||||||
|
<p class="">No API registered!</p>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
{% endfor %}
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{% else %}
|
||||||
|
<div class="container-fluid">
|
||||||
|
<div class="col-md-4 col-md-offset-4">
|
||||||
|
<div class="row">
|
||||||
|
<div class="alert alert-danger text-center" role="alert">No corporation model found. Contact your admin.</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
</div>
|
||||||
|
{% else %}
|
||||||
|
{% if IS_CORP %}
|
||||||
|
<div class="alert alert-danger" role="alert">You are not in the corporation.</div>
|
||||||
|
{% else %}
|
||||||
|
<div class="alert alert-danger" role="alert">You are not in the alliance.</div>
|
||||||
|
{% endif %}
|
||||||
|
{% endif %}
|
||||||
|
</div>
|
||||||
|
{% endblock content %}
|
||||||
|
</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
Loading…
x
Reference in New Issue
Block a user