diff --git a/GUI/Dockerfile b/Dockerfile similarity index 81% rename from GUI/Dockerfile rename to Dockerfile index 012e1b2..39f5137 100644 --- a/GUI/Dockerfile +++ b/Dockerfile @@ -10,4 +10,4 @@ COPY / templates/GUI COPY . . -ENTRYPOINT ["python", "app.py"] \ No newline at end of file +ENTRYPOINT ["python", "app.py"] diff --git a/GUI/databaseConnection.py b/GUI/databaseConnection.py deleted file mode 100644 index dfcf644..0000000 --- a/GUI/databaseConnection.py +++ /dev/null @@ -1,17 +0,0 @@ -import pyodbc - -# first install pyodbc using pip install pyodbc -# get the server name SQL Server -# create a new database in SQL Server -# then execute sql commands in the "SQL code.sql" file -# replace the server with your server name -# replace the database with your database name -connectionString = ( - r'DRIVER={SQL Server};' - r'SERVER=DESKTOP-0TH5VGS\SQLEXPRESS;' - r'DATABASE=Coursiz;' - r'Trusted_Connection=yes;' -) -connection = pyodbc.connect(connectionString) -query = connection.cursor() - diff --git a/GUI/index.html b/GUI/index.html deleted file mode 100644 index 42ba207..0000000 --- a/GUI/index.html +++ /dev/null @@ -1,337 +0,0 @@ - - - - - - - - - - - - mo7y - - - - - - - - -
-
- - -
Course Name
-
-
-

Announcement

- - - - - - - - - -

Lectures

- - - - - - - - - - - -
- - -
- - - -
- -{% if error_message %} -

{{ error_message }}

-{% elif success_message %} -

{{ success_message }}

