|
|
|
@ -129,7 +129,7 @@ def create_course(): |
|
|
|
|
if course_uploaded_pdf is not None: |
|
|
|
|
pdf_file_name: str = random_string_generator(32) +"."+ course_uploaded_pdf.filename.split('.')[-1] |
|
|
|
|
course_uploaded_pdf.save(os.path.join(USER_UPLOADS_DIR, pdf_file_name)) |
|
|
|
|
published_status: PublishedStatus = PublishedStatus.DRAFT |
|
|
|
|
published_status: PublishedStatus = PublishedStatus.PENDING |
|
|
|
|
try: |
|
|
|
|
course_name: str = form_data['course_name'] |
|
|
|
|
except KeyError: |
|
|
|
@ -358,3 +358,81 @@ def update_category(): |
|
|
|
|
selected_category.isActive = bool(int(form_data.get('isActive'))) |
|
|
|
|
db.session.commit() |
|
|
|
|
return jsonify({'message': 'Category updated'}), 200 |
|
|
|
|
|
|
|
|
|
@course.route('/enrolled') |
|
|
|
|
@auth_required() |
|
|
|
|
def enrolled_courses(): |
|
|
|
|
enrollments: Course = db.session.execute( |
|
|
|
|
select(Enrollment).where( |
|
|
|
|
and_(Enrollment.userID == g.current_user.id, Course.publishedStatus == int(PublishedStatus.APPROVED)) |
|
|
|
|
) |
|
|
|
|
).scalars() |
|
|
|
|
enrolled_list: list[dict] = [] |
|
|
|
|
for enroll_row in enrollments: |
|
|
|
|
item = enroll_row.course |
|
|
|
|
enrolled_list.append( |
|
|
|
|
{ |
|
|
|
|
'id': enroll_row.id, |
|
|
|
|
'course_id': enroll_row.courseID, |
|
|
|
|
'lastActivity': enroll_row.lastActivity, |
|
|
|
|
'currentPage': enroll_row.currentPage, |
|
|
|
|
'maxPage': enroll_row.maxPage, |
|
|
|
|
'joinedDate': enroll_row.joinedDate, |
|
|
|
|
'userID': enroll_row.userID, |
|
|
|
|
'name': item.name, |
|
|
|
|
'description': item.description, |
|
|
|
|
'isActive': item.isActive, |
|
|
|
|
'creationDate': item.creationDate, |
|
|
|
|
'coverImage': url_for('send_file', filename=item.coverImage), |
|
|
|
|
'totalEnrolled': item.totalEnrolled, |
|
|
|
|
'author': { |
|
|
|
|
'id': item.author.id, |
|
|
|
|
'firstName': item.author.firstName, |
|
|
|
|
'lastName': item.author.lastName, |
|
|
|
|
'username': item.author.username, |
|
|
|
|
'bio': item.author.bio, |
|
|
|
|
'lastOnline': item.author.lastOnline, |
|
|
|
|
'pfpFilename': url_for('send_file', filename=item.author.pfpFilename) |
|
|
|
|
}, |
|
|
|
|
'category': { |
|
|
|
|
'id': item.categoryID, |
|
|
|
|
'name': item.category.name, |
|
|
|
|
'description': item.category.description |
|
|
|
|
} |
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
return jsonify(enrolled_list), 200 |
|
|
|
|
|
|
|
|
|
@course.route('/myCourses') |
|
|
|
|
@auth_required() |
|
|
|
|
def enrolled_courses(): |
|
|
|
|
courses: Course = db.session.execute(select(Course).where(Course.authorID == g.current_user.id) |
|
|
|
|
).scalars() |
|
|
|
|
course_list: list[dict] = [] |
|
|
|
|
for item in courses: |
|
|
|
|
course_list.append( |
|
|
|
|
{ |
|
|
|
|
'id': item.id, |
|
|
|
|
'name': item.name, |
|
|
|
|
'description': item.description, |
|
|
|
|
'isActive': item.isActive, |
|
|
|
|
'publishedStatus': item.publishedStatus, |
|
|
|
|
'creationDate': item.creationDate, |
|
|
|
|
'coverImage': url_for('send_file', filename=item.coverImage), |
|
|
|
|
'totalEnrolled': item.totalEnrolled, |
|
|
|
|
'author': { |
|
|
|
|
'id': item.author.id, |
|
|
|
|
'firstName': item.author.firstName, |
|
|
|
|
'lastName': item.author.lastName, |
|
|
|
|
'username': item.author.username, |
|
|
|
|
'bio': item.author.bio, |
|
|
|
|
'lastOnline': item.author.lastOnline, |
|
|
|
|
'pfpFilename': url_for('send_file', filename=item.author.pfpFilename) |
|
|
|
|
}, |
|
|
|
|
'category': { |
|
|
|
|
'id': item.categoryID, |
|
|
|
|
'name': item.category.name, |
|
|
|
|
'description': item.category.description |
|
|
|
|
} |
|
|
|
|
}) |
|
|
|
|
return jsonify(course_list), 200 |