refactor: moved community member class functions to user override

This commit is contained in:
pateljannat
2021-05-21 16:22:59 +05:30
parent 63d00a46c4
commit 637c795321
13 changed files with 31 additions and 29 deletions

View File

@@ -7,7 +7,7 @@
{% else %}
<span class="avatar-frame standard-image" title="{{ member.full_name }}"
style="background-color: var({{color[0]}}); color: var({{color[1]}});">
{{ member.abbr }}
{{ frappe.utils.get_abbr(member.full_name) }}
</span>
{% endif %}
</a>

View File

@@ -42,13 +42,10 @@ class LMSBatch(Document):
If member_type is specified, checks if the person is a Student/Mentor.
"""
member = find("Community Member", email=email)
if not member:
return
filters = {
"batch": self.name,
"member": member.name
"member": email
}
if member_type:
filters['member_type'] = member_type
@@ -63,8 +60,8 @@ class LMSBatch(Document):
["member"])
member_names = [m['member'] for m in memberships]
members = frappe.get_all(
"Community Member",
{"name": ["IN", member_names]},
"Users",
{"email": ["IN", member_names]},
["email", "full_name", "username"])
return members

View File

@@ -29,13 +29,11 @@ class LMSBatchMembership(Document):
frappe.throw(_("{0} is already a {1} of {2} course through {3} batch").format(member_name, membership.member_type, course, membership.batch))
def create_membership(batch, member=None, member_type="Student", role="Member"):
if not member:
member = frappe.db.get_value("Community Member", {"email": frappe.session.user}, "name")
frappe.get_doc({
"doctype": "LMS Batch Membership",
"batch": batch,
"role": role,
"member_type": member_type,
"member": member
"member": member or frappe.session.user
}).save(ignore_permissions=True)
return "OK"

View File

@@ -31,3 +31,12 @@ class CustomUser(User):
idx = cint((int(hash_name[4:6], 16) + 1) / 5.33)
return palette[idx % 8]
def get_batch_count(self) -> int:
"""Returns the number of batches authored by this user.
"""
return frappe.db.count(
'LMS Batch Membership', {
'member': self.name,
'member_type': 'Mentor'
})

View File

@@ -3,3 +3,4 @@ community.patches.change_name_for_community_members
community.patches.save_abbr_for_community_members
community.patches.create_mentor_request_email_templates
community.patches.replace_member_with_user_in_batch_membership
community.patches.replace_member_with_user_in_course_mentor_mapping

View File

@@ -1,6 +1,5 @@
from __future__ import unicode_literals
import frappe
from frappe import _
def execute():
frappe.reload_doc("lms", "doctype", "lms_batch_membership")

View File

@@ -0,0 +1,9 @@
from __future__ import unicode_literals
import frappe
def execute():
frappe.reload_doc("lms", "doctype", "lms_course_mentor_mapping")
mappings = frappe.get_all("LMS Course Mentor Mapping", ["mentor", "name"])
for mapping in mappings:
email = frappe.db.get_value("Community Member", mapping.mentor, "email")
frappe.db.set_value("LMS Course Mentor Mapping", mapping.name, "mentor", email)

View File

@@ -18,7 +18,7 @@ def get_context(context):
context.lesson = context.course.get_lesson(chapter_index, lesson_index)
context.lesson_index = lesson_index
context.chapter_index = chapter_index
print(context.lesson)
outline = context.course.get_outline()
next_ = outline.get_next(lesson_number)
prev_ = outline.get_prev(lesson_number)

View File

@@ -25,7 +25,7 @@
{% for member in members %}
<div class="d-flex align-items-center">
<div>
{{ Profile(member.photo, member.full_name, member.abbr, "small") }}
{{ widgets.Avatar(member=member, avatar_class="avatar-medium") }} <a href="/{{member.username}}">{{ member.full_name }}</a>
</div>
<div class="mr-5">
{{member.full_name}}

View File

@@ -91,7 +91,7 @@
<section>
<div class="dashboard__parent">
<div>
{{ Profile(member.photo, member.full_name, member.abbr, "large")}}
{{ widgets.Avatar(member=member, avatar_class="avatar-medium") }} <a href="/{{member.username}}">{{ member.full_name }}</a>
</div>
<div class="dashboard__details">
<div class="dashboard__name">
@@ -125,7 +125,7 @@
</div>
<div class="d-flex align-items-center w-100">
<div>
{{ Profile(message.profile, message.full_name, message.abbr, "small")}}
{{ widgets.Avatar(member=member, avatar_class="avatar-medium") }} <a href="/{{member.username}}">{{ member.full_name }}</a>
</div>
<div class="ml-5 mt-5">{{ frappe.utils.md_to_html(message.message) }}</div>
</div>
@@ -209,4 +209,4 @@
</div>
</section>
{% endblock %}
{% endblock %}

View File

@@ -7,7 +7,7 @@ def get_context(context):
if frappe.session.user == "Guest":
frappe.local.flags.redirect_location = "/login"
raise frappe.Redirect
context.member = frappe.get_all("Community Member", {"email": frappe.session.user}, ["name", "email", "photo", "full_name", "abbr"])[0]
context.member = frappe.get_doc("User", frappe.session.user)
context.memberships = get_memberships(context.member.name)
context.courses = get_courses(context.memberships)
context.activity = get_activity(context.memberships)
@@ -38,5 +38,4 @@ def get_activity(memberships):
messages = frappe.get_all("LMS Message", {"batch": ["in", ",".join(batches)]}, ["message", "author", "creation", "batch"], order_by='creation desc')
for message in messages:
message.course = courses[message.batch]
message.profile, message.full_name, message.abbr = frappe.db.get_value("Community Member", message.author, ["photo", "full_name", "abbr"])
return messages

View File

@@ -1,10 +0,0 @@
{% macro Profile(photo, full_name, abbr, icon) %}
{% if photo %}
<img class="avatar rounded-circle img-fluid mr-5{% if icon == 'large' %} dashboard__profile {% else %} dashboard__profileSmall {% endif %}"
src="{{ photo }}" alt="{{ full_name }}">
{% else %}
<div class="standard-image mr-5 {% if icon == 'large' %} dashboard__abbr {% else %} dashboard__abbrSmall {% endif %}">
{{ abbr }}
</div>
{% endif %}
{% endmacro %}

View File

@@ -94,7 +94,7 @@
{% block page_content %}
<div class="dashboard__parent">
<div class="dashboard__photo">
{{ Profile(member.photo, member.full_name, member.abbr, "large")}}
{{ widgets.Avatar(member=member, avatar_class="avatar-medium") }} <a href="/{{member.username}}">{{ member.full_name }}</a>
</div>
<div class="dashboard__details">
<div class="dashboard__name">