feat: add new batch and mentor course mapping

This commit is contained in:
pateljannat
2021-04-21 10:47:10 +05:30
parent a2fe314420
commit b09ec1e29d
8 changed files with 71 additions and 64 deletions

View File

@@ -3,36 +3,27 @@ from frappe.utils import nowdate, getdate
def get_context(context):
context.no_cache = 1
try:
course_id = frappe.form_dict["course"]
except KeyError:
frappe.local.flags.redirect_location = "/courses"
raise frappe.Redirect
context.course = get_course(course_id)
context.batches = get_course_batches(context.course.name)
context.upcoming_batches = get_upcoming_batches(context.course.name, context.batches)
#context.course_enrolled = has_enrolled(course_id)
context.discussions, context.memberships = get_discussions(context.batches)
context.instructor = get_instructor(course_id)
context.memberships = get_membership(context.batches)
context.upcoming_batches = [] if len(context.memberships) else get_upcoming_batches(context.course.name)
context.instructor = get_instructor(context.course.owner)
context.mentors = get_mentors(context.course.name)
if context.memberships:
context.member_type = context.memberships[0].member_type
if context.member_type != "Student":
context.batches = [membership.batch for membership in context.memberships]
if context.member_type == "Mentor":
context.is_mentor = True
context.mentor_batches = get_mentor_batches(context.memberships)
context.current_batch = context.memberships[0].batch
context.author = context.memberships[0].member
else:
context.membership_type = None
context.batches = []
context.current_batch = None
context.author = None
context.is_mentor = is_mentor(context.course.name)
if context.is_mentor:
context.mentor_batches = get_mentor_batches(context.memberships) # Your Bacthes for mentor
def get_course(slug):
course = frappe.db.get_value("LMS Course", {"slug": slug},
["name", "slug", "title", "description", "short_introduction", "video_link"], as_dict=1)
["name", "slug", "title", "description", "short_introduction", "video_link", "owner"], as_dict=1)
course["topics"] = frappe.db.get_all("LMS Topic",
filters={
@@ -43,13 +34,10 @@ def get_course(slug):
)
return course
def get_upcoming_batches(course, all_batches):
memberships = get_membership(all_batches)
if not len(memberships):
batches = frappe.get_all("LMS Batch", {"course": course, "start_date": [">", nowdate()]}, ["start_date", "start_time", "end_time", "sessions_on", "name"])
batches = get_batch_mentors(batches)
return batches
return []
def get_upcoming_batches(course):
batches = frappe.get_all("LMS Batch", {"course": course, "start_date": [">", nowdate()]}, ["start_date", "start_time", "end_time", "sessions_on", "name"])
batches = get_batch_mentors(batches)
return batches
def get_batch_mentors(batches):
for batch in batches:
@@ -76,21 +64,18 @@ def get_membership(batches):
memberships.append(membership)
return memberships
def get_instructor(slug):
owner = frappe.db.get_value("LMS Course", {"slug":slug}, ["owner"])
def get_instructor(owner):
instructor = frappe.get_doc("Community Member", {"email": owner})
instructor.course_count = len(frappe.get_all("LMS Course", {"owner": owner}))
return instructor
def get_mentors(course):
course_mentors = []
mentors = frappe.get_all("LMS Course Mentor Mapping", {"course": course}, ["member"])
mentors = frappe.get_all("LMS Course Mentor Mapping", {"course": course}, ["mentor"])
for mentor in mentors:
member = frappe.get_doc("Community Member", mentor.member)
member_in_list = list(filter(lambda x: x.name == member.name, course_mentors))
if not member_in_list:
member.batch_count = len(frappe.get_all("LMS Batch Membership", {"member": member.name, "member_type": "Mentor"}))
course_mentors.append(member)
member = frappe.get_doc("Community Member", mentor.mentor)
member.batch_count = len(frappe.get_all("LMS Batch Membership", {"member": member.name, "member_type": "Mentor"}))
course_mentors.append(member)
return course_mentors
def get_course_batches(course):
@@ -112,6 +97,15 @@ def get_mentor_batches(memberships):
mentor_batches = get_batch_mentors(mentor_batches)
return mentor_batches
def is_mentor(course):
try:
member = frappe.db.get_value("Community Member", {"email": frappe.session.user}, ["name"])
except frappe.DoesNotExistError:
return False
mapping = frappe.get_all("LMS Course Mentor Mapping", {"course": course, "mentor": member})
if len(mapping):
return True
@frappe.whitelist()
def get_messages(batch):
messages = frappe.get_all("LMS Message", {"batch": batch}, ["*"], order_by="creation desc")
@@ -123,18 +117,6 @@ def get_messages(batch):
message.author_name = "You"
return messages
@frappe.whitelist()
def has_enrolled(course):
return frappe.db.get_value("LMS Course Enrollment", {"course": course, "owner": frappe.session.user})
@frappe.whitelist()
def enroll(course):
return frappe.get_doc({
"doctype": "LMS Course Enrollment",
"course": course,
"user": frappe.session.user
}).save()
@frappe.whitelist()
def save_message(message, author, batch):
doc = frappe.get_doc({