diff --git a/requirements.txt b/requirements.txt
index 25e029a..2265d58 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,6 +1,9 @@
amqp==2.3.2
billiard==3.5.0.4
+cachetools==4.2.0
celery==4.2.1
+certifi==2020.12.5
+chardet==4.0.0
click==6.7
Django==2.1.11
django-admin==1.3.0
@@ -9,16 +12,34 @@ django-excel-response2==2.0.8
django-extensions==2.1.2
django-six==1.0.4
et-xmlfile==1.0.1
+google-api-core==1.24.1
+google-api-python-client==1.12.8
+google-auth==1.24.0
+google-auth-httplib2==0.0.4
+google-auth-oauthlib==0.4.2
+googleapis-common-protos==1.52.0
+httplib2==0.18.1
+idna==2.10
jdcal==1.4
kombu==4.2.1
lxml==4.2.4
mysqlclient==1.3.13
+oauthlib==3.1.0
openpyxl==2.5.5
+protobuf==3.14.0
+pyasn1==0.4.8
+pyasn1-modules==0.2.8
python-docx==0.8.7
+python-dotenv==0.15.0
pytz==2018.5
redis==2.10.6
+requests==2.25.1
+requests-oauthlib==1.3.0
+rsa==4.7
screen==1.0.1
-six==1.11.0
+six==1.15.0
+uritemplate==3.0.1
+urllib3==1.26.2
vine==1.1.4
xlrd==1.1.0
xlwt==1.3.0
diff --git a/searchapp/admin.py b/searchapp/admin.py
index b057b23..b1fdce3 100644
--- a/searchapp/admin.py
+++ b/searchapp/admin.py
@@ -25,3 +25,4 @@ class QuestionsFilter(admin.ModelAdmin):
admin.site.register(Questions, QuestionsFilter)
admin.site.register(SubjectSplit)
admin.site.register(Chapter, ChapterFilter)
+admin.site.register(FormAuth)
diff --git a/searchapp/generate_doc.py b/searchapp/generate_doc.py
index 02e7e00..0431e60 100644
--- a/searchapp/generate_doc.py
+++ b/searchapp/generate_doc.py
@@ -1,10 +1,22 @@
from docx import Document
import datetime
import os
+from django.conf import settings
+from json import dumps, loads
+import pickle
+from .models import FormAuth
+import os.path
+from googleapiclient import errors
+from googleapiclient.discovery import build
+from google_auth_oauthlib.flow import InstalledAppFlow
+from google.auth.transport.requests import Request
qtype_to_section = {"1A": "A", "1B": "B", "2": "C", "3": "D", "5": "E"}
+SCOPES = ['https://www.googleapis.com/auth/forms']
+API_ID="MisrDt1oXa2FhUFiDHl9Yn5oDBuBhNfqu"
+
def get_no_of_questions(questions_mapping, question_type):
count = 0
for row in questions_mapping:
@@ -77,3 +89,35 @@ def convert_to_doc(questions_mapping, subject):
filepath = os.path.join('searchapp/static/docs', filename)
document.save(filepath)
return filepath
+
+def convert_to_form(questions_mapping, subject, required, heading, user):
+ creds = get_creds(user)
+ service = build('script', 'v1', credentials=creds)
+ required = dumps(required)
+ questions_mapping = dumps(questions_mapping)
+ request = {"function": "create_form", "parameters": [{"required": required, "heading": heading, "question_mapping": questions_mapping, "subject": subject}], "devMode": "true"}
+ response = service.scripts().run(body=request, scriptId=API_ID).execute()
+ return response
+
+def get_creds(user):
+ creds = None
+ flag = 0
+ if FormAuth.objects.filter(user=user).exists():
+ data = FormAuth.objects.get(user=user).creds
+ creds = pickle.loads(data)
+ flag = 1
+ if not creds or not creds.valid:
+ if creds and creds.expired and creds.refresh_token:
+ creds.refresh(Request())
+ else:
+ flow = InstalledAppFlow.from_client_secrets_file(
+ 'credentials.json', SCOPES)
+ creds = flow.run_local_server(port=0)
+ if(flag == 1):
+ token = FormAuth.objects.get(user=user)
+ token.creds = pickle.dumps(creds)
+ token.save()
+ else:
+ data = FormAuth(user=user, creds=pickle.dumps(creds))
+ data.save()
+ return creds
diff --git a/searchapp/models.py b/searchapp/models.py
index d7edb1c..7afd12b 100644
--- a/searchapp/models.py
+++ b/searchapp/models.py
@@ -60,6 +60,10 @@ def __str__(self):
return self.subject_name
+class FormAuth(models.Model):
+ user = models.OneToOneField(User, on_delete=models.CASCADE, primary_key=True)
+ creds = models.BinaryField(max_length=800)
+
class Questions(models.Model):
ONE = 1
TWO = 2
@@ -108,7 +112,7 @@ class SubjectSplit(models.Model):
question_type = models.IntegerField(
choices=Questions.QUESTION_TYPE_CHOICES, null=True, default=Questions.TEXT)
total_questions = models.IntegerField(default=0)
- questions_to_attempt = models.IntegerField(default=0)
+ questions_to_attempt = models.PositiveIntegerField(default=0)
def __str__(self):
return self.name
diff --git a/searchapp/static/student_view.js b/searchapp/static/student_view.js
index 48cc416..b34245b 100644
--- a/searchapp/static/student_view.js
+++ b/searchapp/static/student_view.js
@@ -1,611 +1,760 @@
-$(document).ready(function(){
-
- // on selecting type of worksheet
- $('#worksheetType').dropdown({
- onChange: function (value, text, $selectedItem) {
- if(value == 'test') {
- $("#test-div").show();
- $("#generic-div").hide();
- $("#customized-div").hide();
- } else if(value == 'generic') {
- $("#test-div").hide();
- $("#generic-div").show();
- $("#customized-div").hide();
- } else if(value == 'customized') {
- $("#test-div").hide();
- $("#generic-div").hide();
- $("#customized-div").show();
- }
- },
- });
-
- // function called when submit button clicked
- function submit_click(e) {
- let worksheetType = $("#worksheetType").dropdown('get value');
- if (worksheetType == 'test') {
- let subject = $("#test-subject").dropdown('get value');
- let chapters = $('#test-chapter').dropdown('get values');
- let board = $('#test-board').dropdown('get value');
- let formData = {
- "subject": subject,
- "board": board,
- "chapters[]": chapters
- }
-
- $.ajax({
- url: BASE_DIR + "/get_test_paper",
- method : "get",
- data: formData,
- headers: { "X-CSRFToken": csrftoken,},
- success: function(response) {
- $(function(){
- new PNotify({
- title: 'Success!',
- text: 'Your document is currently being generated.',
- type: 'success'
- });
- });
- download_token(response.token);
- },
- });
- } else if (worksheetType == 'generic') {
- let subject = $("#generic-subject").dropdown('get value');
- let chapters = $("#generic-chapter").dropdown('get values');
- let q1a = $('#generic-noOfQ1a').val() || 0;
- let q1b = $('#generic-noOfQ1b').val() || 0;
- let q2 = $('#generic-noOfQ2').val() || 0;
- let q3 = $('#generic-noOfQ3').val() || 0;
- let q4 = $('#generic-noOfQ4').val() || 0;
- let q5 = $('#generic-noOfQ5').val() || 0;
- let random_setting = $("#random-setting").dropdown('get value');
- let formData = {
- subject: subject,
- chapters: chapters,
- breakup: [q1a, q1b, q2, q3, q4, q5],
- random_setting: random_setting,
- };
-
- $.ajax({
- url: BASE_DIR + "/get_generic_paper",
- method : "get",
- data: formData,
- headers: { "X-CSRFToken": csrftoken,},
- success: function(response) {
- $(function(){
- new PNotify({
- title: 'Success!',
- text: 'Your document is currently being generated.',
- type: 'success'
- });
- download_token(response.token);
- });
- },
- });
- } else if (worksheetType == 'customized') {
- let subject = $("#customized-subject").dropdown('get value');
- let chapters = $("#customized-chapter").dropdown('get values');
- let q1a = $('#customized-noOfQ1a').val() || 0;
- let q1b = $('#customized-noOfQ1b').val() || 0;
- let q2 = $('#customized-noOfQ2').val() || 0;
- let q3 = $('#customized-noOfQ3').val() || 0;
- let q4 = $('#customized-noOfQ4').val() || 0;
- let q5 = $('#customized-noOfQ5').val() || 0;
- let student_names = $("#stud_name").dropdown('get values');
- let file_data = $('#realfile').prop("files")[0];
- let formData = new FormData();
- formData.append("file",file_data);
- formData.append('subject',subject);
- formData.append('chapters[]',chapters);
- formData.append('breakup[]',[q1a,q1b,q2,q3,q4,q5]);
- formData.append('student_names[]',student_names);
- $.ajax({
- enctype: 'multipart/form-data',
- url: BASE_DIR + "/get_customize_paper",
- method : "post",
- data: formData,
- processData: false,
- cache: false,
- contentType: false,
- headers: { "X-CSRFToken": csrftoken,},
- success: function(response) {
- $(function(){
- new PNotify({
- title: 'Success!',
- text: 'Your document is currently being generated.',
- type: 'success'
- });
- });
- },
- error: err => {
- new PNotify({
- title: err.responseJSON.error,
- text: 'Click here to login',
- type: 'error',
- });
- $('.brighttheme-error').click(() => window.location.href = '/login?next=/student_view')
- }
- });
- }
-}
+$(document).ready(function () {
+ let flag = 1;
+ let num = 1;
+ // on selecting type of worksheet
+ $("#worksheetType").dropdown({
+ onChange: () => {
+ if (flag == 1) {
+ $("#format").removeClass("hide-display").addClass("show-display");
+ let worksheetType = $("#worksheetType").dropdown("get value");
+ if (worksheetType == "test" || worksheetType == "generic") {
+ $("#formAvail").removeClass("hide-display");
+ } else {
+ $("#formAvail").removeClass("show-display").addClass("hide-display");
+ }
+ } else {
+ let worksheetType = $("#worksheetType").dropdown("get value");
+ if (worksheetType == "test") {
+ $("#test-div").show();
+ $("#generic-div").hide();
+ $("#customized-div").hide();
+ } else if (worksheetType == "generic") {
+ $("#test-div").hide();
+ $("#generic-div").show();
+ $("#customized-div").hide();
+ } else if (worksheetType == "customized") {
+ $("#test-div").hide();
+ $("#generic-div").hide();
+ $("#customized-div").show();
+ }
+ }
+ },
+ });
+
+ // function called when submit button clicked
+ function submit_click(e) {
+ let worksheetType = $("#worksheetType").dropdown("get value");
+ let format = $("#format").dropdown("get value");
+ if (worksheetType == "test") {
+ let subject = $("#test-subject").dropdown("get value");
+ let chapters = $("#test-chapter").dropdown("get values");
+ let board = $("#test-board").dropdown("get value");
+ if (format == "phypaper") {
+ let formData = {
+ subject: subject,
+ board: board,
+ "chapters[]": chapters,
+ };
+ let urlToGo = "/get_test_paper";
+ $.ajax({
+ url: BASE_DIR + urlToGo,
+ method: "get",
+ data: formData,
+ headers: { "X-CSRFToken": csrftoken },
+ success: function (response) {
+ $(function () {
+ new PNotify({
+ title: "Success!",
+ text: "Your document is currently being generated.",
+ type: "success",
+ });
+ });
+ download_token(response.token);
+ },
+ });
+ } else if (format == "form") {
+ let heading = $("#heading").val();
+ let required = [];
+ for (let i = 1; i <= num; i++) {
+ let type = $(`#required-field-${num}`).dropdown("get value");
+ let desc = $(`#field-desc-${num}`).val();
+ required.push({ type: type, title: desc });
+ }
+ let formData = {
+ subject: subject,
+ board: board,
+ "chapters[]": chapters,
+ required: JSON.stringify(required),
+ heading: heading,
+ };
+ let urlToGo = "/get_test_form";
+ $.ajax({
+ url: BASE_DIR + urlToGo,
+ method: "get",
+ data: formData,
+ headers: { "X-CSRFToken": csrftoken },
+ success: (response) => {
+ console.log(response);
+ let thing = $.param(response);
+ window.location = BASE_DIR + "/get_form_data?" + thing;
+ },
+ });
+ }
+ } else if (worksheetType == "generic") {
+ let subject = $("#generic-subject").dropdown("get value");
+ let chapters = $("#generic-chapter").dropdown("get values");
+ let q1a = $("#generic-noOfQ1a").val() || 0;
+ let q1b = $("#generic-noOfQ1b").val() || 0;
+ let q2 = $("#generic-noOfQ2").val() || 0;
+ let q3 = $("#generic-noOfQ3").val() || 0;
+ let q4 = $("#generic-noOfQ4").val() || 0;
+ let q5 = $("#generic-noOfQ5").val() || 0;
+ let random_setting = $("#random-setting").dropdown("get value");
+ let formData = {
+ subject: subject,
+ chapters: chapters,
+ breakup: [q1a, q1b, q2, q3, q4, q5],
+ random_setting: random_setting,
+ };
+
+ $.ajax({
+ url: BASE_DIR + "/get_generic_paper",
+ method: "get",
+ data: formData,
+ headers: { "X-CSRFToken": csrftoken },
+ success: function (response) {
+ $(function () {
+ new PNotify({
+ title: "Success!",
+ text: "Your document is currently being generated.",
+ type: "success",
+ });
+ download_token(response.token);
+ });
+ },
+ });
+ } else if (worksheetType == "customized") {
+ let subject = $("#customized-subject").dropdown("get value");
+ let chapters = $("#customized-chapter").dropdown("get values");
+ let q1a = $("#customized-noOfQ1a").val() || 0;
+ let q1b = $("#customized-noOfQ1b").val() || 0;
+ let q2 = $("#customized-noOfQ2").val() || 0;
+ let q3 = $("#customized-noOfQ3").val() || 0;
+ let q4 = $("#customized-noOfQ4").val() || 0;
+ let q5 = $("#customized-noOfQ5").val() || 0;
+ let student_names = $("#stud_name").dropdown("get values");
+ let file_data = $("#realfile").prop("files")[0];
+ let formData = new FormData();
+ formData.append("file", file_data);
+ formData.append("subject", subject);
+ formData.append("chapters[]", chapters);
+ formData.append("breakup[]", [q1a, q1b, q2, q3, q4, q5]);
+ formData.append("student_names[]", student_names);
+ $.ajax({
+ enctype: "multipart/form-data",
+ url: BASE_DIR + "/get_customize_paper",
+ method: "post",
+ data: formData,
+ processData: false,
+ cache: false,
+ contentType: false,
+ headers: { "X-CSRFToken": csrftoken },
+ success: function (response) {
+ $(function () {
+ new PNotify({
+ title: "Success!",
+ text: "Your document is currently being generated.",
+ type: "success",
+ });
+ });
+ },
+ error: (err) => {
+ new PNotify({
+ title: err.responseJSON.error,
+ text: "Click here to login",
+ type: "error",
+ });
+ $(".brighttheme-error").click(
+ () => (window.location.href = "/login?next=/student_view")
+ );
+ },
+ });
+ }
+ }
-function upload_click(e) {
- let worksheetType = $("#worksheetType").dropdown('get value');
- if (worksheetType == 'customized') {
- let subject = $("#customized-subject").dropdown('get value');
- let file_data = $('#realfile').prop("files")[0];
- let formData = new FormData();
- formData.append("file", file_data);
- formData.append('subject',subject);
- $.ajax({
- enctype: 'multipart/form-data',
- url: BASE_DIR + "/generate_optional_inputs",
- method : "post",
- data: formData,
- processData: false,
- cache: false,
- contentType: false,
- headers: { "X-CSRFToken": csrftoken,},
- success: function(response) {
- $(`#${worksheetType}-chapter-options-parent`).empty();
- let chapters = response['chapters'];
- $(`#${worksheetType}-chapter`).removeClass('hide-display').addClass('show-display');
- chapters.forEach(function(chapter){
- $(`#${worksheetType}-chapter-options-parent`).append(`
${chapter['chapter_name']}
`);
- })
- $(`#stud_name-options-parent`).empty();
- let student_names = response['stud_name'];
- $(`#stud_name`).removeClass('hide-display').addClass('show-display');
- student_names.forEach(function(student_name){
- $(`#stud_name-options-parent`).append(`${student_name}
`);
- })
- $("#customized-qtype").removeClass("hide-display").addClass("show-display");
- $(function(){
- new PNotify({
- title: 'Success!',
- text: 'Processing your data!',
- type: 'success'
- });
-
- });
- },
- });
-}
-}
+ function upload_click(e) {
+ let worksheetType = $("#worksheetType").dropdown("get value");
+ if (worksheetType == "customized") {
+ let subject = $("#customized-subject").dropdown("get value");
+ let file_data = $("#realfile").prop("files")[0];
+ let formData = new FormData();
+ formData.append("file", file_data);
+ formData.append("subject", subject);
+ $.ajax({
+ enctype: "multipart/form-data",
+ url: BASE_DIR + "/generate_optional_inputs",
+ method: "post",
+ data: formData,
+ processData: false,
+ cache: false,
+ contentType: false,
+ headers: { "X-CSRFToken": csrftoken },
+ success: function (response) {
+ $(`#${worksheetType}-chapter-options-parent`).empty();
+ let chapters = response["chapters"];
+ $(`#${worksheetType}-chapter`)
+ .removeClass("hide-display")
+ .addClass("show-display");
+ chapters.forEach(function (chapter) {
+ $(`#${worksheetType}-chapter-options-parent`).append(
+ `${chapter["chapter_name"]}
`
+ );
+ });
+ $(`#stud_name-options-parent`).empty();
+ let student_names = response["stud_name"];
+ $(`#stud_name`).removeClass("hide-display").addClass("show-display");
+ student_names.forEach(function (student_name) {
+ $(`#stud_name-options-parent`).append(
+ `${student_name}
`
+ );
+ });
+ $("#customized-qtype")
+ .removeClass("hide-display")
+ .addClass("show-display");
+ $(function () {
+ new PNotify({
+ title: "Success!",
+ text: "Processing your data!",
+ type: "success",
+ });
+ });
+ },
+ });
+ }
+ }
-function populate_grades(value,text, $selectedItem) {
- let worksheetType = document.getElementById("worksheetType") ? $("#worksheetType").dropdown('get value') : 'paper';
- let boardData = {
- "board": $(`#${worksheetType}-board`).dropdown('get value')
- };
- $.ajax({
- url: BASE_DIR + "/get_grades",
- method : "get",
- data: boardData,
- headers: { "X-CSRFToken": csrftoken, crossOrigin: false},
- success: function(response) {
- $(`#${worksheetType}-grade-options-parent`).empty();
- $(`#${worksheetType}-grade`).removeClass('hide-display').addClass('show-display');
- let grades = response['grade_list'];
- grades.forEach(function(grade){
- let gradeElement = `${grade['grade_name']}
`;
- $(`#${worksheetType}-grade-options-parent`).append(gradeElement);
- })
- }
- });
-}
+ function populate_grades(value, text, $selectedItem) {
+ let worksheetType = document.getElementById("worksheetType")
+ ? $("#worksheetType").dropdown("get value")
+ : "paper";
+ let boardData = {
+ board: $(`#${worksheetType}-board`).dropdown("get value"),
+ };
+ $.ajax({
+ url: BASE_DIR + "/get_grades",
+ method: "get",
+ data: boardData,
+ headers: { "X-CSRFToken": csrftoken, crossOrigin: false },
+ success: function (response) {
+ $(`#${worksheetType}-grade-options-parent`).empty();
+ $(`#${worksheetType}-grade`)
+ .removeClass("hide-display")
+ .addClass("show-display");
+ let grades = response["grade_list"];
+ grades.forEach(function (grade) {
+ let gradeElement = `${grade["grade_name"]}
`;
+ $(`#${worksheetType}-grade-options-parent`).append(gradeElement);
+ });
+ },
+ });
+ }
-function populate_subjects(value,text, $selectedItem) {
- let worksheetType = document.getElementById("worksheetType") ? $("#worksheetType").dropdown('get value') : 'paper';
- let gradeData = {
- "grade": $(`#${worksheetType}-grade`).dropdown('get value')
- };
- $.ajax({
- url: BASE_DIR + "/get_subjects",
- method : "get",
- data: gradeData,
- headers: { "X-CSRFToken": csrftoken, crossOrigin: false},
- success: function(response) {
- $(`#${worksheetType}-subject-options-parent`).empty();
- $(`#${worksheetType}-subject`).removeClass('hide-display').addClass('show-display');
- let subjects = response['subject_list'];
- subjects.forEach(function(subject){
- let subjectElement = `${subject['subject_name']}
`;
- $(`#${worksheetType}-subject-options-parent`).append(subjectElement);
- })
- }
- });
-}
+ function populate_subjects(value, text, $selectedItem) {
+ let worksheetType = document.getElementById("worksheetType")
+ ? $("#worksheetType").dropdown("get value")
+ : "paper";
+ let gradeData = {
+ grade: $(`#${worksheetType}-grade`).dropdown("get value"),
+ };
+ $.ajax({
+ url: BASE_DIR + "/get_subjects",
+ method: "get",
+ data: gradeData,
+ headers: { "X-CSRFToken": csrftoken, crossOrigin: false },
+ success: function (response) {
+ $(`#${worksheetType}-subject-options-parent`).empty();
+ $(`#${worksheetType}-subject`)
+ .removeClass("hide-display")
+ .addClass("show-display");
+ let subjects = response["subject_list"];
+ subjects.forEach(function (subject) {
+ let subjectElement = `${subject["subject_name"]}
`;
+ $(`#${worksheetType}-subject-options-parent`).append(subjectElement);
+ });
+ },
+ });
+ }
- function populate_chapters(value, text, $selectedItem) {
- let worksheetType = document.getElementById("worksheetType") ? $("#worksheetType").dropdown('get value') : 'paper';
- let formData = {
- "subject": $(`#${worksheetType}-subject`).dropdown('get value'),
- "board": $(`#${worksheetType}-board`).dropdown('get value')
- };
- $.ajax({
- url: BASE_DIR + "/get_chapters",
- method : "get",
- data: formData,
- headers: { "X-CSRFToken": csrftoken, crossOrigin: false},
- success: function(response) {
- $(`#${worksheetType}-chapter-options-parent`).empty();
- $(`#${worksheetType}-chapter`).removeClass('hide-display').addClass('show-display');
-
-
- let chapters = response['chapters'];
- let subject_breakup = response['subject_breakup'];
-
- chapters.forEach(function(chapter){
- $(`#${worksheetType}-chapter-options-parent`).append(`${chapter['chapter_name']}
`);
- })
-
- if(worksheetType == 'paper')
- {
- $('#paper-subject-splits').dropdown('clear');
-
- $(`#paper-subject-splits-options-parent`).empty();
-
- $(`#subject_splits`).removeClass('show-display').addClass('hide-display');
- $('h3').removeClass('show-display').addClass('hide-display');
- $(`#chapter-operations`).removeClass('hide-display').addClass('show-display');
- $('#add-subject-split').removeClass('hide-display').addClass('show-display');
-
- subject_breakup.forEach(function(breakup){
- $(`#paper-subject-splits-options-parent`).append(`${breakup}
`);
- })
- }
- }
- });
- }
-
- function add_chapter(e)
- {
- let chapter = $('input[name=add-chapter-input]').val().trim();
- let subject = $("#paper-subject").dropdown('get value');
- if(chapter.length> 0 && subject.length > 0)
- {
- let formData = {
- "subject": subject,
- "chapter": chapter
- };
-
- $.ajax({
- url: BASE_DIR + "/add_chapter",
- method : "get",
- data: formData,
- headers: { "X-CSRFToken": csrftoken, crossOrigin: false},
- success: function(response) {
- new PNotify({
- title: 'Success!',
- text: 'Chapter successfully added',
- type: 'success'
- });
- populate_chapters();
- $('input[name="add-chapter-input"]').val('');
- }
- });
- }
- }
-
- function delete_chapters(e)
- {
- let subject = $("#paper-subject").dropdown('get value');
- let chapters = $('#paper-chapter').dropdown('get values');
- if(chapters.length> 0)
- {
- let formData = {
- "subject": subject,
- "chapters": chapters
- };
-
- $.ajax({
- url: BASE_DIR + "/delete_chapters",
- method : "get",
- data: formData,
- headers: { "X-CSRFToken": csrftoken, crossOrigin: false},
- success: function(response) {
- new PNotify({
- title: 'Success!',
- text: 'Chapters successfully deleted',
- type: 'success'
- });
- populate_chapters();
- $('#paper-chapter').dropdown('clear');
- }
- });
- }
- }
-
- function add_subject_split(e)
- {
- let board = $("#paper-board").dropdown('get value');
- let question_weightage = $('#question-weightage').dropdown('get values');
- let question_type = $('#question-type').dropdown('get values');
- let split_name = $('input[name=split-name]').val().trim();
- let total_questions = $('input[name=total-questions]').val();
- var questions_to_attempt = $('input[name=questions-to-attempt]').val();
- let formData = {
- "board": board,
- "question_type": question_type,
- "question_weightage": question_weightage,
- "split_name": split_name,
- "total_questions": total_questions,
- "questions_to_attempt": questions_to_attempt
- };
- $.ajax({
- url: BASE_DIR + "/add_subject_split",
- method : "get",
- data: formData,
- headers: { "X-CSRFToken": csrftoken, crossOrigin: false},
- success: function(response) {
- new PNotify({
- title: 'Success!',
- text: 'Subject split successfully added',
- type: 'success'
- });
- populate_chapters();
- $('#question-weightage').dropdown('clear');
- $('#question-type').dropdown('clear');
- $('input[name="split-name"').val('');
- $('input[name="total-questions"').val('');
- $('input[name="questions-to-attempt"').val('');
-
- }
-
- });
+ function populate_chapters(value, text, $selectedItem) {
+ let worksheetType = document.getElementById("worksheetType")
+ ? $("#worksheetType").dropdown("get value")
+ : "paper";
+ let formData = {
+ subject: $(`#${worksheetType}-subject`).dropdown("get value"),
+ board: $(`#${worksheetType}-board`).dropdown("get value"),
+ };
+ $.ajax({
+ url: BASE_DIR + "/get_chapters",
+ method: "get",
+ data: formData,
+ headers: { "X-CSRFToken": csrftoken, crossOrigin: false },
+ success: function (response) {
+ $(`#${worksheetType}-chapter-options-parent`).empty();
+ $(`#${worksheetType}-chapter`)
+ .removeClass("hide-display")
+ .addClass("show-display");
+
+ let chapters = response["chapters"];
+ let subject_breakup = response["subject_breakup"];
+
+ chapters.forEach(function (chapter) {
+ $(`#${worksheetType}-chapter-options-parent`).append(
+ `${chapter["chapter_name"]}
`
+ );
+ });
+
+ if (worksheetType == "paper") {
+ $("#paper-subject-splits").dropdown("clear");
+
+ $(`#paper-subject-splits-options-parent`).empty();
+
+ $(`#subject_splits`)
+ .removeClass("show-display")
+ .addClass("hide-display");
+ $("h3").removeClass("show-display").addClass("hide-display");
+ $(`#chapter-operations`)
+ .removeClass("hide-display")
+ .addClass("show-display");
+ $("#add-subject-split")
+ .removeClass("hide-display")
+ .addClass("show-display");
+
+ subject_breakup.forEach(function (breakup) {
+ $(`#paper-subject-splits-options-parent`).append(
+ `${breakup}
`
+ );
+ });
+ }
+ },
+ });
+ }
+
+ function add_chapter(e) {
+ let chapter = $("input[name=add-chapter-input]").val().trim();
+ let subject = $("#paper-subject").dropdown("get value");
+ if (chapter.length > 0 && subject.length > 0) {
+ let formData = {
+ subject: subject,
+ chapter: chapter,
+ };
+
+ $.ajax({
+ url: BASE_DIR + "/add_chapter",
+ method: "get",
+ data: formData,
+ headers: { "X-CSRFToken": csrftoken, crossOrigin: false },
+ success: function (response) {
+ new PNotify({
+ title: "Success!",
+ text: "Chapter successfully added",
+ type: "success",
+ });
+ populate_chapters();
+ $('input[name="add-chapter-input"]').val("");
+ },
+ });
+ }
+ }
+
+ function delete_chapters(e) {
+ let subject = $("#paper-subject").dropdown("get value");
+ let chapters = $("#paper-chapter").dropdown("get values");
+ if (chapters.length > 0) {
+ let formData = {
+ subject: subject,
+ chapters: chapters,
+ };
+
+ $.ajax({
+ url: BASE_DIR + "/delete_chapters",
+ method: "get",
+ data: formData,
+ headers: { "X-CSRFToken": csrftoken, crossOrigin: false },
+ success: function (response) {
+ new PNotify({
+ title: "Success!",
+ text: "Chapters successfully deleted",
+ type: "success",
+ });
+ populate_chapters();
+ $("#paper-chapter").dropdown("clear");
+ },
+ });
+ }
+ }
+
+ function add_subject_split(e) {
+ let board = $("#paper-board").dropdown("get value");
+ let question_weightage = $("#question-weightage").dropdown("get values");
+ let question_type = $("#question-type").dropdown("get values");
+ let split_name = $("input[name=split-name]").val().trim();
+ let total_questions = $("input[name=total-questions]").val();
+ var questions_to_attempt = $("input[name=questions-to-attempt]").val();
+ let formData = {
+ board: board,
+ question_type: question_type,
+ question_weightage: question_weightage,
+ split_name: split_name,
+ total_questions: total_questions,
+ questions_to_attempt: questions_to_attempt,
+ };
+ $.ajax({
+ url: BASE_DIR + "/add_subject_split",
+ method: "get",
+ data: formData,
+ headers: { "X-CSRFToken": csrftoken, crossOrigin: false },
+ success: function (response) {
+ new PNotify({
+ title: "Success!",
+ text: "Subject split successfully added",
+ type: "success",
+ });
+ populate_chapters();
+ $("#question-weightage").dropdown("clear");
+ $("#question-type").dropdown("clear");
+ $('input[name="split-name"').val("");
+ $('input[name="total-questions"').val("");
+ $('input[name="questions-to-attempt"').val("");
+ },
+ });
}
function base64ToArrayBuffer(base64) {
- let binaryString = window.atob(base64.replace(/\s/g, ''));
+ let binaryString = window.atob(base64.replace(/\s/g, ""));
let binaryLen = binaryString.length;
let bytes = new Uint8Array(binaryLen);
for (let i = 0; i < binaryLen; i++) {
- let ascii = binaryString.charCodeAt(i);
- bytes[i] = ascii;
+ let ascii = binaryString.charCodeAt(i);
+ bytes[i] = ascii;
}
return bytes;
- }
+ }
function saveByteArray(reportName, byte, type) {
- let blob = new Blob([byte], {type: type});
+ let blob = new Blob([byte], { type: type });
saveAs(blob, reportName);
- };
+ }
function download_tracker(e) {
- let subject = $("#paper-subject").dropdown('get value');
- let splits = $('#paper-subject-splits').dropdown('get values');
+ let subject = $("#paper-subject").dropdown("get value");
+ let splits = $("#paper-subject-splits").dropdown("get values");
if (splits.length != 1) {
new PNotify({
- title: 'Error',
- text: 'We currently support only one subject split at a time for dummy tracker download',
- type: 'error'
+ title: "Error",
+ text:
+ "We currently support only one subject split at a time for dummy tracker download",
+ type: "error",
});
return;
}
- let formData = {
- "subject": subject,
- "split_name": splits[0],
- };
- $.ajax({
+ let formData = {
+ subject: subject,
+ split_name: splits[0],
+ };
+ $.ajax({
url: BASE_DIR + "/get_dummy_tracker",
- method : "get",
- data: formData,
- headers: { "X-CSRFToken": csrftoken, crossOrigin: false},
- success: function(response) {
+ method: "get",
+ data: formData,
+ headers: { "X-CSRFToken": csrftoken, crossOrigin: false },
+ success: function (response) {
let sampleArr = base64ToArrayBuffer(response);
- saveByteArray("dummy_tracker.xlsx", sampleArr, 'multipart/form-data');
- }
+ saveByteArray("dummy_tracker.xlsx", sampleArr, "multipart/form-data");
+ },
});
}
- function display_split_table(e)
- {
- let board = $("#paper-board").dropdown('get value');
- let splits = $('#paper-subject-splits').dropdown('get values');
- let formData = {
- "board": board,
- "splits": splits
- };
- $.ajax({
- url: BASE_DIR + "/display_split_table",
- method : "get",
- data: formData,
- headers: { "X-CSRFToken": csrftoken, crossOrigin: false},
- success: function(response) {
- let subject_splits = document.getElementById('subject_splits');
- subject_breakup = response['subject_breakup'];
- $(`#subject_splits`).removeClass('hide-display').addClass('show-display');
- $('h3').removeClass('hide-display').addClass('show-display');
- let rowCount = subject_splits.rows.length;
- for (let i = rowCount - 1; i > 0; i--) {
- subject_splits.deleteRow(i);
- }
- for (let i=0; i
- ${subject_breakup[i]['name']} |
- ${subject_breakup[i]['question_type']} |
- ${subject_breakup[i]['question_weightage']} |
- ${subject_breakup[i]['total_questions']} |
- ${subject_breakup[i]['questions_to_attempt']} |
- |
+ function display_split_table(e) {
+ let board = $("#paper-board").dropdown("get value");
+ let splits = $("#paper-subject-splits").dropdown("get values");
+ let formData = {
+ board: board,
+ splits: splits,
+ };
+ $.ajax({
+ url: BASE_DIR + "/display_split_table",
+ method: "get",
+ data: formData,
+ headers: { "X-CSRFToken": csrftoken, crossOrigin: false },
+ success: function (response) {
+ let subject_splits = document.getElementById("subject_splits");
+ subject_breakup = response["subject_breakup"];
+ $(`#subject_splits`)
+ .removeClass("hide-display")
+ .addClass("show-display");
+ $("h3").removeClass("hide-display").addClass("show-display");
+ let rowCount = subject_splits.rows.length;
+ for (let i = rowCount - 1; i > 0; i--) {
+ subject_splits.deleteRow(i);
+ }
+ for (let i = 0; i < subject_breakup.length; i++) {
+ $(`#subject_splits tbody`).append(`
+ | ${subject_breakup[i]["name"]} |
+ ${subject_breakup[i]["question_type"]} |
+ ${subject_breakup[i]["question_weightage"]} |
+ ${subject_breakup[i]["total_questions"]} |
+ ${subject_breakup[i]["questions_to_attempt"]} |
+ |
`);
- }
- }
-
- });
- }
-
- $(document).on('click','.delete-subject-split', function()
- {
-
- let id = this.id;
- let formData = {
- "id": id,
- };
-
- $.ajax({
- url: BASE_DIR + "/delete_subject_split",
- method : "get",
- data: formData,
- headers: { "X-CSRFToken": csrftoken, crossOrigin: false},
- success: function(response) {
- new PNotify({
- title: 'Success!',
- text: 'Subject split successfully deleted',
- type: 'success'
- });
- populate_chapters();
- }
- });
- });
-
-
- // methods for TEST worksheet
- $('#test-board').dropdown('clear');
-
- $('#test-board').dropdown({
- onChange: populate_grades,
- });
-
- $('#test-grade').dropdown({
- onChange: populate_subjects,
- });
-
- $('#test-subject').dropdown({
- onChange: populate_chapters,
- });
-
- $('#test-chapter').dropdown({
- onChange: function (value, text, $selectedItem) {
- },
- });
+ }
+ },
+ });
+ }
+ $(document).on("click", ".delete-subject-split", function () {
+ let id = this.id;
+ let formData = {
+ id: id,
+ };
+
+ $.ajax({
+ url: BASE_DIR + "/delete_subject_split",
+ method: "get",
+ data: formData,
+ headers: { "X-CSRFToken": csrftoken, crossOrigin: false },
+ success: function (response) {
+ new PNotify({
+ title: "Success!",
+ text: "Subject split successfully deleted",
+ type: "success",
+ });
+ populate_chapters();
+ },
+ });
+ });
+
+ function get_required() {
+ let submit = document.getElementById("submit");
+ let worksheetType = document.getElementById("worksheetType")
+ ? $("#worksheetType").dropdown("get value")
+ : "paper";
+ let format = $("#format").dropdown("get value");
+ if (format == "phypaper") {
+ submit.innerHTML = "DOWNLOAD";
+ $("#GoogleForm").hide();
+ if (worksheetType == "test") {
+ $("#test-div").show();
+ $("#generic-div").hide();
+ $("#customized-div").hide();
+ } else if (worksheetType == "generic") {
+ $("#test-div").hide();
+ $("#generic-div").show();
+ $("#customized-div").hide();
+ } else if (worksheetType == "customized") {
+ $("#test-div").hide();
+ $("#generic-div").hide();
+ $("#customized-div").show();
+ }
+ } else if (format == "form") {
+ submit.innerHTML = "GENERATE";
+ $("#GoogleForm").show();
+ if (flag == 1) $(`#${worksheetType}-div`).hide();
+ else $(`#${worksheetType}-div`).show();
+ }
+ }
+
+ document.getElementById("heading").addEventListener(
+ "change",
+ () => {
+ $("#required-field-1")
+ .removeClass("hide-display")
+ .addClass("show-display");
+ $("#required-field-desc-1")
+ .removeClass("hide-display")
+ .addClass("show-display");
+ $("#next-options").removeClass("hide-display").addClass("show-display");
+ },
+ false
+ );
+ document
+ .getElementById("addMore")
+ .addEventListener("click", create_fields, false);
+ document.getElementById("done").addEventListener("click", show_board, false);
+
+ function show_board() {
+ let worksheetType = document.getElementById("worksheetType")
+ ? $("#worksheetType").dropdown("get value")
+ : "paper";
+ $("#next-options").removeClass("show-display").addClass("hide-display");
+ $(`#${worksheetType}-div`).show();
+ }
+
+ function create_fields() {
+ let type = $(`#required-field-${num}`);
+ let desc = $(`#field-desc-${num}`);
+ if (type.dropdown("get value") === "") {
+ type.focus();
+ return;
+ }
+ if (desc.val() === "") {
+ desc.focus();
+ return;
+ }
+ let data = document.getElementById("fields");
+ num += 1;
+ data.insertAdjacentHTML(
+ "beforeend",
+ `
+
+
+
+
+
`
+ );
+ $(`#required-field-${num}`).dropdown("clear");
+ }
+
+ $("#required-field-1").dropdown("clear");
+
+ $("#format").dropdown("clear");
+
+ $("#format").dropdown({
+ onChange: get_required,
+ });
+
+ // methods for TEST worksheet
+ $("#test-board").dropdown("clear");
+
+ $("#test-board").dropdown({
+ onChange: populate_grades,
+ });
+
+ $("#test-grade").dropdown({
+ onChange: populate_subjects,
+ });
+
+ $("#test-subject").dropdown({
+ onChange: populate_chapters,
+ });
+
+ $("#test-chapter").dropdown({
+ onChange: function (value, text, $selectedItem) {},
+ });
//methods for SUBJECT SPLITS.
- $('#paper-board').dropdown('clear');
- $('#paper-grade').dropdown('clear');
- $('#paper-subject').dropdown('clear');
- $('#paper-chapter').dropdown('clear');
-
- $('#paper-board').dropdown({
- onChange: populate_grades,
- });
-
- $('#paper-grade').dropdown({
- onChange: populate_subjects,
- });
-
- $('#paper-subject').dropdown({
- onChange: populate_chapters,
- });
-
- $('#paper-chapter').dropdown({
- onChange: function (value, text, $selectedItem) {
- },
- });
-
- $('#paper-subject-splits').dropdown({
- onChange: function (value, text, $selectedItem) {
- },
- });
-
- $('#paper-breakup').dropdown({
- onChange: function (value, text, $selectedItem) {
- },
- });
-
-
- // methods for GENERIC worksheet
- $('#generic-board').dropdown('clear');
-
- $('#generic-board').dropdown({
- onChange: populate_grades,
- });
-
- $('#generic-grade').dropdown({
- onChange: populate_subjects,
- });
-
- $('#generic-subject').dropdown({
- onChange: populate_chapters,
- });
-
- $('#generic-chapter').dropdown({
- onChange: function (value, text, $selectedItem) {
- $("#generic-qtype").removeClass("hide-display").addClass("show-display");
- },
- });
-
- $('#generic-qtype').dropdown({
- onChange: function (value, text, $selectedItem) {
- },
- });
-
- $('#random-setting').dropdown({
- });
-
- // methods for CUSTOMIZED worksheet
- $('#customized-board').dropdown('clear');
-
- $('#customized-board').dropdown({
- onChange: populate_grades,
- });
-
- $('#customized-grade').dropdown({
- onChange: populate_subjects,
- });
-
- $('#customized-subject').dropdown({
- onChange: populate_chapters,
- });
-
- $('#customized-chapter').dropdown({
- onChange: function (value, text, $selectedItem) {
- },
- });
-
- $('#customized-qtype').dropdown({
- onChange: function (value, text, $selectedItem) {
- },
- });
-
- $('#stud_name').dropdown({
- onChange: function (value, text, $selectedItem) {
- },
- });
-
- $('#upload').click(upload_click);
- $("#submit").click(submit_click);
- $("#add-chapter-button").click(add_chapter);
- $("#delete-chapters-button").click(delete_chapters);
- $("#display-splits-button").click(display_split_table);
- $("#download-tracker-button").click(download_tracker);
- $("#add-split-button").click(add_subject_split);
-
-
- $('#question-type').dropdown({
- });
+ $("#paper-board").dropdown("clear");
+ $("#paper-grade").dropdown("clear");
+ $("#paper-subject").dropdown("clear");
+ $("#paper-chapter").dropdown("clear");
+
+ $("#paper-board").dropdown({
+ onChange: populate_grades,
+ });
+
+ $("#paper-grade").dropdown({
+ onChange: populate_subjects,
+ });
+
+ $("#paper-subject").dropdown({
+ onChange: populate_chapters,
+ });
+
+ $("#paper-chapter").dropdown({
+ onChange: function (value, text, $selectedItem) {},
+ });
+
+ $("#paper-subject-splits").dropdown({
+ onChange: function (value, text, $selectedItem) {},
+ });
- $('#question-weightage').dropdown({
- });
+ $("#paper-breakup").dropdown({
+ onChange: function (value, text, $selectedItem) {},
+ });
+
+ // methods for GENERIC worksheet
+ $("#generic-board").dropdown("clear");
+
+ $("#generic-board").dropdown({
+ onChange: populate_grades,
+ });
+
+ $("#generic-grade").dropdown({
+ onChange: populate_subjects,
+ });
+
+ $("#generic-subject").dropdown({
+ onChange: populate_chapters,
+ });
+
+ $("#generic-chapter").dropdown({
+ onChange: function (value, text, $selectedItem) {
+ $("#generic-qtype").removeClass("hide-display").addClass("show-display");
+ },
+ });
+
+ $("#generic-qtype").dropdown({
+ onChange: function (value, text, $selectedItem) {},
+ });
+
+ $("#random-setting").dropdown({});
+
+ // methods for CUSTOMIZED worksheet
+ $("#customized-board").dropdown("clear");
+
+ $("#customized-board").dropdown({
+ onChange: populate_grades,
+ });
+
+ $("#customized-grade").dropdown({
+ onChange: populate_subjects,
+ });
+
+ $("#customized-subject").dropdown({
+ onChange: populate_chapters,
+ });
+
+ $("#customized-chapter").dropdown({
+ onChange: function (value, text, $selectedItem) {},
+ });
+
+ $("#customized-qtype").dropdown({
+ onChange: function (value, text, $selectedItem) {},
+ });
+
+ $("#stud_name").dropdown({
+ onChange: function (value, text, $selectedItem) {},
+ });
+
+ $("#upload").click(upload_click);
+ $("#submit").click(submit_click);
+ $("#add-chapter-button").click(add_chapter);
+ $("#delete-chapters-button").click(delete_chapters);
+ $("#display-splits-button").click(display_split_table);
+ $("#download-tracker-button").click(download_tracker);
+ $("#add-split-button").click(add_subject_split);
+
+ $("#question-type").dropdown({});
+
+ $("#question-weightage").dropdown({});
});
function download_token(token) {
- let request = new XMLHttpRequest();
- let url = BASE_DIR + '/download_test_and_generic_docx';
- let params = `token=${token}`;
- request.open('GET', `${url}?${params}`, true);
- request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
- request.responseType = 'blob';
- request.onload = function() {
- if(request.status === 200) {
- let blob = new Blob([request.response], { type: 'application/pdf' });
- let link = document.createElement('a');
- link.href = window.URL.createObjectURL(blob);
- link.download = "workgen_document.docx";
- document.body.appendChild(link);
- link.click();
- }
- };
- request.send();
- }
+ let request = new XMLHttpRequest();
+ let url = BASE_DIR + "/download_test_and_generic_docx";
+ let params = `token=${token}`;
+ request.open("GET", `${url}?${params}`, true);
+ request.setRequestHeader(
+ "Content-Type",
+ "application/x-www-form-urlencoded; charset=UTF-8"
+ );
+ request.responseType = "blob";
+ request.onload = function () {
+ if (request.status === 200) {
+ let blob = new Blob([request.response], { type: "application/pdf" });
+ let link = document.createElement("a");
+ link.href = window.URL.createObjectURL(blob);
+ link.download = "workgen_document.docx";
+ document.body.appendChild(link);
+ link.click();
+ }
+ };
+ request.send();
+}
diff --git a/searchapp/static/student_view_style.css b/searchapp/static/student_view_style.css
index 93a3783..73865c4 100644
--- a/searchapp/static/student_view_style.css
+++ b/searchapp/static/student_view_style.css
@@ -43,6 +43,12 @@
display: none !important;
}
+.format {
+ margin-left:auto !important;
+ margin-right:auto !important;
+ width:50% !important;
+}
+
.board {
margin-left:auto !important;
margin-right:auto !important;
@@ -110,6 +116,34 @@
display: block;
}
+#done{
+ margin-left:auto;
+ margin-right:auto;
+ background-color:#d5f6b9;
+ border:none;
+ color:black;
+ padding: 8px 12px;
+ text-decoration:none;
+ cursor:pointer;
+ border-radius:10px;
+ font-weight:bold;
+ margin-bottom:1%;
+}
+
+#addMore {
+ margin-left:auto;
+ margin-right:auto;
+ background-color:#d5f6b9;
+ border:none;
+ color:black;
+ padding: 8px 12px;
+ text-decoration:none;
+ cursor:pointer;
+ border-radius:10px;
+ font-weight:bold;
+ margin-bottom:1%;
+}
+
#randomize{
float:left;
margin-left:20%;
diff --git a/searchapp/templates/form_view.html b/searchapp/templates/form_view.html
new file mode 100644
index 0000000..6994254
--- /dev/null
+++ b/searchapp/templates/form_view.html
@@ -0,0 +1,19 @@
+{% extends "layout.html" %}
+
+{% block title %}
+Forms View
+{% endblock %}
+{% block li %}
+ {% if user.is_authenticated %}
+ Mentor Dashboard
+ {% else %}
+ Login
+ {% endif %}
+{% endblock %}
+
+{% block student_view %}
+
+{% endblock %}
diff --git a/searchapp/templates/student_view.html b/searchapp/templates/student_view.html
index d3e68ff..cedd820 100644
--- a/searchapp/templates/student_view.html
+++ b/searchapp/templates/student_view.html
@@ -23,8 +23,49 @@
+
+
+
+
+
@@ -258,5 +299,7 @@
+
+
{% endblock %}
diff --git a/searchapp/test_paper.py b/searchapp/test_paper.py
index 9d01b3e..566fc7c 100644
--- a/searchapp/test_paper.py
+++ b/searchapp/test_paper.py
@@ -1,6 +1,6 @@
from .models import Questions, Chapter
from .utils.utils import get_type_and_weightage
-from .generate_doc import convert_customized_to_doc, convert_to_doc
+from .generate_doc import convert_customized_to_doc, convert_to_doc, convert_to_form
import random
from searchapp.models import GeneratedCustomizedPaper, GeneratedTestAndGenericPaper
from celery import shared_task
@@ -45,6 +45,10 @@ def generate_test_or_generic_paper(subject, chapters, subject_breakup, token, so
filepath = convert_to_doc(test_paper_dict, subject)
GeneratedTestAndGenericPaper.objects.filter(token=token).update(file_path=filepath, is_ready=True)
+@shared_task
+def generate_test_or_generic_form(required, heading, subject, chapters, subject_breakup, sorted_type, user):
+ test_paper_dict = form_test_paper_dictionary(subject, chapters, subject_breakup)
+ return convert_to_form(test_paper_dict, subject, required, heading, user)
@shared_task
def generate_customized_paper(subject, chapters, subject_breakup, data, mentor, token):
diff --git a/searchapp/urls.py b/searchapp/urls.py
index ea93667..11c11f7 100644
--- a/searchapp/urls.py
+++ b/searchapp/urls.py
@@ -29,4 +29,6 @@
path('contact', views.contact),
path('get_dummy_tracker', views.get_dummy_tracker),
path('get_dummy_question_paper_format',views.get_dummy_question_paper_format),
+ path('get_test_form', views.get_test_form, name='get_test_form'),
+ path('get_form_data', views.form, name='get_form_data'),
]
diff --git a/searchapp/views.py b/searchapp/views.py
index 6fb0348..4d90300 100644
--- a/searchapp/views.py
+++ b/searchapp/views.py
@@ -11,6 +11,7 @@
from openpyxl.writer.excel import save_virtual_workbook
from django.conf import settings
+import json
import logging
import datetime
import hashlib
@@ -27,9 +28,11 @@
generate_dummy_tracker,
generate_dummy_question_paper_format,
)
+
from .test_paper import (
generate_test_or_generic_paper,
generate_customized_paper,
+ generate_test_or_generic_form,
)
from .models import (
Mentor,
@@ -41,7 +44,8 @@
GeneratedCustomizedPaper,
GeneratedTestAndGenericPaper,
SubjectSplit,
- Chapter
+ Chapter,
+ FormAuth
)
logger = logging.getLogger(__name__)
@@ -55,6 +59,15 @@ def contact(request):
return render(request, 'contact.html')
+def form(request):
+ try:
+ response = request.GET
+ is_done = response['done']
+ return render(request, 'form_view.html', {'form_url': response['response[result][0][Published url]'], 'form_edit_url': response['response[result][0][Edit url]']})
+ except:
+ print('m')
+ return render(request, 'form_view.html', {'form_url': 'Something went wrong. Please try again'})
+
def student_view(request):
board_list = Board.objects.all().values_list('board', flat=True)
board_list = list(board_list)
@@ -373,6 +386,34 @@ def get_test_paper(request):
subject_name, chapters, breakup, token, 'random')
return JsonResponse({"message": "success", "token": token})
+def get_test_form(request):
+ if request.method == 'GET':
+ subject = request.GET['subject']
+ paper_breakup = request.GET['board']
+ chapters = request.GET.getlist('chapters[]')
+ heading = request.GET['heading']
+ user = request.user
+ subject_name = list(Subject.objects.filter(
+ id=subject).values_list('subject_name', flat=True))[0]
+ subject_breakup = SubjectSplit.objects.filter(
+ name=paper_breakup.upper()).values_list(
+ 'question_weightage',
+ 'question_type',
+ 'total_questions',
+ 'questions_to_attempt')
+ breakup = {}
+ for qtype in subject_breakup:
+ if qtype[0] == 1:
+ if qtype[1] == 1:
+ breakup['1A'] = [qtype[2], qtype[3]]
+ elif qtype[1] == 2:
+ breakup['1B'] = [qtype[2], qtype[3]]
+ else:
+ breakup[str(qtype[0])] = [qtype[2], qtype[3]]
+ required = json.loads(request.GET['required'])
+ response = generate_test_or_generic_form(
+ required, heading, subject_name, chapters, breakup, 'random', user)
+ return JsonResponse(response)
def get_generic_paper(request):
if request.method == "GET":