fix: profile, dashboard and tests

This commit is contained in:
Jannat Patel
2022-09-05 13:32:51 +05:30
parent 7ef625c598
commit e84e02ff07
8 changed files with 68 additions and 46 deletions

View File

@@ -6,10 +6,6 @@ import unittest
from lms.lms.doctype.lms_course.test_lms_course import new_course from lms.lms.doctype.lms_course.test_lms_course import new_course
class TestExercise(unittest.TestCase): class TestExercise(unittest.TestCase):
def setUp(self):
frappe.db.sql('delete from `tabLMS Batch Membership`')
frappe.db.sql('delete from `tabExercise Submission`')
frappe.db.sql('delete from `tabExercise`')
def new_exercise(self): def new_exercise(self):
course = new_course("Test Course") course = new_course("Test Course")
@@ -47,3 +43,8 @@ class TestExercise(unittest.TestCase):
user_submission = e.get_user_submission() user_submission = e.get_user_submission()
assert user_submission is not None assert user_submission is not None
assert user_submission.name == submission.name assert user_submission.name == submission.name
def tearDown(self):
frappe.db.sql('delete from `tabLMS Batch Membership`')
frappe.db.sql('delete from `tabExercise Submission`')
frappe.db.sql('delete from `tabExercise`')

View File

@@ -7,13 +7,16 @@ import frappe
from .lms_course import LMSCourse from .lms_course import LMSCourse
import unittest import unittest
class TestLMSCourse(unittest.TestCase): class TestLMSCourse(unittest.TestCase):
def test_new_course(self): def test_new_course(self):
course = new_course("Test Course") course = new_course("Test Course")
assert course.title == "Test Course" assert course.title == "Test Course"
assert course.name == "test-course" assert course.name == "test-course"
# disabled this test as it is failing # disabled this test as it is failing
def _test_add_mentors(self): def _test_add_mentors(self):
course = new_course("Test Course") course = new_course("Test Course")
@@ -26,10 +29,23 @@ class TestLMSCourse(unittest.TestCase):
mentors_data = [dict(email=mentor.email, batch_count=mentor.batch_count) for mentor in mentors] mentors_data = [dict(email=mentor.email, batch_count=mentor.batch_count) for mentor in mentors]
assert mentors_data == [{"email": "tester@example.com", "batch_count": 0}] assert mentors_data == [{"email": "tester@example.com", "batch_count": 0}]
def tearDown(self): def tearDown(self):
if frappe.db.exists("User", "tester@example.com"): if frappe.db.exists("User", "tester@example.com"):
frappe.delete_doc("User", "tester@example.com") frappe.delete_doc("User", "tester@example.com")
if frappe.db.exists("LMS Course", "test-course"):
frappe.db.delete("Exercise Submission", {"course": "test-course"})
frappe.db.delete("Exercise Latest Submission", {"course": "test-course"})
frappe.db.delete("Exercise", {"course": "test-course"})
frappe.db.delete("LMS Batch Membership", {"course": "test-course"})
frappe.db.delete("LMS Batch", {"course": "test-course"})
frappe.db.delete("LMS Course Mentor Mapping", {"course": "test-course"})
frappe.db.delete("Course Instructor", {"parent": "test-course"})
frappe.db.sql('delete from `tabCourse Instructor`')
frappe.delete_doc("LMS Course", "test-course")
def new_user(name, email): def new_user(name, email):
user = frappe.db.exists("User", email) user = frappe.db.exists("User", email)
if user: if user:
@@ -46,6 +62,7 @@ def new_user(name, email):
doc.insert() doc.insert()
return doc return doc
def new_course(title, additional_filters=None): def new_course(title, additional_filters=None):
course = frappe.db.exists("LMS Course", { "title": title }) course = frappe.db.exists("LMS Course", { "title": title })
if course: if course:
@@ -66,6 +83,7 @@ def new_course(title, additional_filters=None):
doc.insert(ignore_permissions=True) doc.insert(ignore_permissions=True)
return doc return doc
def create_evaluator(): def create_evaluator():
if not frappe.db.exists("Course Evaluator", "evaluator@example.com"): if not frappe.db.exists("Course Evaluator", "evaluator@example.com"):
new_user("Evaluator", "evaluator@example.com") new_user("Evaluator", "evaluator@example.com")

View File