-{% endif %} - - - -
- - - diff --git a/GUI/app.py b/app.py similarity index 93% rename from GUI/app.py rename to app.py index 55ddece..a15ee59 100644 --- a/GUI/app.py +++ b/app.py @@ -2,7 +2,7 @@ from flask_wtf import FlaskForm from wtforms import StringField, PasswordField, SubmitField,SelectField from wtforms.validators import DataRequired - +import pyodbc import sys import os sys.path.insert(0, os.path.abspath('classes')) @@ -11,13 +11,15 @@ from Students import students from Teacher import teacher from Upload import upload - +from submissions import submissions app = Flask(__name__) app.secret_key = 'super_secret_key' + + class SignInForm(FlaskForm): Email = StringField('Email', validators=[DataRequired()]) password = PasswordField('Password', validators=[DataRequired()]) @@ -62,10 +64,21 @@ def create_announcement(): Upload_title = request_data['Title'] Upload_Description = request_data['Description'] Upload_link = request_data['Link'] + + + + # Create a new announcement. Upload = upload() Upload.insert_upload(Upload_title,Upload_type,Upload_Description, Upload_link,Course_code) + if Upload_type=="Assignment": + A_deadline = request_data['deadline'] + A_grade= request_data['assigngrade'] + while A_grade == "None": + flash('Please enter grade', 'error') + submission=submissions() + submission.createSubmission(Upload.id,Course_code,A_grade,A_deadline) return redirect(url_for('courses')) @app.route('/Signin', methods=['GET', 'POST']) @@ -186,4 +199,4 @@ def contact(): return render_template('contact.html') if __name__ == '__main__': - app.run(host="0.0.0.0",port=80,debug=True) + app.run(host="0.0.0.0",port=80,debug=True) diff --git a/classes/Students.py b/classes/Students.py index 392f1c3..39903b0 100644 --- a/classes/Students.py +++ b/classes/Students.py @@ -1,18 +1,17 @@ from users import users -import pyodbc -connection=pyodbc.connect('Driver={SQL Server};SERVER=KAREEM;DATABASE=Coursiz;Trusted_Connection=yes') -query = connection.cursor() +from databaseConnection import db +db=db() class students(users): def __init__(self,id): self.id=id def addStudentToCourse(self,Course_Code): - query.execute("SELECT Course_Code FROM Courses WHERE Course_Code = ?", (Course_Code)) - fetched=query.fetchone() + db.cursor.execute("SELECT Course_Code FROM Courses WHERE Course_Code = ?", (Course_Code)) + fetched=db.cursor.fetchone() if fetched is None: return False else: - query.execute("select Capacity,Number_enrolled from Courses where Course_Code = ?", (Course_Code)) - fetched=query.fetchone() + db.cursor.execute("select Capacity,Number_enrolled from Courses where Course_Code = ?", (Course_Code)) + fetched=db.cursor.fetchone() if fetched[0] is None: self.Number_enrolled=0 else: self.Number_enrolled=fetched[0] @@ -20,22 +19,22 @@ def addStudentToCourse(self,Course_Code): # if self.Number_enrolled >= self.Capacity: # return False # else: - query.execute("update Courses set Number_enrolled = ? where Course_Code = ?", (self.Number_enrolled + 1 , Course_Code)) - query.commit() - query.execute("insert into Enroll_in(Student_ID,Course_Code) values(?,?)", (self.id, Course_Code)) - query.commit() + db.cursor.execute("update Courses set Number_enrolled = ? where Course_Code = ?", (self.Number_enrolled + 1 , Course_Code)) + db.cursor.commit() + db.cursor.execute("insert into Enroll_in(Student_ID,Course_Code) values(?,?)", (self.id, Course_Code)) + db.cursor.commit() return True def removeStudentFromCourse(self,Course_Code): - query.execute('''update Courses set Number_enrolled = ? where Course_Code = ?''', (self.Number_enrolled - 1 , Course_Code)) - query.commit() - query.execute('''delete from Enroll_in where Student_ID = ? and Course_Code = ?''', (self.id, Course_Code)) - query.commit() + db.cursor.execute('''update Courses set Number_enrolled = ? where Course_Code = ?''', (self.Number_enrolled - 1 , Course_Code)) + db.cursor.commit() + db.cursor.execute('''delete from Enroll_in where Student_ID = ? and Course_Code = ?''', (self.id, Course_Code)) + db.cursor.commit() def get_courses(self): - query.execute("select Course_Code from Enroll_in where Student_ID = ?", (self.id)) + db.cursor.execute("select Course_Code from Enroll_in where Student_ID = ?", (self.id)) fetched=[] - for i in query.fetchall(): + for i in db.cursor.fetchall(): i=i[0] fetched.append(i) - return fetched \ No newline at end of file + return fetched diff --git a/classes/course.py b/classes/course.py index 2aaee1f..4f056dd 100644 --- a/classes/course.py +++ b/classes/course.py @@ -1,7 +1,6 @@ import pyodbc -connection=pyodbc.connect('Driver={SQL Server};SERVER=KAREEM;DATABASE=Coursiz;Trusted_Connection=yes') -query = connection.cursor() - +from databaseConnection import db +db=db() class Course_class: def __init__(self, courseName, yearTeached, Semester, Capacity,teacher_name): self.courseName = courseName @@ -16,22 +15,22 @@ def createCourse(self): return False else: first_name,second_name=self.teacher_name.split()[0],self.teacher_name.split()[1] - query.execute("SELECT Email FROM Users WHERE First_Name = ? and Last_Name = ?", (first_name, second_name)) - teacher_email = query.fetchone()[0] + db.cursor.execute("SELECT Email FROM Users WHERE First_Name = ? and Last_Name = ?", (first_name, second_name)) + teacher_email = db.cursor.fetchone()[0] if teacher_email == None: return False else: - query.execute("SELECT TeacherID FROM Teachers WHERE Email = ?", (teacher_email)) - teacher_id = query.fetchone()[0] - query.execute("SELECT COUNT(*) FROM Courses") - query.execute("SELECT COUNT(*) FROM Courses") - number_of_rows = query.fetchone()[0] + db.cursor.execute("SELECT TeacherID FROM Teachers WHERE Email = ?", (teacher_email)) + teacher_id = db.cursor.fetchone()[0] + db.cursor.execute("SELECT COUNT(*) FROM Courses") + db.cursor.execute("SELECT COUNT(*) FROM Courses") + number_of_rows = db.cursor.fetchone()[0] Course_code='Cs'+str(number_of_rows+1) - query.execute("insert into Courses(Name, Year, Semester, Course_Code, Capacity, Number_enrolled,TeacherID) values (?, ?, ?, ?, ?, ?,?)", (self.courseName, self.yearTeached, self.Semester, Course_code, self.Capacity,self.Number_enrolled,teacher_id)) - query.commit() + db.cursor.execute("insert into Courses(Name, Year, Semester, Course_Code, Capacity, Number_enrolled,TeacherID) values (?, ?, ?, ?, ?, ?,?)", (self.courseName, self.yearTeached, self.Semester, Course_code, self.Capacity,self.Number_enrolled,teacher_id)) + db.cursor.commit() return True def deleteCourse(self,Course_Code): - query.execute('''delete from Courses where Course_Code = ?''', (Course_Code)) - query.commit() + db.cursor.execute('''delete from Courses where Course_Code = ?''', (Course_Code)) + db.cursor.commit() diff --git a/classes/databaseConnection.py b/classes/databaseConnection.py index bd9c9d9..19349d4 100644 --- a/classes/databaseConnection.py +++ b/classes/databaseConnection.py @@ -1,16 +1,12 @@ import pyodbc - # first install pyodbc using pip install pyodbc # get the server name SQL Server # create a new database in SQL Server # then execute sql commands in the "SQL code.sql" file # replace the server with your server name # replace the database with your database name -connectionString = ( - r'DRIVER={SQL Server};' - r'SERVER= server;' - r'DATABASE= databaseName;' - r'Trusted_Connection=yes;' -) -connection = pyodbc.connect(connectionString) -cursor = connection.cursor() +class db: + def __init__(self): + self.connectionString = ('Driver={SQL Server};SERVER=DESKTOP-9IHIA03;DATABASE=Coursiz;Trusted_Connection=yes') + self.connection = pyodbc.connect(self.connectionString) + self.cursor = self.connection.cursor() diff --git a/classes/submissions.py b/classes/submissions.py index deba1a5..3f6bfa8 100644 --- a/classes/submissions.py +++ b/classes/submissions.py @@ -1,61 +1,65 @@ -import databaseConnection +from databaseConnection import db +db=db() +# Submission_ID, Submission_type, studentID, Document_link class submissions: - def __init__(self, Submission_ID, Submission_type, studentID, Document_link): - self.Submission_ID = Submission_ID - self.Submission_type = Submission_type - self.Deadline_Date = Deadline_Date - self.Document_link = Document_link - self.studentID = studentID + def createSubmission(self,upload_id,course_code,out_of,Deadline): + query = db.cursor + query.execute("insert into Sumbissions(Submission_ID,Deadline_Date) values(?,?)",(upload_id,Deadline)) + db.connection.commit() + query.execute("select distinct Student_ID from Enroll_in where Course_Code=?",(course_code)) + student_ids = query.fetchall() + for student_id in student_ids: + query.execute("insert into Submits(SubID,student_id,out_of) values(?,?,?)",(upload_id,student_id[0],out_of)) + db.connection.commit() + # def createSubmission(self, Document_link, Submission_type, course): + # query = db.cursor() + # if self.Document_link is None: + # return False + # elif self.Document_link.startswith("https://docs.google.com/") and document_link.endswith("/sharing"): + # query.execute("SELECT COUNT(*) FROM Submissions") + # number_of_rows = query.fetchone()[0] + # Submission_ID = number_of_rows + 1 + # Submission_type = "Document" + # query.execute("INSERT INTO Submissions(Submission_ID, Submission_type, studentID, Document_link, Course_Code) VALUES(?, ?, ?, ?, ?)", (Submission_ID, Submission_type, studentID, Document_link, courseCode)) + # db.connection.commit() + # return True + # elif self.Document_link.startswith("https://github.com/"): + # query.execute("SELECT COUNT(*) FROM Submissions") + # number_of_rows = query.fetchone()[0] + # Submission_ID = number_of_rows + 1 + # Submission_type = "Project" + # query.execute("INSERT INTO Submissions(Submission_ID, Submission_type, studentID, Document_link, Course_Code) VALUES(?, ?, ?, ?, ?)", (Submission_ID, Submission_type, studentID, Document_link, courseCode)) + # databaseConnection.connection.commit() + # return True + # else: + # query.execute("SELECT COUNT(*) FROM Submissions") + # number_of_rows = query.fetchone()[0] + # Submission_ID = number_of_rows + 1 + # query.execute("INSERT INTO Submissions(Submission_ID, Submission_type, studentID, Document_link, Course_Code) VALUES(?, ?, ?, ?, ?)", (Submission_ID, Submission_type, studentID, Document_link, courseCode)) + # databaseConnection.connection.commit() + # return True - def createSubmission(self, Document_link, Submission_type, course): - query = databaseConnection.connection.cursor() - if document_link is None: - return False - elif document_link.startswith("https://docs.google.com/") and document_link.endswith("/sharing"): - query.execute("SELECT COUNT(*) FROM Submissions") - number_of_rows = query.fetchone()[0] - Submission_ID = number_of_rows + 1 - Submission_type = "Document" - query.execute("INSERT INTO Submissions(Submission_ID, Submission_type, studentID, Document_link, Course_Code) VALUES(?, ?, ?, ?, ?)", (Submission_ID, Submission_type, studentID, Document_link, courseCode)) - databaseConnection.connection.commit() - return True - elif document_link.startswith("https://github.com/"): - query.execute("SELECT COUNT(*) FROM Submissions") - number_of_rows = query.fetchone()[0] - Submission_ID = number_of_rows + 1 - Submission_type = "Project" - query.execute("INSERT INTO Submissions(Submission_ID, Submission_type, studentID, Document_link, Course_Code) VALUES(?, ?, ?, ?, ?)", (Submission_ID, Submission_type, studentID, Document_link, courseCode)) - databaseConnection.connection.commit() - return True - else: - query.execute("SELECT COUNT(*) FROM Submissions") - number_of_rows = query.fetchone()[0] - Submission_ID = number_of_rows + 1 - query.execute("INSERT INTO Submissions(Submission_ID, Submission_type, studentID, Document_link, Course_Code) VALUES(?, ?, ?, ?, ?)", (Submission_ID, Submission_type, studentID, Document_link, courseCode)) - databaseConnection.connection.commit() - return True - - def deleteSubmission(self, Submission_ID): - query = databaseConnection.connection.cursor() - query.execute("DELETE FROM Submissions WHERE Submission_ID = ?", (Submission_ID)) - databaseConnection.connection.commit() - return True + # def deleteSubmission(self, Submission_ID): + # query = databaseConnection.connection.cursor() + # query.execute("DELETE FROM Submissions WHERE Submission_ID = ?", (Submission_ID)) + # databaseConnection.connection.commit() + # return True - def updateSubmission(self, Submission_ID, Submission_type, Document_link): - query = databaseConnection.connection.cursor() - query.execute("UPDATE Submissions SET Submission_type = ?, Document_link = ? WHERE Submission_ID = ?", (Submission_type, Document_link, Submission_ID)) - databaseConnection.connection.commit() - return True + # def updateSubmission(self, Submission_ID, Submission_type, Document_link): + # query = databaseConnection.connection.cursor() + # query.execute("UPDATE Submissions SET Submission_type = ?, Document_link = ? WHERE Submission_ID = ?", (Submission_type, Document_link, Submission_ID)) + # databaseConnection.connection.commit() + # return True - def viewSubmission(self, Submission_ID): - query = databaseConnection.connection.cursor() - query.execute("SELECT * FROM Submissions WHERE Submission_ID = ?", (Submission_ID)) - return query.fetchone() + # def viewSubmission(self, Submission_ID): + # query = databaseConnection.connection.cursor() + # query.execute("SELECT * FROM Submissions WHERE Submission_ID = ?", (Submission_ID)) + # return query.fetchone() - def viewAllSubmissionsForTeaceher(self): - query = databaseConnection.connection.cursor() - query.execute("SELECT * FROM Submissions") - return query.fetchall() \ No newline at end of file + # def viewAllSubmissionsForTeaceher(self): + # query = databaseConnection.connection.cursor() + # query.execute("SELECT * FROM Submissions") + # return query.fetchall() diff --git a/classes/users.py b/classes/users.py index 9aaaef6..212f825 100644 --- a/classes/users.py +++ b/classes/users.py @@ -1,5 +1,5 @@ import pyodbc -connection=pyodbc.connect('Driver={SQL Server};SERVER=KAREEM;DATABASE=Coursiz;Trusted_Connection=yes') +connection=pyodbc.connect('Driver={SQL Server};SERVER=DESKTOP-9IHIA03;DATABASE=Coursiz;Trusted_Connection=yes') cursor = connection.cursor() from datetime import datetime @@ -125,4 +125,4 @@ def sign_in_get_data(self): # def signUp(self, username, email, password): # pass - \ No newline at end of file +