From 841819436af6b64ddcfd7f46100e5c69284932ee Mon Sep 17 00:00:00 2001 From: pateljannat Date: Mon, 23 Aug 2021 18:22:36 +0530 Subject: [PATCH] fix: minor issues --- .../community/widgets/DiscussionMessage.html | 4 +- .../exhibitor_section/exhibitor_section.html | 17 +------ .../speaker_section/speaker_section.html | 16 +------ .../talk_section/talk_section.html | 18 +------- community/hooks.py | 44 ++----------------- .../exercise_submission.py | 7 +-- community/lms/doctype/lesson/lesson.py | 38 ---------------- community/lms/doctype/lms_batch/lms_batch.py | 8 ---- community/lms/doctype/lms_quiz/lms_quiz.py | 2 - community/lms/widgets/ChapterTeaser.html | 3 +- community/overrides/web_template.py | 15 +++++++ community/public/css/style.css | 8 ++-- community/www/batch/learn.html | 7 ++- 13 files changed, 36 insertions(+), 151 deletions(-) create mode 100644 community/overrides/web_template.py diff --git a/community/community/widgets/DiscussionMessage.html b/community/community/widgets/DiscussionMessage.html index e1dc2c5b..7e16d966 100644 --- a/community/community/widgets/DiscussionMessage.html +++ b/community/community/widgets/DiscussionMessage.html @@ -28,9 +28,9 @@ order_by="creation") %}
Want to join the discussion? {% if frappe.session.user == "Guest" %} -
Log In
+
Log In
{% elif not condition %} -
{{ button_name }}
+
{{ button_name }}
{% endif %}
{% else %} diff --git a/community/event_management/web_template/exhibitor_section/exhibitor_section.html b/community/event_management/web_template/exhibitor_section/exhibitor_section.html index c43f6d55..94fc3684 100644 --- a/community/event_management/web_template/exhibitor_section/exhibitor_section.html +++ b/community/event_management/web_template/exhibitor_section/exhibitor_section.html @@ -11,22 +11,7 @@ {% set member = frappe.get_doc("User", exhibitor_doc.user) %}
- {% set color = member.get_palette() %} - - - {% if member.user_image %} - - - {% else %} - - {{ frappe.utils.get_abbr(member.full_name) }} - - {% endif %} - - - + {{ widgets.Avatar(member=member, avatar_class="avatar-large")}}
{{ member.full_name }}
diff --git a/community/event_management/web_template/speaker_section/speaker_section.html b/community/event_management/web_template/speaker_section/speaker_section.html index 84d6b3dc..ed35418a 100644 --- a/community/event_management/web_template/speaker_section/speaker_section.html +++ b/community/event_management/web_template/speaker_section/speaker_section.html @@ -10,21 +10,7 @@ {% set member = frappe.get_doc("User", speaker_doc.user) %}
- {% set color = member.get_palette() %} - - - {% if member.user_image %} - - - {% else %} - - {{ frappe.utils.get_abbr(member.full_name) }} - - {% endif %} - - + {{ widgets.Avatar(member=member, avatar_class="avatar-large") }}
{{ member.full_name }} diff --git a/community/event_management/web_template/talk_section/talk_section.html b/community/event_management/web_template/talk_section/talk_section.html index 5a98159b..77e9f3c0 100644 --- a/community/event_management/web_template/talk_section/talk_section.html +++ b/community/event_management/web_template/talk_section/talk_section.html @@ -20,23 +20,7 @@
{{talk_doc.title}}
- - {% set color = member.get_palette() %} - - - {% if member.user_image %} - - - {% else %} - - {{ frappe.utils.get_abbr(member.full_name) }} - - {% endif %} - - - + {{ widgets.Avatar(member=member, avatar_class="avatar-small")}} {{ member.full_name }} diff --git a/community/hooks.py b/community/hooks.py index 5b2ef4c1..7bb20ad0 100644 --- a/community/hooks.py +++ b/community/hooks.py @@ -85,7 +85,8 @@ web_include_css = "community.bundle.css" # Override standard doctype classes override_doctype_class = { - "User": "community.overrides.user.CustomUser" + "User": "community.overrides.user.CustomUser", + "Web Template": "community.overrides.web_template.CustomWebTemplate" } # Document Events @@ -130,7 +131,7 @@ fixtures = ["Custom Field"] # auto_cancel_exempted_doctypes = ["Auto Repeat"] # Add all simple route rules here -primary_rules = [ +website_route_rules = [ {"from_route": "/sketches/", "to_route": "sketches/sketch"}, {"from_route": "/courses/", "to_route": "courses/course"}, {"from_route": "/courses//", "to_route": "courses/topic"}, @@ -147,46 +148,9 @@ primary_rules = [ {"from_route": "/courses//progress", "to_route": "batch/progress"}, {"from_route": "/courses//join", "to_route": "batch/join"}, {"from_route": "/discussions/", "to_route": "discussions/discussion"}, + {"from_route": "/user/", "to_route": "profiles/profile"}, ] -# Any frappe default URL is blocked by profile-rules, add it here to unblock it -whitelist = [ - "/home", - "/login", - "/update-password", - "/update-profile", - "/third-party-apps", - "/website_script.js", - "/courses", - "/sketches", - "/admin", - "/socket.io", - "/hackathons", - "/dashboard", - "/join-request", - "/add-a-new-batch", - "/new-sign-up", - "/message", - "/about", - "/edit-profile", - "/attendee-registration", - "/speaker-registration", - "/event", - "/hello", - "/exhibitor-registration", - "/discussions", - "/propose-talk", - -] -whitelist_rules = [{"from_route": p, "to_route": p[1:]} for p in whitelist] - -# regex rule to match all profiles -profile_rules = [ - {"from_route": "/", "to_route": "profiles/profile"}, -] - -website_route_rules = primary_rules + whitelist_rules + profile_rules - website_redirects = [ {"source": "/update-profile", "target": "/edit-profile"}, ] diff --git a/community/lms/doctype/exercise_submission/exercise_submission.py b/community/lms/doctype/exercise_submission/exercise_submission.py index 886de170..d588281c 100644 --- a/community/lms/doctype/exercise_submission/exercise_submission.py +++ b/community/lms/doctype/exercise_submission/exercise_submission.py @@ -3,11 +3,6 @@ import frappe from frappe.model.document import Document -from ..lesson.lesson import update_progress class ExerciseSubmission(Document): - - def after_insert(self): - course_details = frappe.get_doc("LMS Course", self.course) - if not (course_details.is_mentor(frappe.session.user) or frappe.flags.in_test): - update_progress(self.lesson) + pass diff --git a/community/lms/doctype/lesson/lesson.py b/community/lms/doctype/lesson/lesson.py index 736fa6bd..d9426524 100644 --- a/community/lms/doctype/lesson/lesson.py +++ b/community/lms/doctype/lesson/lesson.py @@ -93,41 +93,3 @@ def save_progress(lesson, course, status): }).save(ignore_permissions=True) course_details = frappe.get_doc("LMS Course", course) return course_details.get_course_progress() - -def update_progress(lesson): - user = frappe.session.user - if not all_dynamic_content_submitted(lesson, user): - return - if frappe.db.exists("LMS Course Progress", {"lesson": lesson, "owner": user}): - course_progress = frappe.get_doc("LMS Course Progress", {"lesson": lesson, "owner": user}) - course_progress.status = "Complete" - course_progress.save(ignore_permissions=True) - -def all_dynamic_content_submitted(lesson, user): - all_exercises_submitted = check_all_exercise_submission(lesson, user) - all_quiz_submitted = check_all_quiz_submitted(lesson, user) - return all_exercises_submitted and all_quiz_submitted - -def check_all_exercise_submission(lesson, user): - exercise_names = frappe.get_list("Exercise", {"lesson": lesson}, pluck="name", ignore_permissions=True) - if not len(exercise_names): - return True - query = { - "exercise": ["in", exercise_names], - "owner": user - } - if frappe.db.count("Exercise Submission", query) == len(exercise_names): - return True - return False - -def check_all_quiz_submitted(lesson, user): - quizzes = frappe.get_list("LMS Quiz", {"lesson": lesson}, pluck="name", ignore_permissions=True) - if not len(quizzes): - return True - query = { - "quiz": ["in", quizzes], - "owner": user - } - if frappe.db.count("LMS Quiz Submission", query) == len(quizzes): - return True - return False diff --git a/community/lms/doctype/lms_batch/lms_batch.py b/community/lms/doctype/lms_batch/lms_batch.py index 6b870ff4..b2f8096b 100644 --- a/community/lms/doctype/lms_batch/lms_batch.py +++ b/community/lms/doctype/lms_batch/lms_batch.py @@ -35,14 +35,6 @@ class LMSBatch(Document): filters['member_type'] = member_type return frappe.db.exists("LMS Batch Membership", filters) - def get_messages(self): - messages = frappe.get_all("LMS Message", {"batch": self.name}, ["*"], order_by="creation") - for message in messages: - message.message = frappe.utils.md_to_html(message.message) - if message.author == frappe.session.user: - message.author_name = "You" - message.is_author = True - return messages def get_membership(self, email): """Returns the membership document of given user. diff --git a/community/lms/doctype/lms_quiz/lms_quiz.py b/community/lms/doctype/lms_quiz/lms_quiz.py index b1fe65a9..dd0b4809 100644 --- a/community/lms/doctype/lms_quiz/lms_quiz.py +++ b/community/lms/doctype/lms_quiz/lms_quiz.py @@ -1,12 +1,10 @@ # Copyright (c) 2021, FOSS United and contributors # For license information, please see license.txt -from community.lms.doctype.lesson.lesson import update_progress import frappe from frappe.model.document import Document import json from frappe import _ -from ..lesson.lesson import update_progress class LMSQuiz(Document): def validate(self): diff --git a/community/lms/widgets/ChapterTeaser.html b/community/lms/widgets/ChapterTeaser.html index 99156592..8a4f6c6e 100644 --- a/community/lms/widgets/ChapterTeaser.html +++ b/community/lms/widgets/ChapterTeaser.html @@ -14,13 +14,14 @@
{% endif %} + {% set is_instructor = frappe.session.user == course.instructor %}
{% for lesson in course.get_lessons(chapter) %}
- {% if membership or lesson.include_in_preview %} + {% if membership or lesson.include_in_preview or is_instructor %} {{ lesson.title }} diff --git a/community/overrides/web_template.py b/community/overrides/web_template.py new file mode 100644 index 00000000..9f36f4f9 --- /dev/null +++ b/community/overrides/web_template.py @@ -0,0 +1,15 @@ +import frappe +from frappe.website.doctype.web_template.web_template import WebTemplate +from community.widgets import Widgets +import json + +class CustomWebTemplate(WebTemplate): + + def render(self, values=None): + if not values: + values = {} + values = frappe.parse_json(values) + values.update({"values": values}) + values.update({"widgets": Widgets()}) + template = self.get_template(self.standard) + return frappe.render_template(template, values) diff --git a/community/public/css/style.css b/community/public/css/style.css index 63bce99e..dee90122 100644 --- a/community/public/css/style.css +++ b/community/public/css/style.css @@ -630,6 +630,10 @@ input[type=checkbox] { margin-bottom: 0.75rem; } +.course-content-parent .chapter-description { + font-size: 0.7rem; +} + .chapter-icon { margin-right: .25rem; } @@ -1295,10 +1299,6 @@ pre { font-weight: bold; } -a.talk-link { - text-decoration: none; -} - .speaker-cards-parent { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); diff --git a/community/www/batch/learn.html b/community/www/batch/learn.html index 4fbb8b4c..b593bb34 100644 --- a/community/www/batch/learn.html +++ b/community/www/batch/learn.html @@ -29,8 +29,9 @@ {% endif %} {% set title = lesson.title + " - " + course.title %} + {% set condition = membership or is_instructor %} {{ widgets.DiscussionMessage(doctype="Lesson", docname=lesson.name, - title=title, condition=membership, button_name="Start Learning", + title=title, condition=condition, button_name="Start Learning", redirect_to="/courses/" + course.name) }}
@@ -46,7 +47,9 @@ COMPLETED
- {% if membership or lesson.include_in_preview %} + {% set is_instructor = frappe.session.user == course.instructor %} + + {% if membership or lesson.include_in_preview or is_instructor %}
{{ lesson.render_html() }}
{% else %}