From e81f71ccf97d8344c5a462e98c72161b6dcba5e8 Mon Sep 17 00:00:00 2001 From: huygensCortex <51647351+huygensCortex@users.noreply.github.com> Date: Sat, 14 Oct 2023 21:31:32 -0400 Subject: [PATCH 1/2] integrate with notify me api --- Code/recommenderapp/app.py | 22 +- Code/recommenderapp/static/script.js | 188 +++++++++++++++++ Code/recommenderapp/static/stylesheet.css | 12 +- .../templates/landing_page.html | 195 +----------------- Code/recommenderapp/templates/success.html | 32 ++- Code/recommenderapp/utils.py | 1 + 6 files changed, 257 insertions(+), 193 deletions(-) create mode 100644 Code/recommenderapp/static/script.js diff --git a/Code/recommenderapp/app.py b/Code/recommenderapp/app.py index dc94f4631..42f2dcf00 100644 --- a/Code/recommenderapp/app.py +++ b/Code/recommenderapp/app.py @@ -2,16 +2,16 @@ Module for routing all calls from the frontend """ -import json -import sys -from search import Search -from flask import Flask, jsonify, render_template, request -from flask_cors import CORS from utils import send_email_to_user, beautify_feedback_data - +from flask_cors import CORS +from flask import Flask, jsonify, render_template, request +from search import Search +import sys +import json sys.path.append("../../") from Code.prediction_scripts.item_based import recommend_for_new_user + app = Flask(__name__) app.secret_key = "secret key" @@ -63,7 +63,15 @@ def feedback(): Handles user feedback submission and mails the results. """ data = json.loads(request.data) - user_email = "adipai16@gmail.com" + return data + +@app.route("/sendMail", methods=["POST"]) +def sendMail(): + """ + Handles user feedback submission and mails the results. + """ + data = json.loads(request.data) + user_email = data['email'] send_email_to_user(user_email, beautify_feedback_data(data)) return data diff --git a/Code/recommenderapp/static/script.js b/Code/recommenderapp/static/script.js new file mode 100644 index 000000000..c20e5c9d4 --- /dev/null +++ b/Code/recommenderapp/static/script.js @@ -0,0 +1,188 @@ +$(document).ready(function () { + $(function () { + $("#searchBox").autocomplete({ + source: function (request, response) { + $.ajax({ + type: "POST", + url: "http://localhost:5000/search", + dataType: "json", + cache: false, + data: { + q: request.term, + }, + success: function (data) { + //alert(data); + // console.log(data); + response(data); + }, + error: function (jqXHR, textStatus, errorThrown) { + console.log(textStatus + " " + errorThrown); + }, + }); + }, + select: function (event, ui) { + var ulList = $("#selectedMovies"); + // Check if the value already exists in the list + if (ulList.find('li:contains("' + ui.item.value + '")').length > 0) { + $("#searchBox").val(""); + return false; + } + + var li = $("
") + .text(ui.item.value) + .appendTo(ulList); + $("#searchBox").val(""); + return false; + }, + + // changed the min-length for searching movies from 2 to 1 + minLength: 1, + }); + }); + + $("#predict").click(function () { + var movie_list = []; + + $("#selectedMovies li").each(function () { + movie_list.push($(this).text()); + }); + + var movies = { movie_list: movie_list }; + + // Clear the existing recommendations + $("#predictedMovies").empty(); + + // if movies list empty then throw an error box saying select atleast 1 movie!! + if (movie_list.length == 0) { + alert("Select atleast 1 movie!!"); + } + + $.ajax({ + type: "POST", + url: "/predict", + dataType: "json", + contentType: "application/json;charset=UTF-8", + traditional: "true", + cache: false, + data: JSON.stringify(movies), + success: function (response) { + var ulList = $("#predictedMovies"); + var i = 0; + response["recommendations"].forEach((element) => { + var diventry = $(""); + var fieldset = $("", { id: i }).css("border", "0"); + var li = $("").text(element); + var radios = $(` ++ + | ++ + | ++ + | +
- -
-