refactor: scorm package render

This commit is contained in:
Jannat Patel
2024-12-05 23:17:49 +05:30
parent 3134ef6392
commit 2416777df2
4 changed files with 122 additions and 60 deletions

View File

@@ -3,7 +3,8 @@
Handles rendering of profile pages.
"""
import re
import os
import mimetypes
import frappe
from frappe.website.page_renderers.base_renderer import BaseRenderer
from frappe.website.page_renderers.document_page import DocumentPage
@@ -14,6 +15,8 @@ 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
from werkzeug.wrappers import Response
from werkzeug.wsgi import wrap_file
def get_profile_url(username):
@@ -138,3 +141,17 @@ class CoursePage(BaseRenderer):
else:
frappe.flags.redirect_location = "/lms/courses"
return RedirectPage(self.path).render()
class SCORMRenderer(BaseRenderer):
def can_render(self):
return "scorm/" in self.path
def render(self):
path = os.path.join(frappe.local.site_path, "public", self.path.lstrip("/"))
f = open(path, "rb")
response = Response(
wrap_file(frappe.local.request.environ, f), direct_passthrough=True
)
response.mimetype = mimetypes.guess_type(path)[0]
return response