from django.shortcuts import render, HttpResponse
from .forms import UserRegistrationForm
from .models import UserRegistrationModel,UserImagePredictinModel
from django.contrib import messages
from django.core.files.storage import FileSystemStorage
from .utility.GetImageStressDetection import ImageExpressionDetect
from .utility.MyClassifier import KNNclassifier
from subprocess import Popen, PIPE
import subprocess
# Create your views here.
# Create your views here.
def UserRegisterActions(request):
if request.method == 'POST':
form = UserRegistrationForm(request.POST)
if form.is_valid():
print('Data is Valid')
form.save()
messages.success(request, 'You have been successfully registered')
form = UserRegistrationForm()
return render(request, 'UserRegistrations.html', {'form': form})
else:
messages.success(request, 'Email or Mobile Already Existed')
print("Invalid form")
else:
form = UserRegistrationForm()
return render(request, 'UserRegistrations.html', {'form': form})
def UserLoginCheck(request):
if request.method == "POST":
loginid = request.POST.get('loginname')
pswd = request.POST.get('pswd')
print("Login ID = ", loginid, ' Password = ', pswd)
try:
check = UserRegistrationModel.objects.get(loginid=loginid, password=pswd)
status = check.status
print('Status is = ', status)
if status == "activated":
request.session['id'] = check.id
request.session['loggeduser'] = check.name
request.session['loginid'] = loginid
request.session['email'] = check.email
print("User id At", check.id, status)
return render(request, 'users/UserHome.html', {})
else:
messages.success(request, 'Your Account Not at activated')
return render(request, 'UserLogin.html')
except Exception as e:
print('Exception is ', str(e))
pass
messages.success(request, 'Invalid Login id and password')
return render(request, 'UserLogin.html', {})
def UserHome(request):
return render(request, 'users/UserHome.html', {})
def UploadImageForm(request):
loginid = request.session['loginid']
data = UserImagePredictinModel.objects.filter(loginid=loginid)
return render(request, 'users/UserImageUploadForm.html', {'data': data})
def UploadImageAction(request):
image_file = request.FILES['file']
# let's check if it is a csv file
if not image_file.name.endswith('.jpg'):
messages.error(request, 'THIS IS NOT A JPG FILE')
fs = FileSystemStorage()
filename = fs.save(image_file.name, image_file)
# detect_filename = fs.save(image_file.name, image_file)
uploaded_file_url = fs.url(filename)
obj = ImageExpressionDetect()
emotion = obj.getExpression(filename)
username = request.session['loggeduser']
loginid = request.session['loginid']
email = request.session['email']
UserImagePredictinModel.objects.create(username=username,email=email,loginid=loginid,filename=filename,emotions=emotion,file=uploaded_file_url)
data = UserImagePredictinModel.objects.filter(loginid=loginid)
return render(request, 'users/UserImageUploadForm.html', {'data':data})
def UserEmotionsDetect(request):
if request.method=='GET':
imgname = request.GET.get('imgname')
obj = ImageExpressionDetect()
emotion = obj.getExpression(imgname)
loginid = request.session['loginid']
data = UserImagePredictinModel.objects.filter(loginid=loginid)
return render(request, 'users/UserImageUploadForm.html', {'data': data})
def UserLiveCameDetect(request):
obj = ImageExpressionDetect()
obj.getLiveDetect()
return render(request, 'users/UserLiveHome.html', {})
def UserKerasModel(request):
# p = Popen(["python", "kerasmodel.py --mode display"], cwd='StressDetection', stdout=PIPE, stderr=PIPE)
# out, err = p.communicate()
subprocess.call("python kerasmodel.py --mode display")
return render(request, 'users/UserLiveHome.html', {})
def UserKnnResults(request):
obj = KNNclassifier()
df,accuracy,classificationerror,sensitivity,Specificity,fsp,precision = obj.getKnnResults()
df.rename(columns={'Target': 'Target', 'ECG(mV)': 'Time pressure', 'EMG(mV)': 'Interruption', 'Foot GSR(mV)': 'Stress', 'Hand GSR(mV)': 'Physical Demand', 'HR(bpm)': 'Performance', 'RESP(mV)': 'Frustration', }, inplace=True)
data = df.to_html()
return render(request,'users/UserKnnResults.html',{'data':data,'accuracy':accuracy,'classificationerror':classificationerror,
'sensitivity':sensitivity,"Specificity":Specificity,'fsp':fsp,'precision':precision})