Added all files

parent 39be5711
FROM continuumio/miniconda3
ADD Softlab.yml /tmp/Softlab.yml
RUN conda config --set ssl_verify no
RUN conda env create -f /tmp/Softlab.yml
RUN echo "source activate $(head -1 /tmp/Softlab.yml | cut -d' ' -f2)" > ~/.bashrc
ENV PATH /opt/conda/envs/$(head -1 /tmp/Softlab.yml | cut -d' ' -f2)/bin:$PATH
# Create app directory
WORKDIR /usr/src/app
COPY . .
EXPOSE 8000
CMD [ "python3", "main.py" ]
\ No newline at end of file
web: PORT=$PORT python3 main.py
name: Softlab
channels:
- defaults
dependencies:
- _libgcc_mutex=0.1=main
- ca-certificates=2019.10.16=0
- certifi=2019.9.11=py37_0
- libedit=3.1.20181209=hc058e9b_0
- libffi=3.2.1=hd88cf55_4
- libgcc-ng=9.1.0=hdf63c60_0
- libstdcxx-ng=9.1.0=hdf63c60_0
- ncurses=6.1=he6710b0_1
- openssl=1.1.1d=h7b6447c_3
- pip=19.3.1=py37_0
- python=3.7.4=h265db76_1
- readline=7.0=h7b6447c_5
- setuptools=41.4.0=py37_0
- sqlite=3.30.1=h7b6447c_0
- tk=8.6.8=hbc83047_0
- wheel=0.33.6=py37_0
- xz=5.2.4=h14c3975_4
- zlib=1.2.11=h7b6447c_3
- pip:
- absl-py==0.8.1
- astor==0.8.0
- boto==2.49.0
- boto3==1.10.4
- botocore==1.13.4
- cachetools==3.1.1
- chardet==3.0.4
- click==7.0
- docutils==0.15.2
- gast==0.2.2
- gensim==3.8.1
- google-auth==1.6.3
- google-pasta==0.1.7
- grpcio==1.24.3
- h11==0.8.1
- h5py==2.10.0
- httptools==0.0.13
- idna==2.8
- jinja2==2.10.3
- jmespath==0.9.4
- keras-applications==1.0.8
- keras-preprocessing==1.1.0
- markdown==3.1.1
- markupsafe==1.1.1
- nltk==3.4.5
- numpy==1.17.3
- opt-einsum==3.1.0
- protobuf==3.10.0
- pyasn1==0.4.7
- pyasn1-modules==0.2.7
- python-dateutil==2.8.0
- python-multipart==0.0.5
- requests==2.22.0
- rsa==4.0
- s3transfer==0.2.1
- scipy==1.3.1
- six==1.12.0
- smart-open==1.8.4
- starlette==0.12.10
- tensorboard==2.0.0
- tensorflow==2.0.0
- tensorflow-estimator==2.0.1
- termcolor==1.1.0
- urllib3==1.25.6
- uvicorn==0.9.1
- uvloop==0.13.0
- websockets==8.0.2
- werkzeug==0.16.0
- wrapt==1.11.2
prefix: /home/shreyansh/.conda/envs/Softlab
#Create a conda environment
conda create --name <environment-name> python=<version:2.7/3.5>
#To create a requirements.txt file:
conda list #Gives you list of packages used for the environment
conda list -e > requirements.txt #Save all the info about packages to your folder
#To export environment file
activate <environment-name>
conda env export > <environment-name>.yml
#For other person to use the environment
conda env create -f <environment-name>.yml
\ No newline at end of file
from google.oauth2 import service_account
from google.auth.transport.requests import AuthorizedSession
from starlette.applications import Starlette
from starlette.templating import Jinja2Templates
from starlette.responses import JSONResponse, PlainTextResponse
from prediction import predict
import uvicorn
import json
import requests
import os
scopes = [
"https://www.googleapis.com/auth/userinfo.email",
"https://www.googleapis.com/auth/firebase.database"
]
templates = Jinja2Templates(directory='templates')
app = Starlette(debug=True)
credentials = service_account.Credentials.from_service_account_file("./serviceKey.json", scopes=scopes)
authed_session = AuthorizedSession(credentials)
@app.route('/auth')
async def show_index(request):
return templates.TemplateResponse('index.html', {'request': request})
@app.route('/auth',methods=["POST"])
async def firebase_login(request):
body = await request.form()
email = body['email']
password = body['password']
request_ref = "https://www.googleapis.com/identitytoolkit/v3/relyingparty/verifyPassword?key=AIzaSyBrnRxGfzyWvLZu9XMUnbZTPpu8NxHBRE0"
headers = {"content-type": "application/json; charset=UTF-8"}
data = json.dumps({"email": email, "password": password, "returnSecureToken": True})
response = requests.post(request_ref, headers=headers, data=data)
if response.status_code!=200:
try:
message = json.loads(response._content)['error']['message']
except:
message = "Some error Occured."
return templates.TemplateResponse('login.html', {'request': request, 'err_msg':message})
else:
return templates.TemplateResponse('index.html', {'request': request})
@app.route('/registration',methods=["POST"])
async def firebase_register(request):
body = await request.form()
email = body['email']
password = body['pass1']
confirm = body['pass2']
if password!=confirm:
message = 'Password do not match.'
return templates.TemplateResponse('register.html', {'request': request, 'err_msg':message})
request_ref = "https://www.googleapis.com/identitytoolkit/v3/relyingparty/signupNewUser?key=AIzaSyBrnRxGfzyWvLZu9XMUnbZTPpu8NxHBRE0"
headers = {"content-type": "application/json; charset=UTF-8" }
data = json.dumps({"email": email, "password": password, "returnSecureToken": True})
response = requests.post(request_ref, headers=headers, data=data)
if response.status_code!=200:
try:
message = json.loads(response._content)['error']['message']
except:
message = '<div class="alert alert-danger" role="alert">'+"Some error Occured."+"</div>"
return templates.TemplateResponse('register.html', {'request': request, 'err_msg':message})
else:
message = "Successfully registered."
return templates.TemplateResponse('login.html', {'request': request, 'err_msg':message})
@app.route('/')
async def login(request):
message = ''
return templates.TemplateResponse('login.html', {'request': request,'err_msg':message})
@app.route('/register')
async def login(request):
message = ''
return templates.TemplateResponse('register.html', {'request': request,'err_msg':message})
@app.route('/contribute')
async def contrbPage(request):
return templates.TemplateResponse('contribute.html', {'request': request})
@app.route('/{prompt}')
async def getEssay(request):
prompt = request.path_params['prompt']
response = authed_session.get("https://softlab-ba722.firebaseio.com/"+prompt+".json")
data = response.json().values()
return templates.TemplateResponse('topic.html', {'request': request,'essayResponse':data,'topic':prompt})
@app.route('/evaluateFile',methods=["POST"])
async def evaluateFile(request):
body = await request.form()
contents = await body["essayFile"].read()
contents = contents.decode('utf-8')
score = predict(contents)
score = round(float(score)/60*100,2)
return templates.TemplateResponse('score.html', {'request': request, 'score':score})
@app.route('/evaluate',methods=["POST"])
async def evaluate(request):
body = await request.form()
score = predict(body['essay'])
score = round(float(score)/60*100,2)
return templates.TemplateResponse('score.html', {'request': request, 'score':score})
@app.route('/contribute',methods=["POST"])
async def evaluate(request):
body = await request.form()
score, essay, prompt = body['score'], body['essay'], body['prompt']
# score = float(score)/100
json = {
"essay": essay,
"score": score
}
message = "Success, Thanks for your invaluable contribution!"
response = authed_session.post("https://softlab-ba722.firebaseio.com/"+prompt+"/.json",None,json)
if response.status_code!=200:
message = "Oops some error occured please try after some time."
return templates.TemplateResponse('thanks.html', {'request': request, 'score':score, 'message':message, 'essay':essay})
if __name__ == '__main__':
port = int(os.environ.get('PORT', 5000))
uvicorn.run(app, host='0.0.0.0', port=port)
\ No newline at end of file
import os
import re
import sys
import nltk
import warnings
import numpy as np
from tensorflow import keras
from nltk.corpus import stopwords
from gensim.models import KeyedVectors
nltk.download('stopwords')
warnings.filterwarnings("ignore")
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '3'
def tokenizeEssay(essay):
""" Adding everything except stopwords to wordsList"""
essay = re.sub("[^a-zA-Z]", " ", essay)
words = essay.lower().split()
stops = set(stopwords.words("english"))
words = [w for w in words if not w in stops]
return (words)
def makeFeatureVec(words, model, num_features):
"""Make Feature Vector from the words list of an Essay."""
featureVec = np.zeros((num_features,),dtype="float32")
num_words = 0.
index2word_set = set(model.index2word)
for word in words:
if word in index2word_set:
num_words += 1
featureVec = np.add(featureVec,model[word])
featureVec = np.divide(featureVec,num_words)
return featureVec
def getAvgFeatureVecs(essays, model, num_features):
"""Main function to generate the word vectors for word2vec model."""
counter = 0
essayFeatureVecs = np.zeros((len(essays),num_features),dtype="float32")
for essay in essays:
essayFeatureVecs[counter] = makeFeatureVec(essay, model, num_features)
counter = counter + 1
return essayFeatureVecs
def predict(essay):
model = KeyedVectors.load_word2vec_format('models/word2vecmodel.bin', binary=True)
essay_tokens = []
essay_tokens.append(tokenizeEssay(essay))
testEssayVec = getAvgFeatureVecs(essay_tokens, model, 300)
testEssayVec = np.array(testEssayVec)
testEssayVec = np.reshape(testEssayVec,(testEssayVec.shape[0], 1, testEssayVec.shape[1]))
evaluator = keras.models.load_model('models/final_lstm.h5')
y_pred = evaluator.predict(testEssayVec)
y_pred = 0 if np.isnan(y_pred[0][0]) else np.around(y_pred[0][0])
return str(y_pred)
\ No newline at end of file
absl-py==0.8.1
astor==0.8.0
boto==2.49.0
boto3==1.10.4
botocore==1.13.4
cachetools==3.1.1
chardet==3.0.4
click==7.0
docutils==0.15.2
gast==0.2.2
gensim==3.8.1
google-auth==1.6.3
google-pasta==0.1.7
grpcio==1.24.3
h11==0.8.1
h5py==2.10.0
httptools==0.0.13
idna==2.8
jinja2==2.10.3
jmespath==0.9.4
keras-applications==1.0.8
keras-preprocessing==1.1.0
markdown==3.1.1
markupsafe==1.1.1
nltk==3.4.5
numpy==1.17.3
opt-einsum==3.1.0
protobuf==3.10.0
pyasn1==0.4.7
pyasn1-modules==0.2.7
python-dateutil==2.8.0
python-multipart==0.0.5
requests==2.22.0
rsa==4.0
s3transfer==0.2.1
scipy==1.3.1
six==1.12.0
smart-open==1.8.4
starlette==0.12.10
tensorboard==2.0.0
tensorflow==2.0.0a0
tensorflow-estimator==2.0.1
termcolor==1.1.0
urllib3==1.25.6
uvicorn==0.9.1
uvloop==0.13.0
websockets==8.0.2
werkzeug==0.16.0
wrapt==1.11.2
\ No newline at end of file
{
"type": "service_account",
"project_id": "softlab-ba722",
"private_key_id": "69f29483585f2434ae3f23bcf849644fac6112f5",
"private_key": "-----BEGIN PRIVATE KEY-----\nMIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCaCroabgwY8SVy\nanWrO2WTSCN/ukk8RQPp6yWuOjuEzjifsc9+zuA/kgrY7yQQDC7CgdAmJgdJgeKv\nD4o9hkjvqBDSlvYm035S530S/OdOFF9QTjMqonzRn8KlF3Vgutwke3g4ORQ0yK5r\n30sLqDlSYWxsj10t/wZyxqDopP7Q/pZpPA6fywquL5glLDk85AyTpSB5BPMlZXAV\nhoRdK2zxkUvWmcptt73fpmQlJZ/hrPt8sQC74R/IVmSGOh82vd5hFTVEvLFvhy/w\nNtQtoPFP7KBdnyaojFyPvDIfd6Kjk/Z665O8qEnsvgaira2Tkwe6sv8fEpF9G5Pc\ncj6CcgB5AgMBAAECggEAA1F5VlHqDUx+icMs0zo1kzFh4GG/K57x+WNBHcpv10nI\n8vm11k23C2+GL8ug+36DsFlzBitaC1WSsEI1sGMY5Z65dAvf9BCovzjw2wybH/W0\n4uo4VHIJHcvi+cLyWpnT3a5SNeXW31c2WKkH+RGP4IwsNX92GqRMe4L3WuOZAJ/+\nv85m/okNixtubkJa4OVhilw+lHudXoCq8GKa6WY0ESw7QfBe5Fl+hOs/RA9tFjMH\nMwmYKnp3UmdPuRSEQb38BtGtEixvMsE/FjaA0e2U32IQ6eqE8QAPMMn+v4RGoCNV\n5Y4yZjQBHmb7mnPJbxcVmBgYPxxJo6cR+vVWqowSYQKBgQDYO3Z1jRH8SbIlzbHz\nrSQocP+UShpLrVYsR/24E5uOmaeD8QIoNsI4rC96NH+PUiJog2dzdBjAuVl/aw5h\n126K82X/EwzzNwyn4NCeehZpWAc2vS+omsrnowO3aT92cqdJ3sGG+xz7dhlkab0x\nkw9o2RO4es7Acr/XE7XPObZwEQKBgQC2Xz+30h0X+WqJHCyuPLJB14WwUYQuaAzT\n0Zs9h8jQW5ORjljJTD3Cx7P9g4puBCoTqiBlsNevXkxAYfvxL/AH5INNnRTQulMe\nqpsbvM6dAnhUuyY2pkIrjodUrLHp1ok0oZZcSicD3GYppXFvMeEcYNcFJHZ0V/on\nrRHpY4bx6QKBgC7Xasj6P1wsxsfDsHn+Fugf2m3QQ7QDH7jF+6OFs9wHUy+U5Qe7\nHQXT3xEVEFEG1OdZF+79xmLxg/7DPUFavtqg8YZ5JQQG99niLK83+WTmqeFkyE85\nAR1+xc5UoWfSXIT3GWtZOKUMp2GGOnLjzaHD7K65A9LSyNYZsffrI6dRAoGBAKNy\nWjj1Jv4Fm2WmyqSd4WUBM+ACLuUoe9abVPaga2nRqUAaw5glrHSVZsseyUIwmUVm\nhAKfq66QZOaO6q4OuKFaPBOjZLRtSXGCleEWJlaxkAbgdC8mcsd2xfMtk4ZvsChr\nacbs7mqXbTiF/lQZ8Bbu88a4FzHOZ3SHuDXj7V2BAoGBALmcmMmX80y1JwlcdStp\nHaPqpSIv7O/AmlOCJe4jtBKUPf8MtcGiyu3pF2KPN9AdYrJdlVrzhi/KDzOmV66J\njXFznZq/i59cZzUz5rtV6sDVvokn+teAxazVkJheuzlhxZchn+a5WOB+KUNpiFVj\ntoqoXAFLA+0g3WQtNhzxOcWn\n-----END PRIVATE KEY-----\n",
"client_email": "firebase-adminsdk-kbpgc@softlab-ba722.iam.gserviceaccount.com",
"client_id": "109339398149190862850",
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
"token_uri": "https://oauth2.googleapis.com/token",
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
"client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/firebase-adminsdk-kbpgc%40softlab-ba722.iam.gserviceaccount.com"
}
\ No newline at end of file
<!doctype html>
<html lang="en">
<head>
<!-- Required meta tags -->
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<!-- Bootstrap CSS -->
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
<script src="https://kit.fontawesome.com/d74a3cd9ba.js" crossorigin="anonymous"></script>
<title>Contribute</title>
</head>
<body>
<div class="container">
<!-- navbar component from getbootstrap.com -->
<nav class="navbar navbar-expand-lg navbar-dark bg-dark" style="margin-top: 1px">
<a class="navbar-brand" href="/auth">Home</a>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNavAltMarkup" aria-controls="navbarNavAltMarkup" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarNavAltMarkup">
<div class="navbar-nav">
<!-- <a class="nav-item nav-link active" href="#">Home <span class="sr-only">(current)</span></a> -->
<a class="nav-item nav-link" href="/contribute">Contribute</a><!-- Internal page links -->
<a class="nav-item nav-link" href="https://github.com/KartavyaKothari/Automated-essay-grading-UI">About</a><!-- Internal page links -->
<a class="nav-item nav-link" href="#links"></a><!-- Internal page links -->
<a class="nav-item nav-link" href="/">Logout</a>
</div>
</div>
</nav>
<br />
<div class="jumbotron">
<h1 class="display-4" style="font-size:5vw;">Add your essay to our existing corpus</h1>
<p class="lead" style="font-size:1.2em;">This is a simple essay evaluation unit, an interface for calling essay evaluation model (ASAP)</p>
<hr class="my-4">
<p>
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text">Enter essay text here</span>
</div>
<textarea class="form-control" form="contribute" name="essay" aria-label="With textarea"></textarea>
</div>
</p>
<div class="input-group mb-3">
<p>
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text">Topic for essay</span>
</div>
<input type="text" class="form-control" form="contribute" name="prompt" aria-label="With textarea"></textarea>
</div>
</p>
</div>
<div class="input-group mb-3">
<input type="text" class="form-control" form="contribute" name="score" placeholder="Essay Score" aria-label="Recipient's username" aria-describedby="basic-addon2">
<div class="input-group-append">
<span class="input-group-text" id="basic-addon2">/ 100</span>
</div>
</div>
<div class="text-center">
<form action="/contribute" method="post" id="contribute">
<input type="submit" class="btn btn-primary btn-lg text-center" value="Contribute!" name="submit" />
</form>
</div>
</div>
</div>
<!-- Optional JavaScript -->
<!-- jQuery first, then Popper.js, then Bootstrap JS -->
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script>
</body>
</html>
\ No newline at end of file
<!doctype html>
<html lang="en">
<head>
<!-- Required meta tags -->
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<!-- Bootstrap CSS -->
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
<script src="https://kit.fontawesome.com/d74a3cd9ba.js" crossorigin="anonymous"></script>
<title>Evaluate</title>
</head>
<body>
<div class="container">
<!-- navbar component from getbootstrap.com -->
<nav class="navbar navbar-expand-lg navbar-dark bg-dark" style="margin-top: 1px">
<a class="navbar-brand" href="/auth">Home</a>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNavAltMarkup" aria-controls="navbarNavAltMarkup" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarNavAltMarkup">
<div class="navbar-nav">
<!-- <a class="nav-item nav-link active" href="#">Home <span class="sr-only">(current)</span></a> -->
<a class="nav-item nav-link" href="/contribute">Contribute</a><!-- Internal page links -->
<a class="nav-item nav-link" href="https://github.com/KartavyaKothari/Automated-essay-grading-UI">About</a><!-- Internal page links -->
<a class="nav-item nav-link" href="#links"></a><!-- Internal page links -->
<a class="nav-item nav-link" href="/">Logout</a>
</div>
</div>
</nav>
<br />
<div class="jumbotron">
<h1 class="display-4" style="font-size:5vw;"><i class="fas fa-graduation-cap"></i>Automated essay grading</h1>
<p class="lead" style="font-size:1.2em;">This is a simple essay evaluation unit, an interface for calling essay evaluation model (ASAP)</p>
<hr class="my-4">
<p>
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text">Enter essay text here</span>
</div>
<textarea class="form-control" aria-label="With textarea" form="evaluation" name="essay"></textarea>
</div>
</p>
<div class="text-center">
<form action="/evaluate" method="post" id="evaluation">
<input type="submit" class="btn btn-primary btn-lg text-center" value="Evaluate" name="submit" />
</form>
</div>
<div class="text-center">
<br>
--- OR ---
<form action="/evaluateFile" method="post" id="evaluationFile" enctype="multipart/form-data">
<input type="file" class="btn btn-lg text-center" value="Evaluate" name="essayFile" />
<input type="Submit" class="btn btn-primary btn-lg text-center" value="Evaluate" name="submit" />
</form>
</div>
</div>
</div>
<!-- Optional JavaScript -->
<!-- jQuery first, then Popper.js, then Bootstrap JS -->
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script>
<!-- The core Firebase JS SDK is always required and must be listed first -->
<script src="/__/firebase/7.5.0/firebase-app.js"></script>
<!-- TODO: Add SDKs for Firebase products that you want to use
https://firebase.google.com/docs/web/setup#available-libraries -->
<script src="/__/firebase/7.5.0/firebase-analytics.js"></script>
<!-- Initialize Firebase -->
<script src="/__/firebase/init.js"></script>
</body>
</html>
\ No newline at end of file
<!doctype html>
<html lang="en">
<head>
<!-- Required meta tags -->
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<!-- Bootstrap CSS -->
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
<script src="https://kit.fontawesome.com/d74a3cd9ba.js" crossorigin="anonymous"></script>
<title>Login page</title>
</head>
<body>
<div class="container">
<!-- navbar component from getbootstrap.com -->
<nav class="navbar navbar-expand-lg navbar-dark bg-dark" style="margin-top: 1px">
<a class="navbar-brand" href="/">Home</a>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNavAltMarkup" aria-controls="navbarNavAltMarkup" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarNavAltMarkup">
<div class="navbar-nav">
<!-- <a class="nav-item nav-link active" href="#">Home <span class="sr-only">(current)</span></a> -->
<a class="nav-item nav-link" href="/">Contribute</a><!-- Internal page links -->
<a class="nav-item nav-link" href="https://github.com/KartavyaKothari/Automated-essay-grading-UI">About</a><!-- Internal page links -->
<a class="nav-item nav-link" href="#links"></a><!-- Internal page links -->
<a class="nav-item nav-link" href="/register">Register</a>
</div>
</div>
<!-- <div class="navbar-nav"> -->
<!-- <a class="nav-item nav-link active" href="#">Home <span class="sr-only">(current)</span></a> -->
<!-- Internal page links -->
<!-- </div> -->
</nav>
<br />
<div class="jumbotron">
<h1 class="display-4" style="font-size:5vw;"><i class="fas fa-graduation-cap"></i>Automated essay grading</h1>
<p class="lead" style="font-size:1.2em">This is a simple essay evaluation unit, an interface for calling essay evaluation model (ASAP)</p>
<hr class="my-4">
{{err_msg}}
<p>
<form action="/auth" method="post">
<div class="form-group">
<label for="exampleInputEmail1">Email address</label>
<input type="email" class="form-control" id="exampleInputEmail1" aria-describedby="emailHelp" placeholder="Enter email" name="email">
<small id="emailHelp" class="form-text text-muted">We'll never share your email with anyone else.</small>
</div>
<div class="form-group">
<label for="exampleInputPassword1">Password</label>
<input type="password" name ="password" class="form-control" id="exampleInputPassword1" placeholder="Password">
</div>
<button type="submit" class="btn btn-primary">Login</button>
</form>
</p>
</div>
</div>
<!-- Optional JavaScript -->
<!-- jQuery first, then Popper.js, then Bootstrap JS -->
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script>
</body>
</html>
\ No newline at end of file
<!doctype html>
<html lang="en">
<head>
<!-- Required meta tags -->
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<!-- Bootstrap CSS -->
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
<script src="https://kit.fontawesome.com/d74a3cd9ba.js" crossorigin="anonymous"></script>
<title>Registeration page</title>
</head>
<body>
<div class="container">
<!-- navbar component from getbootstrap.com -->
<nav class="navbar navbar-expand-lg navbar-dark bg-dark" style="margin-top: 1px">
<a class="navbar-brand" href="/">Home</a>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNavAltMarkup" aria-controls="navbarNavAltMarkup" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarNavAltMarkup">
<div class="navbar-nav">
<!-- <a class="nav-item nav-link active" href="#">Home <span class="sr-only">(current)</span></a> -->
<a class="nav-item nav-link" href="/">Contribute</a><!-- Internal page links -->
<a class="nav-item nav-link" href="https://github.com/KartavyaKothari/Automated-essay-grading-UI">About</a><!-- Internal page links -->
<a class="nav-item nav-link" href="#links"></a><!-- Internal page links -->
<a class="nav-item nav-link" href="/">Login</a>
</div>
</div>
<!-- <div class="navbar-nav"> -->
<!-- <a class="nav-item nav-link active" href="#">Home <span class="sr-only">(current)</span></a> -->
<!-- Internal page links -->
<!-- </div> -->
</nav>
<br />
<div class="jumbotron">
<h1 class="display-4" style="font-size:5vw;"><i class="fas fa-graduation-cap"></i>Automated essay grading</h1>
<p class="lead" style="font-size:1.2em;">This is a simple essay evaluation unit, an interface for calling essay evaluation model (ASAP)</p>
<hr class="my-4">
{{err_msg}}
<p>
<form action="/registration" method="post">
<div class="form-group">
<label for="username">Email address</label>
<input type="email" name="email" class="form-control" id="username" aria-describedby="emailHelp" placeholder="Enter email">
<small id="emailHelp" class="form-text text-muted">We'll never share your email with anyone else.</small>
</div>
<div class="form-group">
<label for="userpassword">New Password</label>
<input type="password" name="pass1" class="form-control" id="userpassword" placeholder="Password">
</div>
<div class="form-group">
<label for="userpasswordconfirm">Confirm Password</label>
<input type="password" name="pass2" class="form-control" id="userpasswordconfirm" placeholder="Password">
</div>
<button type="submit" class="btn btn-primary">Register</button>
</form>
</p>
</div>
</div>
<!-- Optional JavaScript -->
<!-- jQuery first, then Popper.js, then Bootstrap JS -->
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script>
</body>
</html>
\ No newline at end of file
<!doctype html>
<html lang="en">
<head>
<!-- Required meta tags -->
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<!-- Bootstrap CSS -->
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
<script src="https://kit.fontawesome.com/d74a3cd9ba.js" crossorigin="anonymous"></script>
<title>Essay score</title>
</head>
<body>
<div class="container">
<!-- navbar component from getbootstrap.com -->
<nav class="navbar navbar-expand-lg navbar-dark bg-dark" style="margin-top: 1px">
<a class="navbar-brand" href="/auth">Home</a>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNavAltMarkup" aria-controls="navbarNavAltMarkup" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarNavAltMarkup">
<div class="navbar-nav">
<!-- <a class="nav-item nav-link active" href="#">Home <span class="sr-only">(current)</span></a> -->
<a class="nav-item nav-link" href="/contribute">Contribute</a><!-- Internal page links -->
<a class="nav-item nav-link" href="https://github.com/KartavyaKothari/Automated-essay-grading-UI">About</a><!-- Internal page links -->
<a class="nav-item nav-link" href="#links"></a><!-- Internal page links -->
<a class="nav-item nav-link" href="/">Logout</a>
</div>
</div>
</nav>
<br />
<div class="jumbotron">
<h1 class="display-4 text-center" style="font-size:6vw;">{{score}}/100</h1>
<br />
<p class="lead" style="font-size:3vw;">This is the score you received for your entered essay</p>
<hr class="my-4">
<!-- <p class="lead">
Lorem ipsum dolor sit amet consectetur adipisicing elit. Voluptates architecto ipsam laborum accusantium soluta earum facere neque! Qui tempora totam sit, corrupti, harum esse natus, deserunt consequatur quidem perferendis magni.
</p>
<p class="lead">
Lorem ipsum dolor sit amet, consectetur adipisicing elit. At animi alias accusantium ex magnam architecto. Dicta fuga impedit ducimus quaerat possimus repellat quidem necessitatibus, iste, sapiente minima corporis fugiat consectetur.
</p>
<p class="lead">
Lorem ipsum dolor sit amet consectetur adipisicing elit. Assumenda asperiores tempore harum eveniet nostrum nobis numquam consectetur cupiditate! Alias quo, iure ipsam nesciunt similique aperiam quas accusantium cupiditate! Quibusdam, architecto!
</p> -->
</div>
</div>
<!-- Optional JavaScript -->
<!-- jQuery first, then Popper.js, then Bootstrap JS -->
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script>
</body>
</html>
\ No newline at end of file
<!doctype html>
<html lang="en">
<head>
<!-- Required meta tags -->
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<!-- Bootstrap CSS -->
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
<script src="https://kit.fontawesome.com/d74a3cd9ba.js" crossorigin="anonymous"></script>
<title>Thanks for the contribution</title>
</head>
<body>
<div class="container">
<!-- navbar component from getbootstrap.com -->
<nav class="navbar navbar-expand-lg navbar-dark bg-dark" style="margin-top: 1px">
<a class="navbar-brand" href="/auth">Home</a>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNavAltMarkup" aria-controls="navbarNavAltMarkup" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarNavAltMarkup">
<div class="navbar-nav">
<!-- <a class="nav-item nav-link active" href="#">Home <span class="sr-only">(current)</span></a> -->
<a class="nav-item nav-link" href="/contribute">Contribute</a><!-- Internal page links -->
<a class="nav-item nav-link" href="https://github.com/KartavyaKothari/Automated-essay-grading-UI">About</a><!-- Internal page links -->
<a class="nav-item nav-link" href="#links"></a><!-- Internal page links -->
<a class="nav-item nav-link" href="/">Logout</a>
</div>
</div>
</nav>
<br />
<div class="jumbotron">
<!-- <h1 class="display-4 text-center" style="font-size: 7em;">{{score}}/60</h1> -->
<!-- <br /> -->
<p class="lead">{{message}}</p>
<hr class="my-4">
<p class="text-center">Essay: {{essay}}</p>
<hr class="my-4">
<p class="text-center">Score: {{score}}</p>
<!-- <p class="lead">
Lorem ipsum dolor sit amet consectetur adipisicing elit. Voluptates architecto ipsam laborum accusantium soluta earum facere neque! Qui tempora totam sit, corrupti, harum esse natus, deserunt consequatur quidem perferendis magni.
</p>
<p class="lead">
Lorem ipsum dolor sit amet, consectetur adipisicing elit. At animi alias accusantium ex magnam architecto. Dicta fuga impedit ducimus quaerat possimus repellat quidem necessitatibus, iste, sapiente minima corporis fugiat consectetur.
</p>
<p class="lead">
Lorem ipsum dolor sit amet consectetur adipisicing elit. Assumenda asperiores tempore harum eveniet nostrum nobis numquam consectetur cupiditate! Alias quo, iure ipsam nesciunt similique aperiam quas accusantium cupiditate! Quibusdam, architecto!
</p> -->
</div>
</div>
<!-- Optional JavaScript -->
<!-- jQuery first, then Popper.js, then Bootstrap JS -->
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script>
</body>
</html>
\ No newline at end of file
<!doctype html>
<html lang="en">
<head>
<!-- Required meta tags -->
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<!-- Bootstrap CSS -->
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
<script src="https://kit.fontawesome.com/d74a3cd9ba.js" crossorigin="anonymous"></script>
<title>{{topic}}</title>
</head>
<body>
<div class="container">
<!-- navbar component from getbootstrap.com -->
<nav class="navbar navbar-expand-lg navbar-dark bg-dark" style="margin-top: 1px">
<a class="navbar-brand" href="/">Home</a>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNavAltMarkup" aria-controls="navbarNavAltMarkup" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarNavAltMarkup">
<div class="navbar-nav">
<!-- <a class="nav-item nav-link active" href="#">Home <span class="sr-only">(current)</span></a> -->
<a class="nav-item nav-link" href="/contribute">Contribute</a><!-- Internal page links -->
<a class="nav-item nav-link" href="https://github.com/KartavyaKothari/Automated-essay-grading-UI">About</a><!-- Internal page links -->
<a class="nav-item nav-link" href="#links"></a><!-- Internal page links -->
<a class="nav-item nav-link" href="/">Logout</a>
</div>
</div>
</nav>
<br />
<!-- </div> -->
<table class="table">
<thead class="">
<tr>
<!-- <th scope="col">#</th> -->
<th scope="col">Essays on {{topic}}</th>
<th scope="col">Score(x/100)</th>
<!-- <th scope="col">Handle</th> -->
</tr>
</thead>
{% for e in essayResponse %}
<tr>
<td>{{e['essay']}}</td>
<td>{{e['score']}}</td>
</tr>
{% endfor %}
</table>
<hr class="my-4">
<!-- <p class="lead">
Lorem ipsum dolor sit amet consectetur adipisicing elit. Voluptates architecto ipsam laborum accusantium soluta earum facere neque! Qui tempora totam sit, corrupti, harum esse natus, deserunt consequatur quidem perferendis magni.
</p>
<p class="lead">
Lorem ipsum dolor sit amet, consectetur adipisicing elit. At animi alias accusantium ex magnam architecto. Dicta fuga impedit ducimus quaerat possimus repellat quidem necessitatibus, iste, sapiente minima corporis fugiat consectetur.
</p>
<p class="lead">
Lorem ipsum dolor sit amet consectetur adipisicing elit. Assumenda asperiores tempore harum eveniet nostrum nobis numquam consectetur cupiditate! Alias quo, iure ipsam nesciunt similique aperiam quas accusantium cupiditate! Quibusdam, architecto!
</p> -->
<!-- </div> -->
</div>
<!-- Optional JavaScript -->
<!-- jQuery first, then Popper.js, then Bootstrap JS -->
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script>
</body>
</html>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment