From f3a75fadc0e7029623d22bf44a85c5f9936e6e7b Mon Sep 17 00:00:00 2001 From: Stefano Assenzo Date: Wed, 25 Jan 2023 15:44:38 +0000 Subject: [PATCH] So now the Discord bot send a message when it find a subject call Lingua Italiana - I try to fix the api for school time table --- src/events/school_time/discord_bot.py | 23 ++- src/events/school_time/update_time_school.py | 131 +++++++++++++++++- .../api/school_time/api_school_times.py | 36 +++++ subdomains/api/school_time/app.py | 127 ----------------- 4 files changed, 174 insertions(+), 143 deletions(-) create mode 100644 subdomains/api/school_time/api_school_times.py delete mode 100644 subdomains/api/school_time/app.py diff --git a/src/events/school_time/discord_bot.py b/src/events/school_time/discord_bot.py index afb29e0..b9f9539 100644 --- a/src/events/school_time/discord_bot.py +++ b/src/events/school_time/discord_bot.py @@ -11,9 +11,7 @@ load_dotenv() # Load .env file DISCORD_TOKEN = os.getenv('DISCORD_TOKEN') # Discord token PASSWORD_MONGODB = os.getenv('PASSWORD_MONGODB') # Password for MongoDB URL_MONGODB = os.getenv('URL_MONGODB') # URL for MongoDB -mongo_url = "mongodb+srv://elci:" + \ - urllib.parse.quote_plus(PASSWORD_MONGODB) + \ - URL_MONGODB # URL for MongoDB (with password) +mongo_url = "mongodb+srv://elci:" + urllib.parse.quote_plus(PASSWORD_MONGODB) + URL_MONGODB # URL for MongoDB (with password) client = pymongo.MongoClient(mongo_url) # Connect to MongoDB database = client["website-class"] # Database name # Collection school time table current @@ -21,10 +19,13 @@ collection = database["school-time-table"] bot = discord.Bot() +@bot.event +async def on_ready(): + print('We have logged in as {0.user}'.format(bot)) + bot.loop.create_task(orario()) - @tasks.loop(seconds=1) -async def orario(ctx): +async def orario(): documents = collection.find() # Iterate through the documents @@ -32,14 +33,8 @@ async def orario(ctx): for day in document['School Subject']: for i, subject in enumerate(document['School Subject'][day]): if subject['Subject'] == "CALF1 LINGUA ITALIANA": - print(f"Subject found: {subject['Subject']} at index: {i}") - # Send a message on channel #general with the subject found and the index of the subject - channel = bot.get_channel(1063753802638954519).send("bot is online") - await ctx.send(f"Subject found: {subject['Subject']} at index: {i}") - + channel = bot.get_channel(1063753802638954519) + #await ctx.send(f"Subject found: {subject['Subject']} at index: {i}") + await channel.send(f"Hours school: {i}, Subject: {subject['Subject']}, Teacher: {subject['Teacher']}, Room: {subject['Room']}") -@bot.command() -async def testpy(ctx): - bot.loop.create_task(orario(ctx)) - await ctx.send("testpy") bot.run(DISCORD_TOKEN) \ No newline at end of file diff --git a/src/events/school_time/update_time_school.py b/src/events/school_time/update_time_school.py index 8ebbbe3..2fc913f 100644 --- a/src/events/school_time/update_time_school.py +++ b/src/events/school_time/update_time_school.py @@ -42,204 +42,252 @@ def update_time_school(): { "Subject": "null", "Teacher": "null", + "Room": "null", }, { "Subject": "null", "Teacher": "null", + "Room": "null", }, { "Subject": "null", "Teacher": "null", + "Room": "null", }, { "Subject": "null", "Teacher": "null", + "Room": "null", }, { "Subject": "null", "Teacher": "null", + "Room": "null", }, { "Subject": "null", "Teacher": "null", + "Room": "null", }, { "Subject": "null", "Teacher": "null", + "Room": "null", }, { "Subject": "null", "Teacher": "null", + "Room": "null", }, ], "Tuesday": [ { "Subject": "null", "Teacher": "null", + "Room": "null", }, { "Subject": "null", "Teacher": "null", + "Room": "null", }, { "Subject": "null", "Teacher": "null", + "Room": "null", }, { "Subject": "null", "Teacher": "null", + "Room": "null", }, { "Subject": "null", "Teacher": "null", + "Room": "null", }, { "Subject": "null", "Teacher": "null", + "Room": "null", }, { "Subject": "null", "Teacher": "null", + "Room": "null", }, { "Subject": "null", "Teacher": "null", + "Room": "null", }, ], "Wednesday": [ { "Subject": "null", "Teacher": "null", + "Room": "null", }, { "Subject": "null", "Teacher": "null", + "Room": "null", }, { "Subject": "null", "Teacher": "null", + "Room": "null", }, { "Subject": "null", "Teacher": "null", + "Room": "null", }, { "Subject": "null", "Teacher": "null", + "Room": "null", }, { "Subject": "null", "Teacher": "null", + "Room": "null", }, { "Subject": "null", "Teacher": "null", + "Room": "null", }, { "Subject": "null", "Teacher": "null", + "Room": "null", }, ], "Thursday": [ { "Subject": "null", "Teacher": "null", + "Room": "null", }, { "Subject": "null", "Teacher": "null", + "Room": "null", }, { "Subject": "null", "Teacher": "null", + "Room": "null", }, { "Subject": "null", "Teacher": "null", + "Room": "null", }, { "Subject": "null", "Teacher": "null", + "Room": "null", }, { "Subject": "null", "Teacher": "null", + "Room": "null", }, { "Subject": "null", "Teacher": "null", + "Room": "null", }, { "Subject": "null", "Teacher": "null", + "Room": "null", }, ], "Friday": [ { "Subject": "null", "Teacher": "null", + "Room": "null", }, { "Subject": "null", "Teacher": "null", + "Room": "null", }, { "Subject": "null", "Teacher": "null", + "Room": "null", }, { "Subject": "null", "Teacher": "null", + "Room": "null", }, { "Subject": "null", "Teacher": "null", + "Room": "null", }, { "Subject": "null", "Teacher": "null", + "Room": "null", }, { "Subject": "null", "Teacher": "null", + "Room": "null", }, { "Subject": "null", "Teacher": "null", + "Room": "null", }, ], "Saturday": [ { "Subject": "null", "Teacher": "null", + "Room": "null", }, { "Subject": "null", "Teacher": "null", + "Room": "null", }, { "Subject": "null", "Teacher": "null", + "Room": "null", }, { "Subject": "null", "Teacher": "null", + "Room": "null", }, { "Subject": "null", "Teacher": "null", + "Room": "null", }, { "Subject": "null", "Teacher": "null", + "Room": "null", }, { "Subject": "null", "Teacher": "null", + "Room": "null", }, { "Subject": "null", "Teacher": "null", + "Room": "null", }, ], } @@ -249,10 +297,14 @@ def update_time_school(): x = collection_archive.insert_one(mydict) # Add collection on collection (archive-school-time-table) check_repeat = 0 check_repeat_teacher = 0 + check_repeat_room = 0 dont_repeat = 0 dont_repeat_teacher = 0 + dont_repeat_room = 0 gagaga_teacher = 0 + gagaga_room = 0 number_teacher = 1 + number_room = 1 number = 1 current_day = None day_counter = 0 @@ -270,6 +322,7 @@ def update_time_school(): day = str(ws.cell(row=i, column=3).value) # Get day from excel file school_subject = ws.cell(row=i, column=column).value # Get school subject from excel file teacher = ws.cell(row=i, column=column+1).value + room = ws.cell(row=i, column=column+2) if dont_repeat == 9: check_repeat += 1 # 13 if check_repeat == 5: @@ -409,7 +462,7 @@ def update_time_school(): collection_archive.update_one( { "_id": ObjectId(array_document_archive_school_time_table)}, { "$set": { - "School Subject." + array_test[0] + "." + str(gagaga)+ ".Subject": school_subject, + "School Subject." + array_test[0] + "." + str(gagaga)+ ".Teacher": teacher, } } ) @@ -439,7 +492,7 @@ def update_time_school(): collection_archive.update_one( { "_id": ObjectId(array_document_archive_school_time_table)}, { "$set": { - "School Subject." + array_test[0] + "." + str(gagaga)+ ".Subject": school_subject, + "School Subject." + array_test[0] + "." + str(gagaga)+ ".Teacher": teacher, } } ) @@ -451,4 +504,78 @@ def update_time_school(): if gagaga_teacher == 8: gagaga_teacher = 0 + #Search room school + if dont_repeat_room == 9: + check_repeat_room += 1 + if check_repeat_room == 5: + check_repeat_room = 0 + dont_repeat_room = 0 + #number = 1 + else: + if day == "None": + if room == 0: + number_room += 1 + gagaga_room += 1 + dont_repeat_room += 1 + if number_room == 9: + number_room = 1 + if gagaga_room == 9: + gagaga_room = 0 + else: + find_document_school_time_table = list(collection.find({}, {"Date": long_date})) + find_document_archive_school_time_table = list(collection_archive.find({}, {"Date": long_date})) + array_document_school_time_table = find_document_school_time_table[0]["_id"] + array_document_archive_school_time_table = find_document_archive_school_time_table[0]["_id"] + collection.update_one( + { "_id": ObjectId(array_document_school_time_table)}, + { "$set": { + "School Subject." + array_test[0] + "." + str(gagaga_teacher) + ".Room": room, + } + } + ) + collection_archive.update_one( + { "_id": ObjectId(array_document_archive_school_time_table)}, + { "$set": { + "School Subject." + array_test[0] + "." + str(gagaga)+ ".Room": room, + } + } + ) + number_room += 1 + gagaga_room += 1 + dont_repeat_room += 1 + if number_room == 9: + number_room = 1 + if gagaga_room == 8: + gagaga_room = 0 + else: + datetime_obj = datetime.datetime.strptime(day, "%Y-%m-%d %H:%M:%S").strftime("%d %m %Y") + convert_date_to_day = datetime.datetime.strptime(datetime_obj, '%d %m %Y').strftime('%A') + array_test = [] + array_test.append(convert_date_to_day) + find_document_school_time_table = list(collection.find({}, {"Date": long_date})) + find_document_archive_school_time_table = list(collection_archive.find({}, {"Date": long_date})) + array_document_school_time_table = find_document_school_time_table[0]["_id"] + array_document_archive_school_time_table = find_document_archive_school_time_table[0]["_id"] + collection.update_one( + { "_id": ObjectId(array_document_school_time_table)}, + { "$set": { + "School Subject." + array_test[0] + "." + str(gagaga_teacher)+ ".Room": room, + } + } + ) + collection_archive.update_one( + { "_id": ObjectId(array_document_archive_school_time_table)}, + { "$set": { + "School Subject." + array_test[0] + "." + str(gagaga)+ ".Room": room, + } + } + ) + number_room += 1 + gagaga_room += 1 + dont_repeat_room += 1 + if number_room == 9: + number_room = 1 + if gagaga_room == 8: + gagaga_room = 0 + update_time_school() \ No newline at end of file diff --git a/subdomains/api/school_time/api_school_times.py b/subdomains/api/school_time/api_school_times.py new file mode 100644 index 0000000..2db34af --- /dev/null +++ b/subdomains/api/school_time/api_school_times.py @@ -0,0 +1,36 @@ +from flask import Flask, render_template, request, redirect, session, url_for, jsonify +from dotenv import load_dotenv +from pymongo import MongoClient +import requests +import os +import urllib +import pymongo +import datetime +import requests +import time + +app = Flask(__name__) +load_dotenv() #Load .env file +PASSWORD_MONGODB = os.getenv('PASSWORD_MONGODB') #Password for MongoDB +URL_MONGODB = os.getenv('URL_MONGODB') #URL for MongoDB +mongo_url = "mongodb+srv://elci:gWB3EL%25W%405%5EA%40PGvvYRt@stefano-cluster.iphin.mongodb.net/website-class" +print(mongo_url) #URL for MongoDB (with password) +client = MongoClient(mongo_url) #Connect to MongoDB +database = client["website-class"] #Database name +collection = database["school-time-table"] +db = client.get_database() + +@app.route("/", methods=["GET"]) +def get_subjects(): + schedule_collection = db.schedule + + # Utilizza il metodo find() per recuperare tutti i documenti della collezione + # e li converte in una lista + schedule = list(schedule_collection.find()) + + # Restituisce la risposta come una stringa JSON + return jsonify(schedule) + + +if __name__ == '__main__': + app.run() \ No newline at end of file diff --git a/subdomains/api/school_time/app.py b/subdomains/api/school_time/app.py deleted file mode 100644 index 796b2bc..0000000 --- a/subdomains/api/school_time/app.py +++ /dev/null @@ -1,127 +0,0 @@ -from flask import Flask, render_template, request, redirect, session, url_for, jsonify -from dotenv import load_dotenv -import requests -import os -import urllib -import pymongo -import datetime -import requests -import time - -app = Flask(__name__) - -load_dotenv() #Load .env file -PASSWORD_MONGODB = os.getenv('PASSWORD_MONGODB') #Password for MongoDB -URL_MONGODB = os.getenv('URL_MONGODB') #URL for MongoDB -mongo_url = "mongodb+srv://elci:" + urllib.parse.quote_plus(PASSWORD_MONGODB) + URL_MONGODB #URL for MongoDB (with password) -client = pymongo.MongoClient(mongo_url) #Connect to MongoDB -database = client["website-class"] #Database name -collection = database["school-time-table"] - -@app.route('/', methods = ['GET', 'POST']) -def api(): - current_time = datetime.datetime.now() - day = str(current_time.day) - month = str(current_time.month) - year = str(current_time.year) - hour = str(current_time.hour) - minute = str(current_time.minute) - long_date = day + "-" + month + "-" + year + " " + hour + ":" + minute - #Search school subject - collection_find_schoolsubject = list(collection.find({}, {"Date": long_date ,"School Subject": 1,})) - array_schoolsubject = collection_find_schoolsubject[0]['School Subject'] - #Search teacher - collection_find_teacher = list(collection.find({}, {"Date": long_date ,"Teacher": 1,})) - array_teacher = collection_find_teacher[0]['Teacher'] - - test = { - "subject" : { - "monday": { - "Subject 1": array_schoolsubject[0], - "Subject 2": array_schoolsubject[1], - "Subject 3": array_schoolsubject[2], - "Subject 4": array_schoolsubject[3], - "Subject 5": array_schoolsubject[4], - "Subject 6": array_schoolsubject[5], - }, - "tuesday": { - "Subject 1": array_schoolsubject[14], - "Subject 2": array_schoolsubject[15], - "Subject 3": array_schoolsubject[16], - "Subject 4": array_schoolsubject[17], - "Subject 5": array_schoolsubject[18], - "Subject 6": array_schoolsubject[19], - }, - "wednesday": { - "Subject 1": array_schoolsubject[12], - "Subject 2": array_schoolsubject[13], - "Subject 3": array_schoolsubject[14], - "Subject 4": array_schoolsubject[15], - "Subject 5": array_schoolsubject[16], - "Subject 6": array_schoolsubject[17], - }, - "thursday": { - "Subject 1": array_schoolsubject[28], - "Subject 2": array_schoolsubject[29], - "Subject 3": array_schoolsubject[30], - "Subject 4": array_schoolsubject[31], - "Subject 5": array_schoolsubject[32], - "Subject 6": array_schoolsubject[33], - }, - "friday": { - "Subject 1": array_schoolsubject[42], - "Subject 2": array_schoolsubject[43], - "Subject 3": array_schoolsubject[44], - "Subject 4": array_schoolsubject[45], - "Subject 5": array_schoolsubject[46], - "Subject 6": array_schoolsubject[47], - }, - }, - "teacher": { - "monday": { - "Teacher 1": array_teacher[0], - "Teacher 2": array_teacher[1], - "Teacher 3": array_teacher[2], - "Teacher 4": array_teacher[3], - "Teacher 5": array_teacher[4], - "Teacher 6": array_teacher[5], - }, - "tuesday": { - "Teacher 1": array_teacher[14], - "Teacher 2": array_teacher[15], - "Teacher 3": array_teacher[16], - "Teacher 4": array_teacher[17], - "Teacher 5": array_teacher[18], - "Teacher 6": array_teacher[19], - }, - "wednesday": { - "Teacher 1": array_teacher[28], - "Teacher 2": array_teacher[29], - "Teacher 3": array_teacher[30], - "Teacher 4": array_teacher[31], - "Teacher 5": array_teacher[32], - "Teacher 6": array_teacher[33], - }, - "thursday": { - "Teacher 1": array_teacher[42], - "Teacher 2": array_teacher[43], - "Teacher 3": array_teacher[44], - "Teacher 4": array_teacher[45], - "Teacher 5": array_teacher[46], - "Teacher 6": array_teacher[47], - }, - "friday": { - "Teacher 1": array_teacher[56], - "Teacher 2": array_teacher[57], - "Teacher 3": array_teacher[58], - "Teacher 4": array_teacher[59], - "Teacher 5": array_teacher[60], - "Teacher 6": array_teacher[61], - }, - }, - } - - return jsonify(test) - -if __name__ == '__main__': - app.run() \ No newline at end of file