fix: remove page_renderer and references
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
{% set color = member.get_palette() %}
|
{% set color = member.get_palette() %}
|
||||||
<a class="button-links" href="member.get_profile_url()">
|
<a class="button-links" href="{{ member.get_profile_url() }}">
|
||||||
<span class="avatar {{ avatar_class }}" title="{{ member.full_name }}">
|
<span class="avatar {{ avatar_class }}" title="{{ member.full_name }}">
|
||||||
{% if member.user_image %}
|
{% if member.user_image %}
|
||||||
<img class="avatar-frame standard-image" style="object-fit: cover;" src="{{ member.user_image }}" title="{{ member.full_name }}">
|
<img class="avatar-frame standard-image" style="object-fit: cover;" src="{{ member.user_image }}" title="{{ member.full_name }}">
|
||||||
|
|||||||
@@ -152,12 +152,6 @@ update_website_context = [
|
|||||||
'school.widgets.update_website_context',
|
'school.widgets.update_website_context',
|
||||||
]
|
]
|
||||||
|
|
||||||
jinja = {
|
|
||||||
"methods": [
|
|
||||||
"school.page_renderers.get_profile_url"
|
|
||||||
],
|
|
||||||
"filters": []
|
|
||||||
}
|
|
||||||
## Specify the additional tabs to be included in the user profile page.
|
## Specify the additional tabs to be included in the user profile page.
|
||||||
## Each entry must be a subclass of school.school.plugins.ProfileTab
|
## Each entry must be a subclass of school.school.plugins.ProfileTab
|
||||||
# profile_tabs = []
|
# profile_tabs = []
|
||||||
@@ -179,11 +173,5 @@ school_markdown_macro_renderers = {
|
|||||||
"Video": "school.plugins.video_renderer"
|
"Video": "school.plugins.video_renderer"
|
||||||
}
|
}
|
||||||
|
|
||||||
# page_renderer to manage profile pages
|
|
||||||
#page_renderer = [
|
|
||||||
# "school.page_renderers.ProfileRedirectPage",
|
|
||||||
# "school.page_renderers.ProfilePage"
|
|
||||||
#]
|
|
||||||
|
|
||||||
# set this to "/" to have profiles on the top-level
|
# set this to "/" to have profiles on the top-level
|
||||||
profile_url_prefix = "/users/"
|
profile_url_prefix = "/users/"
|
||||||
|
|||||||
@@ -44,7 +44,7 @@
|
|||||||
{% set instructor = course.get_instructor() %}
|
{% set instructor = course.get_instructor() %}
|
||||||
<span class="zindex">
|
<span class="zindex">
|
||||||
{{ widgets.Avatar(member=instructor, avatar_class="avatar-small") }}
|
{{ widgets.Avatar(member=instructor, avatar_class="avatar-small") }}
|
||||||
<a class="button-links" href="instructor.get_profile_url()">
|
<a class="button-links" href="{{ instructor.get_profile_url() }}">
|
||||||
<span class="course-instructor">
|
<span class="course-instructor">
|
||||||
{{ instructor.full_name }}
|
{{ instructor.full_name }}
|
||||||
</span>
|
</span>
|
||||||
|
|||||||
@@ -12,7 +12,7 @@
|
|||||||
{% endif %}
|
{% endif %}
|
||||||
<div class="course-author">
|
<div class="course-author">
|
||||||
{% with author = course.get_instructor() %}
|
{% with author = course.get_instructor() %}
|
||||||
{{ widgets.Avatar(member=author, avatar_class="avatar-medium") }} <a href="{{author.get_profile_url(author.username)}}">{{ author.full_name }}</a>
|
{{ widgets.Avatar(member=author, avatar_class="avatar-medium") }} <a href="{{author.get_profile_url()}}">{{ author.full_name }}</a>
|
||||||
{% endwith %}
|
{% endwith %}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -11,5 +11,5 @@
|
|||||||
Created {{ course_count }} {{ suffix }}
|
Created {{ course_count }} {{ suffix }}
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<a class="stretched-link" href="{{ member.get_profile_url(member.username) }}"></a>
|
<a class="stretched-link" href="{{ member.get_profile_url() }}"></a>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -18,7 +18,7 @@
|
|||||||
<div class="review-card-footer">
|
<div class="review-card-footer">
|
||||||
<div>
|
<div>
|
||||||
{{ widgets.Avatar(member=review.owner_details, avatar_class="avatar-medium") }}
|
{{ widgets.Avatar(member=review.owner_details, avatar_class="avatar-medium") }}
|
||||||
<a class="button-links" href="{{review.owner_details.get_profile_url(review.owner_details.username) }}">
|
<a class="button-links" href="{{review.owner_details.get_profile_url() }}">
|
||||||
<span class="course-instructor">
|
<span class="course-instructor">
|
||||||
{{ review.owner_details.full_name }}
|
{{ review.owner_details.full_name }}
|
||||||
</span>
|
</span>
|
||||||
|
|||||||
@@ -5,7 +5,6 @@ import hashlib
|
|||||||
import random
|
import random
|
||||||
import re
|
import re
|
||||||
from frappe import _
|
from frappe import _
|
||||||
from school.page_renderers import get_profile_url
|
|
||||||
|
|
||||||
class CustomUser(User):
|
class CustomUser(User):
|
||||||
|
|
||||||
@@ -147,8 +146,8 @@ class CustomUser(User):
|
|||||||
}
|
}
|
||||||
|
|
||||||
def get_profile_url(self):
|
def get_profile_url(self):
|
||||||
return get_profile_url_prefix() + self.username
|
return self.get_profile_url_prefix() + self.username
|
||||||
|
|
||||||
def get_profile_url_prefix():
|
def get_profile_url_prefix(self):
|
||||||
hooks = frappe.get_hooks("profile_url_prefix") or ["/users/"]
|
hooks = frappe.get_hooks("profile_url_prefix") or ["/users/"]
|
||||||
return hooks[-1]
|
return hooks[-1]
|
||||||
|
|||||||
@@ -1,104 +0,0 @@
|
|||||||
"""Custom page renderers for School app.
|
|
||||||
|
|
||||||
Handles rendering of profile pages.
|
|
||||||
"""
|
|
||||||
import re
|
|
||||||
import frappe
|
|
||||||
from frappe.website.page_renderers.base_renderer import BaseRenderer
|
|
||||||
from frappe.website.page_renderers.template_page import TemplatePage
|
|
||||||
|
|
||||||
from frappe.website.page_renderers.document_page import DocumentPage
|
|
||||||
from frappe.website.page_renderers.list_page import ListPage
|
|
||||||
from frappe.website.page_renderers.not_found_page import NotFoundPage
|
|
||||||
from frappe.website.page_renderers.print_page import PrintPage
|
|
||||||
from frappe.website.page_renderers.redirect_page import RedirectPage
|
|
||||||
from frappe.website.page_renderers.static_page import StaticPage
|
|
||||||
from frappe.website.page_renderers.template_page import TemplatePage
|
|
||||||
from frappe.website.page_renderers.web_form import WebFormPage
|
|
||||||
|
|
||||||
|
|
||||||
def get_profile_url(username):
|
|
||||||
"""Returns the profile URL given username.
|
|
||||||
|
|
||||||
The default URL prefix for profiles is /users, but tha can be customized.
|
|
||||||
|
|
||||||
This functions looks at the current value from the config and generates
|
|
||||||
the URL for the profile.
|
|
||||||
"""
|
|
||||||
return get_profile_url_prefix() + username
|
|
||||||
|
|
||||||
def get_profile_url_prefix():
|
|
||||||
hooks = frappe.get_hooks("profile_url_prefix") or ["/users/"]
|
|
||||||
return hooks[-1]
|
|
||||||
|
|
||||||
RE_INVALID_USERNAME = re.compile("[@!#$%^&*()<>?/\\|}{~:-]")
|
|
||||||
|
|
||||||
class ProfileRedirectPage(BaseRenderer):
|
|
||||||
"""Renderer to redirect /profile_/foo to <profile_prefix>/foo.
|
|
||||||
|
|
||||||
This is useful to redirect to profile pages from javascript as there is no
|
|
||||||
easy to find the profile prefix.
|
|
||||||
"""
|
|
||||||
def can_render(self):
|
|
||||||
return self.path.startswith("profile_/")
|
|
||||||
|
|
||||||
def render(self):
|
|
||||||
username = self.path[len("profile_/"):]
|
|
||||||
frappe.flags.redirect_location = get_profile_url_prefix() + username
|
|
||||||
return RedirectPage(self.path).render()
|
|
||||||
|
|
||||||
class ProfilePage(BaseRenderer):
|
|
||||||
def __init__(self, path, http_status_code):
|
|
||||||
super().__init__(path, http_status_code)
|
|
||||||
self.renderer = None
|
|
||||||
|
|
||||||
def can_render(self):
|
|
||||||
if "." in self.path:
|
|
||||||
return False
|
|
||||||
|
|
||||||
# has prefix and path starts with prefix?
|
|
||||||
prefix = get_profile_url_prefix().lstrip("/")
|
|
||||||
if prefix and not self.path.startswith(prefix):
|
|
||||||
return False
|
|
||||||
|
|
||||||
# not a userpage?
|
|
||||||
username = self.get_username()
|
|
||||||
if RE_INVALID_USERNAME.search(username):
|
|
||||||
return False
|
|
||||||
# if there is prefix then we can allow all usernames
|
|
||||||
if prefix:
|
|
||||||
return True
|
|
||||||
|
|
||||||
# if we are having top-level usernames, then give preference to
|
|
||||||
# the existing website_route_rules, web pages, web forms etc.
|
|
||||||
|
|
||||||
# Don't handle any of the exsiting website_route_rules
|
|
||||||
routes = [rule['to_route'] for rule in frappe.get_hooks("website_route_rules")]
|
|
||||||
if self.path in routes:
|
|
||||||
return False
|
|
||||||
|
|
||||||
# if any of the existing renders can render, let them do
|
|
||||||
renderers = [StaticPage, WebFormPage, DocumentPage, TemplatePage, ListPage, PrintPage]
|
|
||||||
for renderer in renderers:
|
|
||||||
renderer_instance = renderer(self.path, 200)
|
|
||||||
if renderer_instance.can_render():
|
|
||||||
self.renderer = renderer_instance
|
|
||||||
return True
|
|
||||||
|
|
||||||
return True
|
|
||||||
|
|
||||||
def get_username(self):
|
|
||||||
prefix = get_profile_url_prefix().lstrip("/")
|
|
||||||
return self.path[len(prefix):]
|
|
||||||
|
|
||||||
def render(self):
|
|
||||||
if self.renderer:
|
|
||||||
return self.renderer.render()
|
|
||||||
else:
|
|
||||||
username = self.get_username()
|
|
||||||
return render_portal_page("profiles/profile", username=username)
|
|
||||||
|
|
||||||
def render_portal_page(path, **kwargs):
|
|
||||||
frappe.form_dict.update(kwargs)
|
|
||||||
page = TemplatePage(path)
|
|
||||||
return page.render()
|
|
||||||
@@ -1,5 +1,4 @@
|
|||||||
import frappe
|
import frappe
|
||||||
from school.page_renderers import get_profile_url_prefix
|
|
||||||
from urllib.parse import urlencode
|
from urllib.parse import urlencode
|
||||||
|
|
||||||
def get_context(context):
|
def get_context(context):
|
||||||
@@ -27,3 +26,7 @@ def get_profile_tabs(user):
|
|||||||
"""
|
"""
|
||||||
tabs = frappe.get_hooks("profile_tabs") or []
|
tabs = frappe.get_hooks("profile_tabs") or []
|
||||||
return [frappe.get_attr(tab)(user) for tab in tabs]
|
return [frappe.get_attr(tab)(user) for tab in tabs]
|
||||||
|
|
||||||
|
def get_profile_url_prefix():
|
||||||
|
hooks = frappe.get_hooks("profile_url_prefix") or ["/users/"]
|
||||||
|
return hooks[-1]
|
||||||
|
|||||||
Reference in New Issue
Block a user