@@ -18,11 +18,11 @@
"docstatus": 0, "docstatus": 0,
"doctype": "Web Form", "doctype": "Web Form",
"idx": 0, "idx": 0,
"is_multi_step_form": 0,
"is_standard": 1, "is_standard": 1,
"list_columns": [],
"login_required": 1, "login_required": 1,
"max_attachment_size": 0, "max_attachment_size": 0,
"modified": "2022-06-24 19:08:29.197279", "modified": "2022-09-05 13:08:40.071348",
"modified_by": "Administrator", "modified_by": "Administrator",
"module": "LMS", "module": "LMS",
"name": "profile", "name": "profile",
@@ -30,11 +30,9 @@
"payment_button_label": "Buy Now", "payment_button_label": "Buy Now",
"published": 1, "published": 1,
"route": "edit-profile", "route": "edit-profile",
"route_to_success_link": 0,
"show_attachments": 0, "show_attachments": 0,
"show_in_grid": 0, "show_list": 0,
"show_sidebar": 0, "show_sidebar": 0,
"sidebar_items": [],
"success_url": "/profile", "success_url": "/profile",
"title": "Profile", "title": "Profile",
"web_form_fields": [ "web_form_fields": [
@@ -50,18 +48,6 @@
"reqd": 1, "reqd": 1,
"show_in_filter": 0 "show_in_filter": 0
}, },
{
"allow_read_on_all_link_options": 0,
"fieldname": "middle_name",
"fieldtype": "Data",
"hidden": 0,
"label": "Middle Name (Optional)",
"max_length": 0,
"max_value": 0,
"read_only": 0,
"reqd": 0,
"show_in_filter": 0
},
{ {
"allow_read_on_all_link_options": 0, "allow_read_on_all_link_options": 0,
"fieldname": "last_name", "fieldname": "last_name",

View File

@@ -167,7 +167,8 @@ def get_authored_courses(member=None, only_published=True):
for course in courses: for course in courses:
detail = frappe.db.get_value("LMS Course", course.parent, detail = frappe.db.get_value("LMS Course", course.parent,
["name", "upcoming", "title", "image", "enable_certification", "status", "published"], as_dict=True) ["name", "upcoming", "title", "image", "enable_certification", "status", "published"], as_dict=True)
if only_published and not detail.published:
if only_published and detail and not detail.published:
continue continue
course_details.append(detail) course_details.append(detail)

View File

@@ -44,32 +44,32 @@ input[type=checkbox] {
} }
.course-image .course-tags { .course-image .course-tags {
width: 95%; width: fit-content;
} }
.course-card-pills { .course-card-pills {
background: #ffffff; background: #ffffff;
margin-left: 0; margin-left: 0;
margin-right: 1rem; margin-right: 1rem;
border-radius: var(--border-radius); border-radius: var(--border-radius);
padding: 3.5px 8px; padding: 3.5px 8px;
font-size: 11px; font-size: 11px;
text-align: center; text-align: center;
letter-spacing: 0.011em; letter-spacing: 0.011em;
text-transform: uppercase; text-transform: uppercase;
font-weight: 600; font-weight: 600;
color: var(--gray-900); color: var(--gray-900);
width: fit-content; width: fit-content;
box-shadow: var(--shadow-sm); box-shadow: var(--shadow-sm);
} }
.dark-pills { .dark-pills {
background: rgba(25, 39, 52, 0.8); background: rgba(25, 39, 52, 0.8);
color: #ffffff; color: #ffffff;
} }
.dark-pills img { .dark-pills img {
width: 0.75rem; width: 0.75rem;
height: 0.75rem; height: 0.75rem;
} }
.common-page-style { .common-page-style {
@@ -903,7 +903,7 @@ pre {
.empty-state { .empty-state {
background: var(--gray-200); background: var(--gray-200);
border-radius: var(--border-radius-lg); border-radius: var(--border-radius-lg);
padding: 2rem; padding: 1.25rem;
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
align-items: center; align-items: center;
@@ -911,7 +911,6 @@ pre {
.empty-state-text { .empty-state-text {
flex: 1; flex: 1;
margin-left: 1.25rem;
text-align: center; text-align: center;
} }
@@ -1667,3 +1666,14 @@ li {
color: var(--text-color); color: var(--text-color);
cursor: pointer; cursor: pointer;
} }
.course-creation-link {
float: right;
}
@media (max-width: 500px) {
.course-creation-link {
float: inherit;
margin-bottom: 1rem;
}
}

View File

@@ -5,14 +5,12 @@
{% block content %} {% block content %}
{% set portal_course_creation = frappe.db.get_single_value("LMS Settings", "portal_course_creation") %}
{% set show_creators_section = portal_course_creation == "Anyone" or has_course_instructor_role() %}
{{ frappe.session.user }} {{ frappe.session.user }}
<div class="common-page-style dashboard"> <div class="common-page-style dashboard">
<div class="container"> <div class="container">
{% if show_creators_section %} {% if show_creators_section %}
<a class="btn btn-secondary btn-sm pull-right" id="create-course-link" href="/courses/new-course"> <a class="btn btn-secondary btn-sm course-creation-link" id="create-course-link" href="/courses/new-course">
{{ _("Create a Course") }} {{ _("Create a Course") }}
</a> </a>
{% endif %} {% endif %}

View File

@@ -0,0 +1,8 @@
import frappe
from lms.lms.utils import has_course_instructor_role
def get_content(context):
context.no_cache = 1
portal_course_creation = frappe.db.get_single_value("LMS Settings", "portal_course_creation")
context.show_creators_section = portal_course_creation == "Anyone" or has_course_instructor_role()

View File

@@ -58,7 +58,7 @@
{% if frappe.session.user == member.email %} {% if frappe.session.user == member.email %}
<div class="ml-auto mt-1"> <div class="ml-auto mt-1">
<a class="btn btn-secondary btn-sm" href="/dashboard"> {{ _("Visit Dashboard") }} </a> <a class="btn btn-secondary btn-sm" href="/dashboard"> {{ _("Visit Dashboard") }} </a>
<a class="btn btn-secondary btn-sm ml-2" href="/edit-profile?name={{ member.email }}"> {{ _("Edit Profile") }} </a> <a class="btn btn-secondary btn-sm ml-2" href="/edit-profile/{{ member.email }}"> {{ _("Edit Profile") }} </a>
</div> </div>
{% endif %} {% endif %}
</div> </div>