from urllib import request from flask import Flask, jsonify, render_template, url_for, request, redirect import json import datetime from pymongo import MongoClient import requests CONNECTION_STRING = "mongodb://mongodb:Cc03Wz5XX3iI3uY3@mongo" db_connection = MongoClient(CONNECTION_STRING) db_base = db_connection["phone-dev"] coll = db_base["phone"] bl = db_base["blacklist"] rep = False # coll_call = db_base["phone"] # coll_history = db_base["history"] app = Flask(__name__) internal = {} external = {} State = "" Findlimit = 100 @app.route("/") def root(): return redirect("/notanswer") ImportantNumber = ['839122051045'] @app.route("/answer") def answer(): call = coll.find({"status": "ANSWERED"}).sort('time', -1).limit(Findlimit) return render_template("answer.html", call=call) if rep == False else render_template("repair.html") @app.route("/notanswer") def notanswer(): call = coll.find({"status": "NOT_ANSWERED"}).sort( 'time', -1).limit(Findlimit) return render_template("notanswer.html", call=call) if rep == False else render_template("repair.html") @app.route("/truerecall") def recallTrue(): call = coll.find({"status": "RECALL_TRUE"}).sort( 'time', -1).limit(Findlimit) return render_template("truerecall.html", call=call) if rep == False else render_template("repair.html") @app.route("/falserecall") def rcallFalse(): call = coll.find({"status": "RECALL_FALSE"}).sort( 'time', -1).limit(Findlimit) return render_template("falserecall.html", call=call) if rep == False else render_template("repair.html") @app.route("/blacklist") def blacklist(): call = bl.find().sort('_id') return render_template("blacklist.html", call=call) if rep == False else render_template("repair.html") @app.route("/test") def ttt(): res = [] for p in request.environ: try: res.append(p + " = " + request.environ[p]) except: pass # #"
".join(request.environ) return str(res) @app.route("/work/") def work_uuid(uuid): coll.update_one({"uuid": uuid}, {"$set": {"status": "INWORK"}}) call = coll.find({"uuid": uuid}) return render_template("work.html", call=call) if rep == False else render_template("repair.html") # API @app.route("/api/v1/call/set/", methods=["POST"]) def call_put(): # print(request.form) if request.form["act"] == "delete": coll.update_many({"uuid": request.form["uuid"], "status": "RECALL_FALSE"}, { "$set": {"status": "DELETED"}}) return redirect("/falserecall") @app.route("/api/v1/work/", methods=["POST"]) def work(): dt = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S") coll.update_one({"uuid": request.form["uuid"]}, {"$set": {"status": "RECALL_" + str(request.form["recall"]).upper(), "dt": dt}}) return redirect("/") @app.route("/api/v1/blacklist/add/", methods=["POST"]) def blacklist_put(number): insdict = {"_id": number, "desc": datetime.datetime.now()} bl.update_one({"_id": number}, {"$set": insdict}, True) coll.update_many({"client": number, "status": { "$in": ["RECALL_TRUE", "RECALL_FALSE", "NOT_ANSWERED"]}}, {"$set": {"status": "IGNORED"}}) return redirect("/blacklist") @app.route("/api/v1/blacklist/delete/", methods=["POST"]) def blacklist_delete(number): bl.delete_many({"_id": number}) return redirect("/blacklist") @app.route("/api/v1/blacklist/get/") def blacklist_get(number): try: return [i for i in bl.find({"_id": number})][0] except: return {} @app.route("/api/v1/sync") def sync(): j = [] for x in coll.find({"status": "NOT_ANSWERED"}): t_req = "https://callinfo.services.mobilon.ru/api/call/info/1e86a98e026578eb5f6bf8c092c0c4a2/" + \ x["uuid"] res: dict = json.loads(requests.get(t_req).content) j.append(res) coll.update_one({"uuid": x["uuid"]}, {"$set": res}) return j if __name__ == "__main__": app.debug = True app.run(host="0.0.0.0", port=6001)