fix: batch switch with query parameters

This commit is contained in:
pateljannat
2021-06-22 10:11:21 +05:30
parent eb435261fe
commit 3384f974e5
17 changed files with 83 additions and 114 deletions

View File

@@ -51,7 +51,8 @@ frappe.ready(() => {
frappe.call({
"method": "community.lms.doctype.lms_batch_membership.lms_batch_membership.create_membership",
"args": {
"batch": "{{ batch.name }}"
"batch": {{ batch.name }},
"course": {{ batch.course }}
},
"callback": (data) => {
if (data.message == "OK") {
@@ -66,20 +67,6 @@ frappe.ready(() => {
}
})
})
$("#batch-home").click((e) => {
frappe.call({
method: "community.lms.doctype.lms_batch_membership.lms_batch_membership.update_current_membership",
args: {
"batch": "{{ batch.name }}",
"course": "{{ batch.course}}",
"member": frappe.session.user
},
callback: (data) => {
window.location.href = "/courses/{{ batch.course }}/home"
}
})
})
})
</script>
{% endblock %}

View File

@@ -65,9 +65,9 @@
{{ ext.render_footer() }}
{% endfor %}
<script>
var membership = {{ membership }};
var membership = "{{ membership.name }}";
var is_mentor = {{ course.is_mentor(frappe.session.user) }};
console.log(is_mentor)
console.log(membership)
if (membership && !is_mentor) {
frappe.call({
method: "community.lms.doctype.lesson.lesson.save_progress",
@@ -78,9 +78,12 @@
})
}
if (membership) {
frappe.call("community.lms.api.save_current_lesson", {
"course_name": "{{ course.name }}",
"lesson_name": "{{ lesson.name }}"
frappe.call({
method: "community.lms.api.save_current_lesson",
args: {
"course_name": "{{ course.name }}",
"lesson_name": "{{ lesson.name }}"
}
})
}
</script>

View File

@@ -18,7 +18,7 @@ def get_context(context):
index_ = get_lesson_index(context.course, context.batch, frappe.session.user) or "1.1"
else:
index_ = "1.1"
frappe.local.flags.redirect_location = context.course.get_learn_url(index_)
frappe.local.flags.redirect_location = context.course.get_learn_url(index_) + context.course.query_parameter
raise frappe.Redirect
context.lesson = context.course.get_lesson(chapter_index, lesson_index)
@@ -30,8 +30,8 @@ def get_context(context):
next_ = outline.get_next(lesson_number)
context.prev_chap = get_chapter_title(course_name, prev_)
context.next_chap = get_chapter_title(course_name, next_)
context.next_url = context.course.get_learn_url(next_)
context.prev_url = context.course.get_learn_url(prev_)
context.next_url = context.course.get_learn_url(next_) + context.course.query_parameter
context.prev_url = context.course.get_learn_url(prev_) + context.course.query_parameter
context.page_extensions = get_page_extensions()

View File

@@ -24,7 +24,7 @@
{% block content %}
<div class="container">
{{ widgets.BatchTabs(course=course, batch=batch) }}
{{ widgets.BatchTabs(course=course, membership=membership) }}
<div class="mentor-dashboard">
<h3>Batch Progress</h3>
{% for exercise in report.exercises %}

View File

@@ -17,7 +17,7 @@ def get_context(context):
class BatchReport:
def __init__(self, course, batch):
self.submissions = get_submissions(batch)
self.submissions = get_submissions(course, batch)
self.exercises = self.get_exercises(course.name)
self.submissions_by_exercise = defaultdict(list)
for s in self.submissions:
@@ -29,8 +29,10 @@ class BatchReport:
def get_submissions_of_exercise(self, exercise_name):
return self.submissions_by_exercise[exercise_name]
def get_submissions(batch):
students = batch.get_students()
def get_submissions(course, batch):
students = course.get_students(batch.name)
if not len(students):
return []
students_map = {s.email: s for s in students}
names, values = nparams("s", students_map.keys())
sql = """

View File

@@ -5,14 +5,18 @@ def get_common_context(context):
context.no_cache = 1
course_name = frappe.form_dict["course"]
try:
batch_name = frappe.form_dict["batch"]
except KeyError:
batch_name = None
course = Course.find(course_name)
if not course:
context.template = "www/404.html"
return
context.course = course
membership = course.get_current_membership(frappe.session.user)
membership = course.get_membership(frappe.session.user, batch_name)
if membership:
context.membership = membership
batch = course.get_batch(membership.batch)
@@ -22,14 +26,13 @@ def get_common_context(context):
context.members = course.get_mentors(membership.batch) + course.get_students(membership.batch)
context.member_count = len(context.members)
context.course = course
context.course.query_parameter = "?batch=" + batch.name if batch else ""
print(context.membership)
context.livecode_url = get_livecode_url()
def get_livecode_url():
return frappe.db.get_single_value("LMS Settings", "livecode_url")
def redirect_to_lesson(course, index_="1.1"):
frappe.local.flags.redirect_location = course.get_learn_url(index_)
frappe.local.flags.redirect_location = course.get_learn_url(index_) + course.query_parameter
raise frappe.Redirect

View File

@@ -14,9 +14,11 @@
</div>
<div class="d-flex justify-content-between align-items-end">
<h2 id="course-title" data-course="{{course.name}}">{{course.title}}</h2>
{% if not course.disable_self_learning and not course.is_mentor(frappe.session.user) %}
<div>
<button class="btn btn-primary join-batch" data-course="{{ course.name | urlencode }}"> Join the Course</button>
<button class="btn btn-primary join-batch" data-course="{{ course.name | urlencode }}"> Start Learning </button>
</div>
{% endif %}
</div>
<div class="course-short-intro">{{ course.short_introduction }}</div>
</div>

View File

@@ -75,21 +75,4 @@ frappe.ready(() => {
}
})
})
$(".manage-batch").click((e) => {
e.preventDefault();
var batch = decodeURIComponent($(e.currentTarget).attr("data-batch"));
var course = decodeURIComponent($(e.currentTarget).attr("data-course"));
frappe.call({
method: "community.lms.doctype.lms_batch_membership.lms_batch_membership.update_current_membership",
args: {
batch: batch,
course: course,
member: frappe.session.user
},
callback: (data) => {
window.location.href = `/courses/${course}/home`;
}
})
})
})

View File

@@ -16,9 +16,8 @@ def get_context(context):
raise frappe.Redirect
context.course = course
batch = course.get_student_batch(frappe.session.user)
if batch:
frappe.local.flags.redirect_location = f"/courses/{course.name}/learn"
raise frappe.Redirect
if not course.is_mentor(frappe.session.user):
batch = course.get_membership(frappe.session.user)
if batch:
frappe.local.flags.redirect_location = f"/courses/{course.name}/learn"
raise frappe.Redirect