fix: discussion tab when there are no messages
- fixed the issue of not showing discussion tab when there are no messages - fixed the error when the course page is visited by a guest user
This commit is contained in:
@@ -27,7 +27,7 @@
|
|||||||
<a class="nav-link active" id="home-tab" data-toggle="tab" href="#home" role="tab" aria-controls="home"
|
<a class="nav-link active" id="home-tab" data-toggle="tab" href="#home" role="tab" aria-controls="home"
|
||||||
aria-selected="true">Course Details</a>
|
aria-selected="true">Course Details</a>
|
||||||
</li>
|
</li>
|
||||||
{% if discussions %}
|
{% if current_batch %}
|
||||||
<li class="nav-item">
|
<li class="nav-item">
|
||||||
<a class="nav-link" id="discussions-tab" data-toggle="tab" href="#discussions" role="tab"
|
<a class="nav-link" id="discussions-tab" data-toggle="tab" href="#discussions" role="tab"
|
||||||
aria-controls="discussions" aria-selected="false">Discussions</a>
|
aria-controls="discussions" aria-selected="false">Discussions</a>
|
||||||
|
|||||||
@@ -1,81 +1,87 @@
|
|||||||
import frappe
|
import frappe
|
||||||
|
|
||||||
def get_context(context):
|
def get_context(context):
|
||||||
context.no_cache = 1
|
context.no_cache = 1
|
||||||
try:
|
try:
|
||||||
course_id = frappe.form_dict['course']
|
course_id = frappe.form_dict['course']
|
||||||
except KeyError:
|
except KeyError:
|
||||||
frappe.local.flags.redirect_location = '/courses'
|
frappe.local.flags.redirect_location = '/courses'
|
||||||
raise frappe.Redirect
|
raise frappe.Redirect
|
||||||
context.course = get_course(course_id)
|
context.course = get_course(course_id)
|
||||||
#context.course_enrolled = has_enrolled(course_id)
|
#context.course_enrolled = has_enrolled(course_id)
|
||||||
context.discussions, context.memberships = get_discussions(course_id)
|
context.discussions, context.memberships = get_discussions(course_id)
|
||||||
context.member_type = context.memberships[0].member_type
|
if context.memberships:
|
||||||
if context.member_type != "Student":
|
context.member_type = context.memberships[0].member_type
|
||||||
context.batches = [membership.batch for membership in context.memberships]
|
if context.member_type != "Student":
|
||||||
context.current_batch = context.memberships[0].batch
|
context.batches = [membership.batch for membership in context.memberships]
|
||||||
context.author = context.memberships[0].member
|
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
|
||||||
|
|
||||||
def get_course(slug):
|
def get_course(slug):
|
||||||
course = frappe.db.get_value('LMS Course', {"slug": slug},
|
course = frappe.db.get_value('LMS Course', {"slug": slug},
|
||||||
['name', 'slug', 'title', 'description'], as_dict=1)
|
['name', 'slug', 'title', 'description'], as_dict=1)
|
||||||
|
|
||||||
course['topics'] = frappe.db.get_all('LMS Topic',
|
course['topics'] = frappe.db.get_all('LMS Topic',
|
||||||
filters={
|
filters={
|
||||||
'course': course['name']
|
'course': course['name']
|
||||||
},
|
},
|
||||||
fields=['name', 'slug', 'title', 'preview'],
|
fields=['name', 'slug', 'title', 'preview'],
|
||||||
order_by='creation'
|
order_by='creation'
|
||||||
)
|
)
|
||||||
return course
|
return course
|
||||||
|
|
||||||
def get_discussions(slug):
|
def get_discussions(slug):
|
||||||
memberships = get_membership(slug)
|
memberships = get_membership(slug)
|
||||||
messages = get_messages(memberships[0].batch)
|
messages = get_messages(memberships[0].batch)
|
||||||
return messages, memberships
|
return messages, memberships
|
||||||
|
|
||||||
def get_membership(slug):
|
def get_membership(slug):
|
||||||
memberships = []
|
memberships = []
|
||||||
course = frappe.db.get_value("LMS Course", {"slug": slug}, "name")
|
course = frappe.db.get_value("LMS Course", {"slug": slug}, "name")
|
||||||
member = frappe.db.get_value("Community Member", {"email": frappe.session.user}, "name")
|
member = frappe.db.get_value("Community Member", {"email": frappe.session.user}, "name")
|
||||||
batches = frappe.get_all("LMS Batch", {"course": course}, ["name"])
|
batches = frappe.get_all("LMS Batch", {"course": course}, ["name"])
|
||||||
for batch in batches:
|
for batch in batches:
|
||||||
membership = frappe.db.get_value("LMS Batch Membership", {"member": member, "batch": batch.name}, ["batch", "member", "member_type"], as_dict=1)
|
membership = frappe.db.get_value("LMS Batch Membership", {"member": member, "batch": batch.name}, ["batch", "member", "member_type"], as_dict=1)
|
||||||
if membership:
|
if membership:
|
||||||
memberships.append(membership)
|
memberships.append(membership)
|
||||||
return memberships
|
return memberships
|
||||||
|
|
||||||
@frappe.whitelist()
|
@frappe.whitelist()
|
||||||
def get_messages(batch):
|
def get_messages(batch):
|
||||||
messages = frappe.get_all("LMS Message", {"batch": batch}, ["*"], order_by="creation desc")
|
messages = frappe.get_all("LMS Message", {"batch": batch}, ["*"], order_by="creation desc")
|
||||||
for message in messages:
|
for message in messages:
|
||||||
message.message = frappe.utils.md_to_html(message.message)
|
message.message = frappe.utils.md_to_html(message.message)
|
||||||
message.creation = frappe.utils.format_datetime(message.creation, "medium")
|
message.creation = frappe.utils.format_datetime(message.creation, "medium")
|
||||||
member_email = frappe.db.get_value("Community Member", message.author, "email")
|
member_email = frappe.db.get_value("Community Member", message.author, "email")
|
||||||
if member_email == frappe.session.user:
|
if member_email == frappe.session.user:
|
||||||
message.author = "You"
|
message.author = "You"
|
||||||
return messages
|
return messages
|
||||||
|
|
||||||
@frappe.whitelist()
|
@frappe.whitelist()
|
||||||
def has_enrolled(course):
|
def has_enrolled(course):
|
||||||
return frappe.db.get_value("LMS Course Enrollment", {"course": course, "owner": frappe.session.user})
|
return frappe.db.get_value("LMS Course Enrollment", {"course": course, "owner": frappe.session.user})
|
||||||
|
|
||||||
@frappe.whitelist()
|
@frappe.whitelist()
|
||||||
def enroll(course):
|
def enroll(course):
|
||||||
return frappe.get_doc({
|
return frappe.get_doc({
|
||||||
"doctype": "LMS Course Enrollment",
|
"doctype": "LMS Course Enrollment",
|
||||||
"course": course,
|
"course": course,
|
||||||
"user": frappe.session.user
|
"user": frappe.session.user
|
||||||
}).save()
|
}).save()
|
||||||
|
|
||||||
@frappe.whitelist()
|
@frappe.whitelist()
|
||||||
def save_message(message, author, batch):
|
def save_message(message, author, batch):
|
||||||
doc = frappe.get_doc({
|
doc = frappe.get_doc({
|
||||||
"doctype": "LMS Message",
|
"doctype": "LMS Message",
|
||||||
"author": author,
|
"author": author,
|
||||||
"batch": batch,
|
"batch": batch,
|
||||||
"message": message
|
"message": message
|
||||||
})
|
})
|
||||||
doc.save(ignore_permissions=True)
|
doc.save(ignore_permissions=True)
|
||||||
return doc
|
return doc
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user