from django.shortcuts import render, get_object_or_404
from django.http import HttpResponseRedirect, Http404, HttpResponse
from django.core.urlresolvers import reverse
from django.contrib import messages
from django.template.defaultfilters import slugify
from django.contrib.auth.decorators import permission_required

from modules.core.functions import *
from modules.core.decorators import *

#Forms
from forms import *

#Models
from models import *

from filetransfers.api import serve_file

@members_only
def applications(request):

    member = get_object_or_404(Member,user=request.user)
    applications = ExamApplication.objects.filter(member=member).order_by('-start_time')

    return render(request,'members/exam_application/applications.html',{'applications':applications})

@members_only
def view_application(request,application_id):

    member = get_object_or_404(Member,user=request.user)
    exam_application = get_object_or_404(ExamApplication,member=member,id=application_id)

    return render(request,'members/exam_application/view-application.html',{'application':exam_application})

@members_only
def download_degree_certificate(request,application_id):

    member = get_object_or_404(Member,user=request.user)
    exam_application = get_object_or_404(ExamApplication,member=member,id=application_id)

    return serve_file(request,exam_application.degree_certificate,save_as=True)

@members_only
def download_results_letter(request,application_id):

    member = get_object_or_404(Member,user=request.user)
    exam_application = get_object_or_404(ExamApplication,member=member,id=application_id)

    return serve_file(request,exam_application.exam_results_letter,save_as=True)

@permission_required('admin_users.can_access_exam_applications')
def download_references(request,exam_id,application_id):

    member = get_object_or_404(Member,user=request.user)
    exam_application = get_object_or_404(ExamApplication,member=member,id=application_id)

    return serve_file(request,application.reference_upload,save_as=True)

@members_only
def download_non_degree_evidence(request,application_id):

    member = get_object_or_404(Member,user=request.user)
    exam_application = get_object_or_404(ExamApplication,member=member,id=application_id)

    return serve_file(request,exam_application.non_degree_evidence,save_as=True)
