from django.template import RequestContext from django.shortcuts import render_to_response from django.contrib.auth.decorators import permission_required from django.contrib.auth.decorators import login_required from django.shortcuts import HttpResponseRedirect from models import HRApplication from models import HRApplicationComment from forms import HRApplicationForm from forms import HRApplicationCommentForm from forms import HRApplicationSearchForm from eveonline.models import EveCorporationInfo from eveonline.models import EveCharacter from authentication.models import AuthServicesInfo @login_required def hr_application_management_view(request): personal_app = None corp_applications = None if request.user.is_superuser: corp_applications = HRApplication.objects.all() else: # Get the corp the member is in auth_info = AuthServicesInfo.objects.get(user=request.user) if auth_info.main_char_id != "": main_char = EveCharacter.objects.get(character_id=auth_info.main_char_id) corp = EveCorporationInfo.objects.get(corporation_id=main_char.corporation_id) corp_applications = HRApplication.objects.filter(corp=corp).filter(approved_denied=None) context = {'personal_apps': HRApplication.objects.all().filter(user=request.user), 'applications': corp_applications, 'search_form': HRApplicationSearchForm()} return render_to_response('registered/hrapplicationmanagement.html', context, context_instance=RequestContext(request)) @login_required def hr_application_create_view(request): success = False if request.method == 'POST': form = HRApplicationForm(request.POST) if form.is_valid(): application = HRApplication() application.user = request.user application.character_name = form.cleaned_data['character_name'] application.full_api_id = form.cleaned_data['full_api_id'] application.full_api_key = form.cleaned_data['full_api_key'] application.corp = EveCorporationInfo.objects.get(corporation_id=form.cleaned_data['corp']) application.is_a_spi = form.cleaned_data['is_a_spi'] application.about = form.cleaned_data['about'] application.extra = form.cleaned_data['extra'] application.save() success = True else: form = HRApplicationForm() context = {'form': form, 'success': success} return render_to_response('registered/hrcreateapplication.html', context, context_instance=RequestContext(request)) @login_required def hr_application_personal_view(request, app_id): if HRApplication.objects.filter(id=app_id).exists(): application = HRApplication.objects.get(id=app_id) if application.user != request.user: application = HRApplication() else: application = HRApplication() context = {'application': application} return render_to_response('registered/hrapplicationview.html', context, context_instance=RequestContext(request)) @login_required def hr_application_personal_removal(request, app_id): if HRApplication.objects.filter(id=app_id).exists(): application = HRApplication.objects.get(id=app_id) if application.user == request.user: application.delete() return HttpResponseRedirect("/hr_application_management/") @login_required @permission_required('auth.human_resources') def hr_application_view(request, app_id): if request.method == 'POST': form = HRApplicationCommentForm(request.POST) if form.is_valid(): auth_info = AuthServicesInfo.objects.get(user=request.user) comment = HRApplicationComment() comment.application = HRApplication.objects.get(id=int(form.cleaned_data['app_id'])) comment.commenter_user = request.user comment.commenter_character = EveCharacter.objects.get(character_id=auth_info.main_char_id) comment.comment = form.cleaned_data['comment'] comment.save() else: form = HRApplicationCommentForm() if HRApplication.objects.filter(id=app_id).exists(): application = HRApplication.objects.get(id=app_id) comments = HRApplicationComment.objects.all().filter(application=application) else: application = HRApplication() comments = [] context = {'application': application, 'comments': comments, 'comment_form': form} return render_to_response('registered/hrapplicationview.html', context, context_instance=RequestContext(request)) @login_required @permission_required('auth.human_resources') def hr_application_remove(request, app_id): if HRApplication.objects.filter(id=app_id).exists(): application = HRApplication.objects.get(id=app_id) if application: application.delete() return HttpResponseRedirect("/hr_application_management/") @login_required @permission_required('auth.human_resources') def hr_application_approve(request, app_id): if HRApplication.objects.filter(id=app_id).exists(): auth_info = AuthServicesInfo.objects.get(user=request.user) application = HRApplication.objects.get(id=app_id) application.approved_denied = True application.reviewer_user = request.user application.reviewer_character = EveCharacter.objects.get(character_id=auth_info.main_char_id) application.save() return HttpResponseRedirect("/hr_application_management/") @login_required @permission_required('auth.human_resources') def hr_application_reject(request, app_id): if HRApplication.objects.filter(id=app_id).exists(): auth_info = AuthServicesInfo.objects.get(user=request.user) application = HRApplication.objects.get(id=app_id) application.approved_denied = False application.reviewer_user = request.user application.reviewer_character = EveCharacter.objects.get(character_id=auth_info.main_char_id) application.save() return HttpResponseRedirect("/hr_application_management/") @login_required @permission_required('auth.human_resources') def hr_application_search(request): if request.method == 'POST': form = HRApplicationSearchForm(request.POST) if form.is_valid(): # Really dumb search and only checks character name # This can be improved but it does the job for now searchstring = form.cleaned_data['search_string'] applications = [] for application in HRApplication.objects.all(): if searchstring in application.character_name: applications.append(application) context = {'applications': applications, 'search_form': HRApplicationSearchForm()} return render_to_response('registered/hrapplicationsearchview.html', context, context_instance=RequestContext(request)) else: return HttpResponseRedirect("/hr_application_management/") @login_required @permission_required('auth.human_resources') def hr_application_mark_in_progress(request, app_id): if HRApplication.objects.filter(id=app_id).exists(): auth_info = AuthServicesInfo.objects.get(user=request.user) application = HRApplication.objects.get(id=app_id) application.reviewer_inprogress_character = EveCharacter.objects.get(character_id=auth_info.main_char_id) application.save() return HttpResponseRedirect("/hr_application_view/" + str(app_id))